MessageMap: Button gedrückt

Hi ...
Die beste Möglichkeit um ein Fenster manuell von jedem Bereich des Fensters aus zu verschieben (z.B. Button) geht meiner Meinung nach in dem du dem Fenster einfach die Nachricht schickst, dass in der Non-Client-Area der Mausbutton gedrückt wurde.

z.B.
Code:
void MyClass:OnButton1()
{
  SendMessage(m_hWnd,WM_NCLBUTTONDOWN,HTCAPTION,NULL);
}

Dadurch wird das Fenster automatisch in den "MOVE-Modus" gestellt, als hättest du halt in die Non-Client-Area gedrückt.
Wenn du die Maustaste wieder loslässt, wird das automatisch zurückgesetzt.
Dadurch ersparst du dir alle möglichen Abfragen und bekommst ein ruckelfreies Verschieben des Fensters zustande...

Gruß
Shai
 
Erik,wenn ich deinen Code von oben übernehme ist der Y-Wert von point immer 0 egal was kommt. In der "PreTranslateMessage" stimmen die Werte noch, wenn ich sie aber zb in "OnMouseMove" abrufe dann stimmt nur der X-Wert.
 
Echt ... *lol* ich brauch nur den X-Wert, deshalb ist mir das nie aufgefallen.
Dann kann der Fehler eigentlich nur bei
Code:
pMsg->lParam = LOWORD(point.x) | HIWORD(point.y);
liegen.

Ich bastel mal rum ...

--- Nachtrag ---

Okay - ich bin mir sicher, dass volgernde Zeile :
Code:
pMsg->lParam = LOWORD(point.x) | HIWORD(point.y);
so lauten muss :
Code:
pMsg->lParam = MAKELPARAM( point.x , point.y);
habs aber nicht getestet. (^-^)
Auf jeden fall aber Danke, dass du den Fehler gefunden hast. *g*
 
Zuletzt bearbeitet:
habs schon,einfach das "lParam" bei "pMsg->lParam = LOWORD(point.x) | HIWORD(point.y);" durch "wParam" ersetzen, dann gehts
 
Habs hinbekommen, der Tip von Shai war auch super! Hab beides kombiniert und es funktioniert einwandfrei! Vielen Dank und bis zum nächsten Problem ;o)
 

Neue Beiträge

Zurück