PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : .NET CF 1.1: Wie minimiere ich mich selbst?


Shink
2006-10-13, 11:12:11
Ich schaff es einfach nicht, im .NET CF 1.1 (für Windows CE 4.2) ein Fenster (bzw eine Form) in den Hintergrund zu stellen, zu minimieren o.ä.: Es gibt zwar eine MinimizeBox oder wie das heißt; das Zielgerät hat aber weder Maus noch Touchscreen. Weiß da jemand eine Lösung?

Shink
2006-10-13, 11:13:24
Noch kurz zur Erklärung: Das Programm hab ich selbst geschrieben, aber Hide(), Visible etc. auf die Form anzuwenden hat keine Auswirkung.

Gnafoo
2006-10-13, 12:03:08
form.WindowState = FormWindowState.Minimized;

meinst du das?

Shink
2006-10-13, 13:07:42
Ja, genau das. Nur gibt es im CF (Compact Framework) nur "Maximized" und "Normal" als Konstanten in FormWindowState.

Gnafoo
2006-10-13, 14:37:17
Ah ok wusste ich nicht. Vielleicht hilft dir das weiter:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=13612&SiteId=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=85099&SiteId=1

Shink
2006-10-18, 09:18:38
Hmm... ShowWindow(handle, 6) macht gar nichts. Mit SetWindowPos(handle, IntPtr.zero, 0, 0, 0, 0, 128) kann ich zwar meine Größe auf 0 setzen, aber den Keyboard-Fokus hat trotzdem meine Anwendung, obwohl ich ihn nirgends verlange!

Gnafoo
2006-10-18, 19:16:23
Hmm... ShowWindow(handle, 6) macht gar nichts. Mit SetWindowPos(handle, IntPtr.zero, 0, 0, 0, 0, 128) kann ich zwar meine Größe auf 0 setzen, aber den Keyboard-Fokus hat trotzdem meine Anwendung, obwohl ich ihn nirgends verlange!

Hmm ist "6" denn überhaupt der Wert von SW_MINIMIZE? Probiers doch mal mit ShowWindow(handle, SW_MINIMIZE) oder ShowWindow(handle, SW_HIDE).
Die Doku sagt dazu:
SW_HIDE
Hides the window and activates another window.
SW_MINIMIZE
Minimizes the specified window and activates the next top-level window in the Z order.
(leider verliert die Dokumentation bei mir aber kein Wort über Windows CE.)

Zu SetWindowPos: soweit ich das verstanden habe sollst du das Fenster auch nicht auf die Größe 0 setzen, sondern hinter alle anderen Fenster verlagern (wahrscheinlich auch hinter den Desktop ka). Also SetWindowPos(handle, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE). Wenn das Fenster immer noch den Fokus hat, kannst du es ja eventuell mit einem darauffolgenden SetActiveWindow(GetForegroundWindow()) probieren.

Mehr fällt mir dazu auch nicht ein und da ich kein Windows CE habe kann ich die Sachen oben auch nicht testen. Vielleicht hilft es dir ja trotzdem.