Fenster andocken?
-
HI!
Wie ist es möglich ein Fenster so wie es Winamp macht an andere Fenster anzudocken?Danke
Kevin
-
http://www.activevb.de/tipps/vb6tipps/tipp0240.html
Ist zwar VisualBasic, was aber wiederrum auch nur die WinAPI benutzt.
Viel Spass beim umschreiben :p
-
Klappt nich
GetClientRect(hWnd, &rClient); wp.length = sizeof(wp); GetWindowPlacement(hWnd, &wp); switch(wp.showCmd) { case SW_HIDE: ShowWindow(hWnd, SW_HIDE); break; case SW_NORMAL: ShowWindow(hWnd, SW_NORMAL); if(rClient.top <= 0) { SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); GetClientRect(hWnd, &rClient); case SW_MAXIMIZE: if(rClient.top <= 0) { SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); GetClientRect(hWnd, &rClient); } break; } }
Kevin
-
Zwischenfrage: Hast Du auch 2 Fenster? So wie es aussiehst, soll das eine Fenster mit diesem Codefragment neben einem zweiten platziert werden (Form2).
If GetWindowPlacement(Form2.hwnd, WPM) = 0 Then Exit Sub
da hast Du
GetWindowPlacement(hWnd, &wp);
drausgemacht. Das stimmt so nicht. Du brauchst ein zweites Fenster.
-
Und wie kann ich das verallgemeinern? Bei einem bestimmten HWND kann ich mir da auch ne bessere Funktion machen
ich wills aber bei JEDEM window!
-
Einfach eine Funktion basteln, der die Handles der 2 beteiligten Fenster übergeben werden
-
Ja das check ich schon aber wie krieg ich das handle des windows an des es angedockt werden soll? Soll ja an jedem gehen...
-
kA, aber du könntest es mal mit WindowFromPoint versuchen
-
HI!
Danke - das is ne verdammt gute Idee! Jetzt bräuchte ich nur noch sowas wie WM_WINDOWMOVE dass mir immer ne Nachricht schickt wenn das Window bewegt wird...hmmm Timer wär da nämlich etwas blödKevin
-
Original erstellt von Surkevin:
Ja das check ich schon aber wie krieg ich das handle des windows an des es angedockt werden soll? Soll ja an jedem gehen...du übergibst einfach die beiden handles als parameter
-
WM_MOVE ?!
-
Hmm das gibt nur eine MSG wenn das Fenster verschoben wurde...ich denke ich mach mir einfach ne eigene Titelleiste, nur wie bekomm ich die Standarttitelleiste weg? Sorry für die Frage aber ich finde nirgends ne Antwort *wunder*
Kevin
-
Original erstellt von Surkevin:
Jetzt bräuchte ich nur noch sowas wie WM_WINDOWMOVE dass mir immer ne Nachricht schickt wenn das Window bewegt wird...Hmm das gibt nur eine MSG wenn das Fenster verschoben wurde...
Was suchst du denn jetzt
Falls du ein Fenster ohne Titelleiste willst musst du einfach bei CreateWindow(Ex) die entsprechenden WS_* Flags setzen
[ Dieser Beitrag wurde am 02.04.2003 um 14:14 Uhr von flenders editiert. ]
-
Jo nur find ich in der MSDN nich welche
-
Jetzt bräuchte ich nur noch sowas wie WM_WINDOWMOVE dass mir immer ne Nachricht schickt wenn das Window bewegt wird...
Hmm das gibt nur eine MSG wenn das Fenster verschoben wurde...Ist das kein Widerspruch?
Wo ist bei dir der Unterschied zwischen verschieben und bewegen??[ Dieser Beitrag wurde am 02.04.2003 um 14:39 Uhr von paranoiac.org editiert. ]
-
WURDE
Ich will jedoch eine wenn es bewegt WIRD! Aber wie kann ich die Titelleiste wegmachen mit welchem flag?
Kevin
-
also, wenn das Fenster bewegt wird, wird die WM_MOVING-Message gesendet...
Die Titelleiste müsste eigentlich mit WS_POPUP weggehen.
-
WM_MOVING