OnMessage Frage

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
fump2000
Posts: 313
Joined: 04 Oct 2013, 17:31

OnMessage Frage

14 Nov 2013, 10:23

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
just me
Posts: 9512
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: OnMessage Frage

14 Nov 2013, 11:25

Also, entweder Du machst das per WM_MOVE oder vielleicht auch per WM_NCLBUTTONUP.
gregster
Posts: 9074
Joined: 30 Sep 2013, 06:48

Re: OnMessage Frage

14 Nov 2013, 12:29

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)
User avatar
fump2000
Posts: 313
Joined: 04 Oct 2013, 17:31

Re: OnMessage Frage

15 Nov 2013, 03:03

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!

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: gero and 20 guests