fenster soll man nicht bewegen können!
-
hallo,
wie kann ich es handeln das man mein fenster nicht bewegen kann?
kann man das realisieren indem man eine bestimmte Message ans
Fenster schickt?ich habe es bereits mit
SetWindowPos(hWnd,NULL,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);versucht. aber das funktioniert nicht.
danke euch!!
-
Hi,
Ich habe keine Ahnung, ob es eine Möglichkeit gibt das wie du es willst zu lösen.
Aber wenn jetzt keine Antworten kommen, dann könnte man einen Thread starten, der eine Schleife besitzt, welche das Fenster immer an eine best. Position setzt. Und wird dann halt das fenster bewegt springt es automatisch wieder zurück.
Ist halt nicht elegant und ich weiss auch nicht, ob das nicht etwas belastent für den Computer ist.
-
Du musst WM_SYSCOMMAND abfangen.
-
Zumindest kann man es verhindern das der User das Fenster via Titelzeile bewegen kann. (WM_NCHITTEST entsprechend abfangen)
Darf man fragen was du vor hast ?
-
also ich habe eine anwendung die mir die aktuelle systemauslastung
grafisch darstellt. also auch einen grafischen verlauf.das ist ein kleines fenster welches untern rechts über der taskleiste
"klebt".nun möchte ich das man das fenster nur über meine schaltfäche verschieben
kann
(ich habe ein kleines bild in der anwendung)
also wenn man dort draufklickt kann man es verschieben
ja ich dachte das mit dem sperren des "sonstigen / normalen" verschieben wäre
einfach eine WinApi-Funktion deswegen habe ich es hier gepostet.ich programmiere allerdings in MFC und denke das ich dann hier etwas
falsch bin denn die Messages wie WM_SYSCOMMAND oder WM_NCHITTEST
kann ich irgendwie nicht abfangen?!naja aber danke euch!

-
Harry H schrieb:
ich programmiere allerdings in MFC und denke das ich dann hier etwas
falsch bin denn die Messages wie WM_SYSCOMMAND oder WM_NCHITTEST
kann ich irgendwie nicht abfangen?!Klar geht das. Du musst sie nur in der MessageMap eintragen. Aber wie das genau geht, kann ich dir auch nicht sagen. Mit der MFC habe ich nie wirklich programmiert.
-
geht des nicht wenn du einfach ein popup machst, das man dann über deinen button verschieben kann?? ich mein, popups kann man doch nicht einfach so verschieben oder? hab noch net so viel mit denen gemacht...
-
Wenn das Fenster keinen Rand hat kann es auch nicht verschoben werden:
::SetWindowLong(MyWin->HWindow,GWL_STYLE, ::GetWindowLong(MyWin->HWindow,GWL_STYLE) &~WS_DLGFRAME &~WS_THICKFRAME); ::SetWindowLong(MyWin->HWindow,GWL_EXSTYLE, ::GetWindowLong(MyWin->HWindow,GWL_EXSTYLE) |WS_EX_TOPMOST); SetWindowRgn(MyWin->HWindow,NULL,true);Ewo
-
Ewo schrieb:
Wenn das Fenster keinen Rand hat kann es auch nicht verschoben werden:
Ewo
Das stimmt nicht...du kannst das imitieren!Versuch mal das:

// in deiner WndProc: // ... case WM_LBUTTONDOWN: SendMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0L); return (0L); // ...Oder du meinst was anderes :p
-
OK, Codefinder,
das Schöne am programmieren ist, das man fast alles programmieren kann.
Sogar Fenster ohne Rahmen (Rand), die man trotzdem verschieben kann. Aber hier war ja gefragt, wie ich in einem "normalen Fenster" das Verschieben unterbinden kann. Und das funktioniert mit meinem Code.
(Ich programmiere immer noch mit Borland 5.02: MyWnd->HWindow ist hWnd und ::Funktion ist die Winapi Funktion. im Gegensatz zu evtl. existierenden Klassenfunktionen)EWo