Fenster festnageln!
-
@Cpp_Junky : Laut MSDN wird WM_MOVE auch erst ausgelöst, wenn die Bewegung schon abgeschlossen ist.
@all: Die Lösung als API Variante würde mich schon auch interessieren
-> Dann wäre die Sache auch vollständig und könnte in die FAQ@rg_Basser: Die Variante funktioniert, ist aber eigentlich gemogelt :). Das ganze geht so zum Beispiel bei einer Dialoganwendung nicht. Aber es hat mich auf die entscheidende Idee gebracht einfach WM_LBUTTONDOWN auf die Titelleiste abzufangen.
[ Dieser Beitrag wurde am 02.09.2002 um 17:08 Uhr von TheBigW editiert. ]
-
Hihi, ich werde dein Fenster dann mal per Tastatur verschieben.
-
Dieser WinAPI-Code in der WindowProc sorgt dafür, dass das Fenster weder verschoben noch in der Größe verändert werden kann.
switch(Msg) { case WM_SYSCOMMAND: switch(wParam) { case SC_CLOSE: SendMessage(hwnd, WM_CLOSE, 0, 0); break; case SC_MINIMIZE: ShowWindow(hwnd, SW_MINIMIZE); break; case SC_MAXIMIZE: ShowWindow(hwnd, SW_MAXIMIZE); break; case SC_RESTORE: ShowWindow(hwnd, SW_RESTORE); break; } return 0; }
-
Was mich interessieren würde ist, wie oft Du diese Frage noch stellst !!!
Leider kommt man im Forum nicht mehr so weit zurück... naja ich hatte es noch im Backup
MfG veganza
-
@veganza
Das heißt: "Have a look at this.Wenn, dann sollte Volles Lösung in die FAQ!
-
Sind wir hier in einem MFC Forum oder im "english for advanced"
Bin gespannt ob man den alten Thread vom 1.3. noch verschieben kann, soweit kommt man ja im Forum überhaupt nicht mehr zurück...
MfG veganza
-
Na gut, dann schreiben wir hier doch noch einmal die Lösung hin.
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { case WM_SYSCOMMAND: if((wParam & 0xFFF0) == SC_MOVE) return 0; break; } return DefWindowProc(hwnd, uMsg, wParam, lParam); }
-
@Veganza,
danke für den Link, diese Diskussion hatte ich eigentlich gesucht, sonst hätt' ich natürlich nicht schoon wieder danach gefragt
-
Tja dann muß ich wohl nochmal nerven :). Bei mir (Dilaog-Anwendung) läuft er nämlich nicht in WM_SYSCOMMAND rein beim anklicken des Systemmenues oder verschieben. Das geht nur beim Minimieren, Maximieren und Schließen. Liegt das an den verwendeten Styles des Dialoges? Ein Dialog ist doch auch nur ein Fenster wie jedes andere auch, oder?
-
-> yop, geht dort genauso, man darf halt nicht versuchen, die WM_SYSCOMMAND in der PreTranslateMessage(..) abzufangen, denn dort kommt sie natürlich nie an......