Windows CE Anwendung auf ganzem Screen
-
HI Leute,
ich versuche gerade auf meinem Windows CE 4.2 mit MFC die Taskbar, das StartIcon und den SIPButton auszublenden, dass man aus meiner Applikation nicht mehr herauskommt. Ich hab es bereits maximiert mitShowWindow(SW_SHOWMAXIMIZED); ModifyStyle(WS_CAPTION|WS_SYSMENU,0);Nun versuche ich mittels:
SHFullScreen(this->GetSafeHwnd(), SHFS_HIDETASKBAR | SHFS_HIDESTARTICON | SHFS_HIDESIPBUTTON);(beides in BOOL CScannerfixDlg::OnInitDialog()
die Dingert auszublenden. Aber es funktioniert nicht. Hat jemand von euch nen Hinweis oder nen Lösungsansatz für das Problem?Liebe Grüße
Basti
-
Versuche diese Methoden mal später aufzurufen, OnInitDialog ist zu früh
-
Ich habe es nun folgendermaßen gelöst:
OnInitDialog():... ModifyStyle(WS_CAPTION|WS_SYSMENU,0); InitFullScreen(); DoFullScreen(true); ShowWindow(SW_SHOWMAXIMIZED); ...Und hier die 2 Funktionen:
int InitFullScreen (void) { int Result = 0; __try { if (SystemParametersInfo(SPI_GETWORKAREA, 0, &rtDesktop, NULL) == 1) { // Successful obtain the system working area (Desktop) SetRect(&rtNewDesktop, 0, 0, 240, 320); // Change system setting SystemParametersInfo(SPI_SETWORKAREA, 0, &rtNewDesktop, SPIF_UPDATEINIFILE); } // Find the Input panel window handle hWndInputPanel = FindWindow(TEXT("SipWndClass"), NULL); // Checking... if (hWndInputPanel != NULL) // Get the original Input panel window size GetWindowRect(hWndInputPanel, &rtInputPanel); // Find the SIP Button window handle hWndSipButton = FindWindow(TEXT("MS_SIPBUTTON"), NULL); // Checking... if (hWndSipButton != NULL) // Get the original Input panel window size GetWindowRect(hWndSipButton, &rtSipButton); // Find the Taskbar window handle hWndTaskBar = FindWindow(TEXT("HHTaskBar"), NULL); // Checking... if (hWndTaskBar != NULL) // Get the original taskbar window size GetWindowRect(hWndTaskBar, &rtTaskBar); } __except(EXCEPTION_EXECUTE_HANDLER) { // PUT YOUR ERROR LOG CODING HERE // Set return value Result = 1; } return Result; } int DoFullScreen (bool mode) { int Result = 0; __try { if (mode) { // Update window working area size SystemParametersInfo(SPI_SETWORKAREA, 0, &rtNewDesktop, SPIF_UPDATEINIFILE); if (NULL != hWndTaskBar) { // Hide the TaskBar MoveWindow(hWndTaskBar, 0, rtNewDesktop.bottom, rtTaskBar.right - rtTaskBar.left, rtTaskBar.bottom - rtTaskBar.top, false); } if (NULL != hWndInputPanel) { // Reposition the input panel MoveWindow(hWndInputPanel, 0, rtNewDesktop.bottom - (rtInputPanel.bottom - rtInputPanel.top), rtInputPanel.right - rtInputPanel.left, rtInputPanel.bottom - rtInputPanel.top, false); } // Ensure the SIP button is found (Only for PocketPC) if (NULL != hWndSipButton) { // Hide the input panel MoveWindow(hWndInputPanel, 0, rtNewDesktop.bottom, rtSipButton.right - rtSipButton.left, rtSipButton.bottom - rtSipButton.top, false); } } else { // Update window working area size SystemParametersInfo(SPI_SETWORKAREA, 0, &rtDesktop, SPIF_UPDATEINIFILE); // Restore the TaskBar if (NULL != hWndTaskBar) { MoveWindow(hWndTaskBar, rtTaskBar.left, rtTaskBar.top, rtTaskBar.right - rtTaskBar.left, rtTaskBar.bottom - rtTaskBar.top, false); } // Restore the input panel if (NULL != hWndInputPanel) { MoveWindow(hWndInputPanel, rtDesktop.left, rtDesktop.bottom - (rtInputPanel.bottom - rtInputPanel.top) - (rtTaskBar.bottom - rtTaskBar.top), rtInputPanel.right - rtInputPanel.left, rtInputPanel.bottom - rtInputPanel.top, false); } // Ensure the SIP button is found (Only for PocketPC) if (NULL != hWndSipButton) { // Hide the input panel MoveWindow(hWndSipButton, rtSipButton.left, rtSipButton.top, rtSipButton.right - rtSipButton.left, rtSipButton.bottom - rtSipButton.top, false); } } } __except(EXCEPTION_EXECUTE_HANDLER) { // PUT YOUR ERROR LOG CODING HERE // Set return value Result = 1; } return Result; }
-
kleine Frage habe ich noch:
Ich will beim Beenden des Programmes die Taskleiste usw. wiederherstellen.
Eigentlich müsste das durch den Aufruf von DoFullScreen(false); funktionieren dass er das wiederherstellt. Ich bin mir nur nicht so sicher wohin der Befehl muss. Ich habe es erstmal so gelöst, dass bei der Eingabe von quit das Programm beendet werden soll.if (cs_eingabe == "quit") { InitFullScreen(); DoFullScreen(false); DestroyWindow(); }Aber er beendet zwar das Programm, aber die Taskleiste ist immernoch weg. Weis jmd. spontan woran es liegt, oder muss das mit dem DoFullScreen in eine andere Funktion... was weis ich OnDestryDialog(). Ich weis leider grade nicht welche die richtige Methode ist, um ein Programm auf eine bestimmte Eingabe hin kontrolliert zu beenden...
Liebe Grüße
Basti