2008-11-14 121 views
2

我正在開發用於PocketPC的應用程序。當應用程序啓動調用SetScreenOrientation(270)的自定義函數時,會旋轉屏幕。當應用程序關閉時,將調用SetScreenOrientation(0)函數來恢復屏幕方向。用於最小化和最大化窗口的事件處理程序

這樣,如果用戶最小化應用程序,則不會恢復屏幕方向,這是不可接受的。

有沒有人知道應該調用SetScreenOrientation(int angle)來設置應用程序啓動時的屏幕方向,還原最小化方向,將方向設置爲最大化並在關閉時恢復方向?

其實我不知道哪個事件處理程序處理最小化和最大化事件。

回答

2

正確的信息是WM_SIZE,但Daemin的回答指向錯誤的WM_SIZE幫助主題。檢查wParam。要小心,因爲你的窗戶可能會被最大化,但隱藏起來。

+0

它指向Windows CE 3.0版本,我相信它是在PocketPC OS中使用的版本。 – Daemin 2008-11-14 14:50:49

+0

它是「Windows Embedded CE 3.0」,而不是「Windows Mobile」。微軟應該因爲在移動屋頂下擁有如此多的名字而被打屁股。它讓我很困惑!也許niko可以澄清他在哪個平臺下? – 2008-11-14 19:53:53

0

我不知道在C++世界中調用了什麼,但是在.NET Compact Framework中,當您最小化/最大化一個窗口時,將調用應用程序窗體的Resize事件,然後在事件代碼中檢查窗體的WindowState屬性,以查看它是最小化還是最大化。

從您的應用程序中更改您的PDA的狀態是有風險的(儘管有很多很好的理由可以做到這一點),因爲如果您的應用程序崩潰,它將使PDA處於任何狀態。在Windows Mobile中有很多自助服務終端類型(全屏)應用程序,並且有效地做到這一點的技巧之一是隱藏WM標題欄(使用Windows開始按鈕的最上面一行)以避免閃爍每次你打開一個新的表格時,都要分秒。如果應用程序崩潰,窗口欄將保持隱藏狀態,直到您重置設備,這並不好。至少在屏幕旋轉時,用戶可以手動恢復它。

2

從我的Windows CE體驗中,您應該處理WM_SIZEWM_WINDOWPOSCHANGED消息。如果你正在使用PocketPC,我建議你先看一下WM_WINDOWPOSCHANGED消息,因爲我不確定WM_SIZE是否有你需要的正確參數。

從WM_WINDOWPOSCHANGED消息的WINDOWPOS結構中查看flags成員,特別是SWP_SHOWWINDOW和SWP_HIDEWINDOW。


您需要查看的消息的具體版本因您使用的操作系統而異。 Pocket PC OS建立在Windows CE 3.0(及更低版本)上,而Windows Mobile現在建立在Windows CE 5.0(甚至Windows Mobile 6)上,但也建立在Windows CE 4上。(Source)

所以, MSDN中您正在爲其編寫的操作系統的相關部分。

0

這真的取決於平臺,但我會去與WM_WINDOWPOSCHANGED或OnShow。這不是wm_size ..那個並不總是在所有平臺上拋出。當你期待他們的時候,卡西歐不會拋出大小的事件。 TDS和Symbol的確如此。

儘管MSDN對於信息來說是一個很好的選擇,但記住不是所有的操作系​​統都是相同的。在PPC世界中,硬件提供商可以創建他們自己的操作系統,有時還會創建錯過的東西,或者故意忽略。

我在這裏有一個平臺(名字版主要保護...以及我),有左和右按鈕..當你按他們,你會希望能夠趕上VK_LEFT,VK_RIGHT ..你會錯的。你實際上得到';'要麼 ':'。那褲子裏踢了一腳怎麼樣

相關問題