Page 1 of 1

OnMessage Frage

Posted: 14 Nov 2013, 10:23
by fump2000
Hallo,

ich wollte gerne die Position eines Fensters speichern.
Die GUI wird bewegt indem man mit der Linken Maustatse einfach draufklickt und zieht.
In dem Moment wo man die Maustaste loslässt wollte ich die Position speichern.

Dazu wollte ich OnMessage(0x0202, "WM_LBUTTONUP") nutzen.

Die Funktion:

Code: Select all

WM_LBUTTONUP(wParam, lParam)
{
	global h_AAXcom
	global AAXcomGUIX
	global AAXcomGUIY
	IfWinActive, ahk_id %h_AAXcom%
		{
			WinGetPos,AAXcomGUIX, AAXcomGUIY,,,ahk_id %h_AAXcom%
			IniWrite,%AAXcomGUIX%, %A_ScriptDir%\funktionen.ini, AAX, AAXcomGUIX
			IniWrite,%AAXcomGUIY%, %A_ScriptDir%\funktionen.ini, AAX, AAXcomGUIY
		}
}
reagiert aber kein bisschen...
h_AAXcom ist der HWND des Fensters. Jedoch wird die Funktion gar nicht erst angesprochen.

Was mache ich falsch?

MfG
fump


Edit:
Ich seh grad das die Funktion dann angesprochen wird wenn man auf einem der Buttons klickt und loslässt. Wie bekommt man es hin das die ganze GUI so reagiert?

Hier die GUI:

Code: Select all

AAXcomGui:
HWNDIE:=0
HWNDCH:=0
HWNDFF:=0
IniRead,AAXcomColorGui, %A_ScriptDir%\funktionen.ini, AAX, AAXcomColorGui
IniRead,AAXcomColorFont, %A_ScriptDir%\funktionen.ini, AAX, AAXcomColorFont
IniRead,AAXcomTrans, %A_ScriptDir%\funktionen.ini, AAX, AAXcomTrans
IniRead,AAXcomGUIX, %A_ScriptDir%\funktionen.ini, AAX, AAXcomGUIX
IniRead,AAXcomGUIY, %A_ScriptDir%\funktionen.ini, AAX, AAXcomGUIY
Gui, AAXcom:Font, S8 %AAXcomColorFont%, Candara
Gui, AAXcom:Color, %AAXcomColorGui%
Gui, AAXcom:+AlwaysOnTop -caption +Border +ToolWindow +LastFound +HWNDh_AAXcom
Gui, AAXcom:Add, Text, x5 y2 w50 h14 Border Center vBrowser1 gBrowserChange HWNDh_IE, IE
Gui, AAXcom:Add, Text, x60 y2 w20 h14 Center, ID:
Gui, AAXcom:Add, Text, x78 y2 w44 h14 Center vID1, 
Gui, AAXcom:Add, Text, x125 y2 w50 h14 Border Center vBrowser2 gBrowserChange HWNDh_CH, Chrome
Gui, AAXcom:Add, Text, x180 y2 w20 h14 Center, ID:
Gui, AAXcom:Add, Text, x198 y2 w44 h14 Center vID2, 
Gui, AAXcom:Add, Text, x245 y2 w50 h14 Border Center vBrowser3 gBrowserChange HWNDh_FF, FireFox
Gui, AAXcom:Add, Text, x300 y2 w20 h14 Center, ID:
Gui, AAXcom:Add, Text, x318 y2 w44 h14 Center vID3, 
Gui, AAXcom:Show, x%AAXcomGUIX% y%AAXcomGUIY% h18 w365, AAXcom
WinSet, Transparent, %AAXcomTrans%
Return

Re: OnMessage Frage

Posted: 14 Nov 2013, 11:25
by just me
Also, entweder Du machst das per WM_MOVE oder vielleicht auch per WM_NCLBUTTONUP.

Re: OnMessage Frage

Posted: 14 Nov 2013, 12:29
by gregster
In etwa so?

Code: Select all

Gui, show, w400 h200
OnMessage(0x202, "WM_LBUTTONUP")
return

WM_LBUTTONUP(wparam=0, lparam=0, msg=0, hwnd=0)			
{
     ; global deinFensterhandle
     ; If (hwnd=deinFensterhandle)                                        ; um es auf dein Fenster einzuschränken
      {
        WinGetPos, GUIX, GUIY,,,ahk_id %hwnd%
        msgbox % GUIX " " GUIY
      }
}

Esc::ExitApp
Edit:
Die GUI wird bewegt indem man mit der Linken Maustatse einfach draufklickt und zieht.
Ich habe diese Zeile so interpretiert, dass du das Verschieben per WM_LButtonDown-Message regelst. Wenn du das Fenster dagegen "wie sonst üblich" an der Kopfzeile ziehst, dann macht WM_NCLBUTTONUP wahrscheinlich mehr Sinn, wie just me angemerkt hat... (habs allerdings noch nie verwendet)

Re: OnMessage Frage

Posted: 15 Nov 2013, 03:03
by fump2000
Das mit dem GUI Bewegen wird über diesen Code hier gemacht:

Code: Select all

OnMessage(0x201, "WM_LBUTTONDOWN")

WM_LBUTTONDOWN()
{
	if (A_Gui="AAXcom")
		{
			If (A_GuiControl = "") ; Klick auf den Hintergrund der GUI
				PostMessage, 0xA1, 2, 0 ; sehr sehr alter Trick von SKAN: 0xA1 = WM_NCLBUTTONDOWN
		}
}
Mit WM_MOVE klappts einwandfrei. Danke!