青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 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 郭天文 閱讀(835) 評論(0)  編輯 收藏 引用 所屬分類: Windows Mobile

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产在线成人| 亚洲免费一区二区| 亚洲欧美日韩在线观看a三区| 亚洲黄色免费| 亚洲国产精品va在线观看黑人| 激情懂色av一区av二区av| 国产一区二区精品久久99| 国产一区日韩欧美| 亚洲国产另类久久精品| 99在线精品视频在线观看| 亚洲在线观看视频网站| 久久精品视频在线观看| 欧美成人久久| 一区二区高清视频在线观看| 亚洲天天影视| 久久综合婷婷| 国产精品高精视频免费| 韩国亚洲精品| 一区二区三区视频观看| 欧美在线一二三四区| 亚洲国产精品国自产拍av秋霞| 亚洲人成在线观看一区二区| 亚洲女人天堂成人av在线| 狼人天天伊人久久| 国产精品高清在线观看| 亚洲大片av| 欧美一区二区女人| 亚洲成色777777在线观看影院| 亚洲神马久久| 麻豆精品传媒视频| 国产精品国产亚洲精品看不卡15| 国产日韩三区| 日韩午夜电影av| 亚洲午夜电影在线观看| 免费国产一区二区| 亚洲精品1区| 亚洲一二三四区| 久久精品久久99精品久久| 免费在线观看精品| 国产精品高精视频免费| 悠悠资源网亚洲青| 国产精品99久久久久久有的能看 | 狼人天天伊人久久| 欧美二区在线看| 一区二区三区四区五区视频| 亚洲一区三区视频在线观看| 国产精品久久久久9999吃药| 国产日韩精品久久久| 亚洲欧洲在线免费| 午夜亚洲性色视频| 欧美成人免费播放| 亚洲欧美日韩电影| 你懂的成人av| 欧美日本久久| 欧美日韩国产综合网| 国产精品亚洲综合| 亚洲精品一区二区在线观看| 久久久亚洲人| 一本色道精品久久一区二区三区| 久久久久国产成人精品亚洲午夜| 欧美三级在线视频| 1024精品一区二区三区| 亚洲欧美日韩另类| 亚洲国产精品久久久久婷婷老年| 午夜免费日韩视频| 欧美亚一区二区| 日韩西西人体444www| 母乳一区在线观看| 久久精品天堂| 国产永久精品大片wwwapp| 亚洲一区自拍| 日韩一区二区免费看| 欧美国产精品久久| 亚洲黄色免费| 亚洲第一狼人社区| 亚洲一区二区免费在线| 久久综合给合| 国产欧美在线播放| 伊人久久婷婷色综合98网| 99视频一区二区| 久久精品视频免费| 亚洲免费视频一区二区| 国产精品久久久免费| 亚洲欧美另类国产| 亚洲一区日韩在线| 国产精品高精视频免费| 午夜欧美精品| 欧美一区二区免费观在线| 国产欧美精品一区二区三区介绍 | 这里是久久伊人| 久久精品一区二区三区四区| 黑人巨大精品欧美一区二区小视频 | 一区二区av| 一本色道久久综合亚洲精品婷婷| 欧美日韩综合视频| 午夜精品久久久久久久久| 午夜精品久久一牛影视| 好吊成人免视频| 亚洲高清av| 欧美视频中文字幕在线| 久久手机免费观看| 免费亚洲视频| 亚洲精品一区二区三区av| 亚洲精品久久久久久久久| 欧美日韩高清在线播放| 欧美亚洲一区二区三区| 久久久久久久91| 日韩视频二区| 亚洲一线二线三线久久久| 国产一区二区看久久| 欧美尤物巨大精品爽| 久久久久青草大香线综合精品| 亚洲三级免费电影| 亚洲欧美久久久久一区二区三区| 一区二区三区自拍| 亚洲精品久久久久久久久久久久| 国产精品女主播| 欧美成人高清视频| 国产精品多人| 欧美成人蜜桃| 国产丝袜美腿一区二区三区| 欧美韩日高清| 国产老肥熟一区二区三区| 欧美国产1区2区| 国产精品亚洲人在线观看| 午夜精品一区二区在线观看| 亚洲手机视频| 亚洲乱码久久| 久久精品视频在线播放| 亚洲综合不卡| 欧美精品久久久久久久久老牛影院 | 在线精品国产欧美| 免费观看成人www动漫视频| 农村妇女精品| 久久人人97超碰国产公开结果| 欧美日韩免费一区二区三区视频| 久久精品综合一区| 欧美午夜一区二区三区免费大片 | 日韩亚洲精品电影| 亚洲第一区在线观看| 亚洲欧美一区二区三区在线| 一本色道久久加勒比精品| 久久综合网hezyo| 久久精品国产欧美激情| 欧美性色aⅴ视频一区日韩精品| 亚洲第一黄网| 91久久国产精品91久久性色| 亚洲欧美日韩国产成人| 亚洲综合精品| 欧美一级网站| 久久国产高清| 国产精品素人视频| 在线综合亚洲| 亚洲一级在线观看| 欧美日韩免费一区| 亚洲精品视频免费在线观看| 亚洲区一区二| 欧美电影打屁股sp| 亚洲国产你懂的| 亚洲第一在线综合网站| 激情欧美日韩| 一区二区三区不卡视频在线观看| 亚洲国产精品久久久久秋霞影院 | 亚洲欧洲日本mm| 裸体丰满少妇做受久久99精品| 亚洲欧美国产77777| 欧美国产高清| 久久久亚洲高清| 在线欧美电影| 欧美国产一区在线| 99精品久久免费看蜜臀剧情介绍| 亚洲美女性视频| 欧美日韩国产精品专区| 一区二区三区久久| 性欧美8khd高清极品| 国产欧美日韩综合精品二区| 久久成人久久爱| 欧美不卡福利| 夜夜爽夜夜爽精品视频| 国产精品jizz在线观看美国 | 久久手机免费观看| 91久久综合亚洲鲁鲁五月天| 在线一区观看| 国产欧美一区二区精品性色| 久久久夜夜夜| 亚洲精选视频在线| 午夜精品久久久| 国外成人在线视频| 欧美国产精品v| 亚洲经典视频在线观看| 在线亚洲自拍| 国内精品嫩模av私拍在线观看| 美女精品网站| 一区二区三区黄色| 久久久久一区二区三区| 亚洲精品三级| 国产色婷婷国产综合在线理论片a| 久久精品国产一区二区电影| 亚洲破处大片| 久久久久久97三级|