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

隨筆 - 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>
            久久国产主播精品| 欧美高清在线精品一区| 国产亚洲欧美另类中文| 欧美成人免费在线观看| 久久精品免费电影| 亚洲综合日本| 一本色道久久99精品综合| 亚洲国产精品久久精品怡红院 | 欧美电影在线免费观看网站| 美日韩精品视频免费看| 麻豆精品在线观看| 欧美日本视频在线| 欧美日韩直播| 国产啪精品视频| 好吊妞**欧美| 一本久道综合久久精品| 亚洲影院色无极综合| 欧美一级欧美一级在线播放| 久久裸体视频| 日韩视频免费在线| 亚洲一区在线免费| 亚洲尤物在线| 欧美精品123区| 国产色综合网| 亚洲精品在线三区| 亚洲女同精品视频| 另类尿喷潮videofree| 亚洲高清一区二| 亚洲级视频在线观看免费1级| 亚洲午夜精品17c| 毛片基地黄久久久久久天堂| 欧美午夜电影在线观看| 一区二区自拍| 性欧美大战久久久久久久久| 免费在线亚洲| 亚洲欧美国产77777| 欧美 日韩 国产精品免费观看| 国产精品一区二区欧美| 亚洲精品国产精品乱码不99 | 亚洲调教视频在线观看| 美女精品在线观看| 亚洲——在线| 欧美顶级少妇做爰| 精品不卡在线| 久久国产精彩视频| 一区二区日韩欧美| 欧美大片在线观看| 亚洲国产另类久久久精品极度| 久久国产福利国产秒拍| 在线性视频日韩欧美| 久久久亚洲人| 国内精品国语自产拍在线观看| 亚洲在线视频免费观看| 亚洲国产另类精品专区| 久久久久青草大香线综合精品| 国产日韩欧美亚洲一区| 亚洲欧美日本伦理| 9国产精品视频| 欧美日韩直播| 性8sex亚洲区入口| 亚洲综合色丁香婷婷六月图片| 亚洲伊人久久综合| 欧美激情在线免费观看| 亚洲电影下载| 欧美88av| 欧美成人亚洲成人日韩成人| 樱桃成人精品视频在线播放| 久久精品视频免费观看| 久久国产99| 狠狠综合久久av一区二区小说 | 欧美一区二区网站| 午夜国产一区| 欧美一区二区三区在线观看视频| 国产精品入口| 欧美影片第一页| 欧美主播一区二区三区美女 久久精品人| 国产精品综合av一区二区国产馆| 亚洲一区二区三| 亚洲免费视频成人| 一区二区在线视频| 亚洲国产黄色| 欧美三级电影一区| 欧美一区二区三区四区在线观看 | 国产色视频一区| 久久综合久久久久88| 久久久亚洲精品一区二区三区 | 午夜精品婷婷| 国内精品视频在线观看| 亚洲国产高清aⅴ视频| 欧美日韩国产精品成人| 亚洲欧美日韩系列| 久久精品人人爽| 日韩视频在线观看国产| 日韩视频在线一区二区三区| 国产精品午夜春色av| 免费观看30秒视频久久| 欧美日韩高清一区| 欧美中文字幕在线| 你懂的视频欧美| 欧美一区二区三区免费视| 久久噜噜亚洲综合| 在线视频一区观看| 久久九九国产精品| 一区二区三区视频在线播放| 亚洲欧美视频一区二区三区| 在线欧美福利| 午夜精品久久久久久久99樱桃 | 艳女tv在线观看国产一区| 国产欧美一区二区精品性| 久久午夜av| 欧美日韩亚洲高清| 久久嫩草精品久久久精品| 欧美本精品男人aⅴ天堂| 国产精品99免费看| 另类av导航| 国产精品嫩草影院av蜜臀| 久久网站免费| 国产一级久久| 亚洲精品免费一区二区三区| 国产日韩欧美一区二区| 99精品99久久久久久宅男| 亚洲国产精品成人一区二区 | 欧美精品1区2区3区| 久久不射网站| 国产精品v欧美精品v日本精品动漫 | 欧美大片免费| 久久综合九色九九| 欧美系列亚洲系列| 最新国产乱人伦偷精品免费网站| 国产日韩视频一区二区三区| 日韩一级黄色片| 亚洲国产91精品在线观看| 久久精品免费| 欧美专区18| 国产精品久久久久久久久| 亚洲精品偷拍| 99国内精品久久| 免费亚洲电影在线| 久久久99精品免费观看不卡| 国产精品综合色区在线观看| 亚洲视频免费| av成人手机在线| 欧美日韩国产成人精品| 亚洲日韩视频| 亚洲性视频网站| 国产精品久久久久久久久动漫| 这里只有精品视频在线| 欧美亚洲免费高清在线观看| 国产精品男gay被猛男狂揉视频| 亚洲女性裸体视频| 久久精品一区二区国产| 国语自产偷拍精品视频偷| 久久久久久久精| 亚洲国产成人在线视频| 亚洲一区二区三区在线观看视频| 欧美视频在线不卡| 亚洲欧美一区二区三区在线| 久久婷婷国产综合国色天香| 影音先锋在线一区| 牛夜精品久久久久久久99黑人| 亚洲电影自拍| 亚洲女女女同性video| 国产一区二区三区自拍| 久久久噜噜噜久久人人看| 亚洲激情视频在线观看| 亚洲专区免费| 一区二区三区在线看| 欧美人交a欧美精品| 亚洲欧美精品伊人久久| 免费欧美在线| 亚洲一区久久久| 国产精品欧美在线| 久久久精品2019中文字幕神马| 亚洲第一毛片| 午夜精品剧场| 美女露胸一区二区三区| 亚洲美女少妇无套啪啪呻吟| 欧美一区二区视频免费观看| 亚洲国产欧美一区二区三区久久| 欧美精品综合| 亚洲欧美国产精品va在线观看| 免费人成网站在线观看欧美高清| 伊人久久大香线蕉综合热线| 久久免费黄色| 亚洲欧洲日本国产| 午夜久久久久久| 亚洲网站在线观看| 亚洲欧美久久久久一区二区三区| 亚洲成人资源网| 国产精品亚洲一区| 亚洲男人av电影| 一本色道久久88亚洲综合88| 亚洲免费成人av| 影音先锋另类| 国产一区二区三区奇米久涩| 亚洲永久在线观看| 99亚洲精品| 日韩视频在线免费观看| 在线国产日韩| 久久精品国产v日韩v亚洲|