2010-07-02 61 views
4

我正在嘗試爲Windows CE 5.0編寫一個全屏應用程序。我在Linux下使用CEGCC來編譯我的應用程序,所以我僅限於Windows API - 即沒有花哨的GUI設計器的東西,沒有Visual Studio,沒有MFC,沒有.NET。只有Windows API的Windows CE 5.0全屏窗口

到目前爲止,我嘗試使用微軟的例子SHFullScreen,但沒有運氣。我不想隱藏全局任務欄(即,當我的應用程序關閉時,我希望它的行爲正常,或者我應該說崩潰,並且無法恢復其狀態)。

對此有何意見?一個簡單的程序可以做到這一點(當然,不僅僅是「我認爲是這樣」),即在Windows CE 5.0(或任何Windows CE/Mobile/Embedded中,我猜,至少我有一個線索)顯示一個窗口,屏幕右下角的左上角,在任務欄上方,將會非常有幫助。

谷歌沒有多少幫助我,如果你問(但也許我今天沒有使用正確的條款)。

乾杯

回答

1

我設法把這個在WndProccase WM_CREATE下解決我的所有要求:

int ScreenWidth = GetSystemMetrics(SM_CXSCREEN); 
int ScreenHeight = GetSystemMetrics(SM_CYSCREEN); 

SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, ScreenWidth, ScreenHeight, 0); 
HWND TaskBarWnd = FindWindow("HHTaskBar", ""); 
if (TaskBarWnd != NULL) 
    SetWindowPos(TaskBarWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE); 
2

任務欄,就是要所有窗口的上方,並且不處理相關的,所以得到一個「全屏幕」的效果,你必須將其隱藏。

Here's a C# version應該很容易轉換爲C(因爲它主要是P /調用C無論如何)。

當你的應用程序退出(並且應該)時,你的應用程序肯定會逆轉,但如果它崩潰了,shell就無法「知道」它需要恢復任務欄。當然,如果你控制操作系統,你總是可以創建一個新的Shell來監視這個場景,但我建議你試着讓你的應用程序不會崩潰

+0

我的應用程序可以在開發過程中崩潰,因爲我沒有一個仿真的奢侈品(所以我想我可以使用發生這種情況時,桌面上的另一個應用程序手動還原我的任務欄)。另外,我沒有操作系統的控制權。我對它很頑固。 我只是希望有人知道如何讓我提到的功能工作,因爲微軟爲此目的記錄它。 – 2010-07-02 22:24:42

+0

SHFullScreen不保證存在 - 它在外殼中,所以如果它不在操作系統中,你將不會擁有它。在我發佈的鏈接中調用API更通用。 – ctacke 2010-07-03 01:29:14

+0

它存在於我的設備上。 – 2010-07-04 13:13:56

1

您可以使用Structured Exception Handling(SEH)在崩潰之前恢復任務欄。

+0

值得注意的是,如果SEH是OS映像的一部分,這將僅適用。 – ctacke 2010-07-03 13:52:06