• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 2, 文章 - 73, 評論 - 60, 引用 - 0
            數據加載中……

            開發識別屏幕方向的應用程序

            開發識別屏幕方向的應用程序
            發布日期 : 8/17/2004 | 更新日期 : 8/17/2004

            Microsoft

            適用范圍:
            Windows Mobile™ 2003 第二版軟件
            基于 Windows Mobile™ 的 Pocket PC

            摘要:了解基于 Windows Mobile 的設備如何在橫豎向模式下顯示、該功能的后臺情況、為該功能開發移動應用程序的相關信息、開發者指南中新的建議和示例。

            請從 Microsoft 下載中心下載 Crossword.msi

            本頁內容

            引言 引言
            更改屏幕方向 更改屏幕方向
            應用程序窗口如何識別屏幕方向 應用程序窗口如何識別屏幕方向
            刷新屏幕內容 刷新屏幕內容
            RelayoutDialog RelayoutDialog
            原有應用程序的特性 原有應用程序的特性
            安裝警告消息 安裝警告消息
            結論 結論

            引言

            Windows Mobile 2003 第二版軟件為 Pocket PC 引入了新的功能,使基于 Windows Mobile 的設備可在橫豎向兩種模式下顯示。在有些設備中,橫向是默認的顯示模式。此外,用戶將能在使用中讓屏幕在兩種方向之間切換,而不必重新設置設備。

            本文提供了有關該功能的后臺信息、并介紹了開發適用于橫豎向屏幕的移動應用程序的相關信息。此外,還向開發者提供了新的指南(包括一些建議和示例)供參考。

            更改屏幕方向

            通常,屏幕方向僅在用戶使用“屏幕方向”控制面板,或按下某硬件按鈕來旋轉屏幕時才改變。

            此外,應用程序也可通過 ChangeDisplaySettingsEx 函數以編程方式更改屏幕方向。該函數使用方法見 MSDN 中“Rotating the Content of the Screen”(旋轉屏幕內容的方向)一文。例如,如果使用的應用程序只能在豎向模式下操作,則可通過編程改變屏幕方向。但是,如果屏幕方向的改變很突然,通過編程改變屏幕方向會讓用戶搞不清楚。應用程序應始終要求用戶在旋轉屏幕前確認顯示模式。

            為了在豎向模式下顯示,將 dmDisplayOrientation 字段中的 DEVMODE 結構設置為 DMDO_0。對于右手橫向模式,使用 DMDO_270。對于左手橫向模式,使用 DMDO_90。

            應用程序窗口如何識別屏幕方向

            屏幕方向如果改變,或當“輸入面板”出現時,應用程序的所有全屏頂層窗口都要適應新的取向。

            注意: 如果窗口的上、左、右坐標在工作區域邊界之上或之外,該窗口被認為是全屏窗口。工作區域是標題欄下的整個屏幕區域。頂層窗口是無父窗口的窗口,即有一個 NULL 父窗口。

            如果窗口大小改變,窗口將收到 WM_SIZE 通知。WM_SIZE 消息的 lParam 參數的低位字指定了客戶端區域的新寬度,高位字指定了客戶端區域的新高度。應用程序應識別窗口大小的改變,并相應地更新窗口布局。此外,也應重新確定所包含任何子窗口的布局。

            如果應用程序沒有全屏窗口,它收不到 WM_SIZE 通知。相反,它應在 wParam 參數設置為 SETTINGCHANGE_RESET 時監聽 WM_SETTINGCHANGE消息。

            注意: 如果應用程序有頂層窗口,或使用 SHHandleWMSettingChangeSHInitDialogSHFullScreen 方法創建了窗口,它會同時收到 WM_SIZEWM_SETTINGCHANGE 消息。但是,如果應用程序創建了子窗口,子窗口收不到 WM_SIZE 消息,即使子窗口是全屏窗口。

            以下 WindowProc 模板的代碼示例利用了 WM_SIZEWM_SETTINGCHANGE 消息。

                switch (uMessage)
                {
                    case WM_SIZE:
                        // 重新計算所有子窗口的布局;重新設置
                        // 列出視圖和編輯框的大小,重新確定按鈕、
                        // 靜態文字和其他控件的位置。
                        break;
                    case WM_SETTINGCHANGE:
                        if (SETTINGCHANGE_RESET == wParam) {
                            // 屏幕方向改變。此時
                            // 執行 WM_SIZE 不能執行的處理,
            // 如重新調整全屏子窗口的大小,對
            // 頂層窗口調用 MoveWindow 等等。
            // 如果不需要處理 WM_SETTINGCHANGE 消息,可以
            // 忽略它。
                        }
                        break;
                  }
            

            刷新屏幕內容

            使用 Windows Mobile 2003 第二版軟件時,Pocket PC 的最小顯示區域是 240 個像素高和 240 個像素寬。編程人員應保證應用程序在最低配置下可用。常見問題是,菜單在豎向顯示模式下可能符合要求,但在橫向顯示模式不符合要求。如果這樣,需要在兩個菜單之間重新排列菜單項。

            刷新應用程序的屏幕內容時,可以使用下列 4 個編程選項:

            • 調整內容適應窗口大小

            • 更改內容

            • 更改布局

            • 設計所有布局通用的 240x240 正方形。

            1 顯示了各方法(調整內容適應窗口大小有兩個示例)在 Pocket PC 的 Windows Mobile 軟件中刷新屏幕內容的示例:

            表 1:豎向圖與橫向圖的屏幕刷新選項

            屏幕刷新選項

            豎向

            橫向

            調整內容適應窗口大小

            重新調整日歷網格單元的大小以適用工作區域。

             

            screen_orientation_awareness01

             

            screen_orientation_awareness02

            調整內容適應窗口大小

            “內存”設置控制面板將列表框重新設置為最大尺寸,然后重新確定它四周所有界面元素的位置。

             

            screen_orientation_awareness03

             

            screen_orientation_awareness04

            更改內容。

            “日歷”在橫向顯示模式下一次只顯示 8 個月份。

             

            screen_orientation_awareness05

             

            screen_orientation_awareness06

            更改布局。

            在橫向顯示模式下,Windows Media Player 的按鈕出現在視頻內容的一側,不是在下端。

             

            screen_orientation_awareness07

             

            screen_orientation_awareness08

            設計正方形。

            日歷“選項”對話框的整個內容在兩種取向模式下都顯示在 240x240 的正方形區域內。

             

            screen_orientation_awareness09

             

            screen_orientation_awareness10

            請記住,要盡可能的設計通用布局,這樣應用程序可處理任意尺寸和任何寬高比的顯示內容。這意味著盡可能避免分開設計橫豎向模式。如果必須設計不同的橫豎向布局模式,不要簡單地因屏幕寬度大于屏幕高度,而假設應用程序能在橫向模式下顯示。例如,設備屏幕寬可能有 321 個像素,而屏幕高有 320 個像素。在這樣的設備上,應用程序也許能以橫豎向兩種模式顯示,應選擇應用程序最適用或首選的模式,這可能是豎向模式。

            RelayoutDialog

            在 CrosswordSample 應用程序中,有一個函數是 RelayoutDialog,它可幫助重新設置、重新定位對話框中的子控件。例如,假設對話框有兩個對話模板,一個用于橫向,一個用于豎向。如果這兩個模板中的控件相同,且有相同的控件 ID,則可使用下列代碼作為 WM_SIZE 處理程序:

            case WM_SIZE:
            RelayoutDialog(g_hInst, hDlg, InWideMode() ?
            MAKEINTRESOURCE(IDD_TOOLS_OPTIONS_1_WIDE) :
            MAKEINTRESOURCE(IDD_TOOLS_OPTIONS_1));
            

            注意: 定義為 IDC_STATIC 的控件具有相同的控件 ID,所以如果有多個 IDC_STATIC控件,應當把它們重命名為 IDC_STATIC_1IDC_STATIC_2等。

            如果靜態控件在新布局中也發生了變換,RelayoutDialog 會同時更新靜態控件的文本和位圖。

            原有應用程序的特性

            當用戶在基于 Windows Mobile 2003 第二版的 Pocket PC 上運行舊應用程序時,用戶還保留了以往在豎向模式下的經驗,但豎向模式與橫向模式的經驗將有所不同。在橫向模式下,對話框的下半部分可能跑出屏幕底線之外。為了解決這個問題,系統將顯示一個垂直滾動條,允許用戶滾動屏幕。只有存在常出現于豎向屏幕底部的控件時,才出現垂直滾動條。如果不出現,則不出現滾動條。

            應用程序是否是“原有”應用程序,取決于可執行文件頭中的子系統版本。默認情況下,使用 Windows Mobile 2003 SDK 編譯的應用程序中的子系統版本號為 4.20 或更低版本號,在將來版本的 Pocket PC SDK 中子系統版本號為 4.21 或更高版本號。子系統版本號為 4.20 或低于 4.20 時被認為是舊應用程序,可以看見滾動條。

            知道了這種特性,用戶就能通過滾動條看見隱藏的圖像(假設不能直接看見的圖像和控件)。此外,您仍可以使用這種技術快速存儲或檢索圖像,但應在屏幕的左側完成這項工作。

            理想情況下,對話框不應需要滾動條。為此,最好的方法是:使對話框控件在豎向模式下不被“輸入面板”覆蓋,故最好設計 240x240 的最低分辨率。

            安裝警告消息

            當在基于 Windows Mobile 的可旋轉屏幕的 Pocket PC 上安裝了舊應用程序時,將出現以下消息,如 11 所示:

            screen_orientation_awareness11

            11 :安裝警告消息

            這個對話告訴用戶,他們要使用的應用程序程序可能無法識別正方形屏幕旋轉,因此不能在橫向模式下正確顯示。只有 VersionMin 值(它指定應用程序支持的最低操作系統版本號)低于 4.21,才顯示這個對話。

            由于將 VersionMin 設置為 4.21 將阻止把應用程序安裝在基于舊 Windows Mobile 的 Pocket PC 上,所以建議把BuildMax 值(不常用)設置為表 2 中的值,禁用此消息:

            表 2:BuildMax 值

            0xA0000000

            應用程序支持正方形屏幕(240x240 像素)。

            0xC0000000

            應用程序支持屏幕旋轉。

            0xE0000000

            應用程序支持正方形屏幕旋轉。

            這些參數可通過編輯 INF 文件的 [CEDevice] 部分(cabwiz 用來生成 CAB 文件)來更改。有關 INF 文件格式的詳細信息,請參閱 MSDN 文檔。

            結論

            開發基于 Windows Mobile 2003 第二版軟件的 Pocket PC 的應用程序,要求取消關于屏幕方向的假設。使用本文提供的簡單指南,您可以編寫安裝和運行于豎向、橫向和正方形屏幕上的應用程序。

             

            posted on 2008-01-23 11:30 郭天文 閱讀(816) 評論(0)  編輯 收藏 引用 所屬分類: Windows Mobile

            国产精品久久午夜夜伦鲁鲁| 亚洲午夜精品久久久久久浪潮| 欧美一区二区久久精品| 色欲综合久久躁天天躁| 婷婷综合久久中文字幕蜜桃三电影| 亚洲AV无码久久| 91久久精品国产成人久久| 精品久久久久久久中文字幕| 亚洲国产综合久久天堂| 久久久老熟女一区二区三区| 66精品综合久久久久久久| 亚洲国产精品一区二区三区久久| 日日躁夜夜躁狠狠久久AV| 国产巨作麻豆欧美亚洲综合久久| 伊人久久大香线蕉AV一区二区| 精品国产福利久久久| 精品久久久一二三区| 国产精品一久久香蕉国产线看| 久久青青草原精品国产不卡| 四虎国产精品免费久久5151| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 久久久国产视频| 香港aa三级久久三级| 国内精品久久久久久野外| 国内精品人妻无码久久久影院导航| 国产精品亚洲综合专区片高清久久久 | 国产三级久久久精品麻豆三级| 无码国内精品久久人妻麻豆按摩| 精品午夜久久福利大片| 伊人久久大香线蕉AV色婷婷色| 欧美日韩久久中文字幕| 999久久久免费国产精品播放| jizzjizz国产精品久久| 99久久精品影院老鸭窝| 亚洲AV日韩精品久久久久久久| 亚洲国产一成人久久精品| 久久亚洲精品无码VA大香大香| 久久综合九色综合网站| 四虎国产精品成人免费久久| 久久久久青草线蕉综合超碰| 久久久久久国产精品美女|