Seite 1 von 1
Textlabel WS_EXPARENTDRAG
Verfasst: 27.08.2012 21:21
von lite
Hallo
Hätte 2 Fragen zum Thema TextLabel.
Wie kann man einem Textlabel das WS_EXPARENTDRAG Style geben.
1. Frage:
---------
TextGadget(3, 10, 10, 250, 20, "TextLabel")
Handle = GadgetID(3)
SetWindowLong_(Handle,#GWL_EXSTYLE,GetWindowLong_(Handle,#GWL_EXSTYLE)&~ $00100000)
Mein Beispiel funktioniert nicht.
2. Frage:
--------
Wie kann man ein Textlabel per Mausklick dazu bringen, einen Windowsevent() auszulösen ?
Bei anderen Programmiersprachen ist das ohne Probleme möglich.
Grüße
lite
Re: Textlabel WS_EXPARENTDRAG
Verfasst: 27.08.2012 21:24
von RSBasic
Also:
Code: Alles auswählen
EnableExplicit
Define EventID
If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
TextGadget(1, 10, 10, 100, 20, "Hallo", #SS_NOTIFY)
Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_Gadget
Select EventGadget()
Case 1
Debug "Klick"
EndSelect
EndIf
If EventID = #PB_Event_CloseWindow
End
EndIf
ForEver
EndIf
Re: Textlabel WS_EXPARENTDRAG
Verfasst: 27.08.2012 21:26
von ts-soft
Aber was ist jetzt: WS_EXPARENTDRAG
kennt ja nicht mal die MSDN?
Re: Textlabel WS_EXPARENTDRAG
Verfasst: 27.08.2012 21:39
von Kiffi
ts-soft hat geschrieben:Aber was ist jetzt: WS_EXPARENTDRAG
ich vermute mal, dass WS_EX_PARENTDRAG gemeint ist. Das
kommt wohl aus der AutoIt-Szene.
Grüße ... Kiffi
Re: Textlabel WS_EXPARENTDRAG
Verfasst: 27.08.2012 21:51
von ts-soft
Danke,
da kann man ja lange suchen
Da es ein Fensterstil ist (zumindest dem Namen nach), verstehe ich sowieso
den Zusammenhang mit einem Control nicht so ganz. Vielleicht erleuchtet uns
der Threadsteller noch.
Re: Textlabel WS_EXPARENTDRAG
Verfasst: 28.08.2012 06:38
von lite
Danke an RSBasic, genau dannach hab ich gesucht.
2.Frage:
Mit WS_EX_PARENTDRAG kann das Windowsfenster verschoben werden, den man das Attribute gibt. Ist sehr nützlich.
Hier Beispielcode in .au3.
Code: Alles auswählen
#include <GUIConstantsEx.au3>
GUICreate("My GUI") ; will create a dialog box that when displayed is centered
$test=GUICtrlCreateLabel ("Label ", 100, 100, 713, 46,-1)
$hwnd = GUICtrlGetHandle($test)
$GWL_EXSTYLE = 0xFFFFFFEC
_WinAPI_SetWindowLong($hWnd, $gwl_exstyle, $GUI_WS_EX_PARENTDRAG)
GUISetState(@SW_SHOW) ; will display an empty dialog box
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
exit
Func _WinAPI_SetWindowLong($hWnd, $iIndex, $iValue)
; _WinAPI_SetLastError(0) ; as suggested in MSDN
Local $sFuncName = "SetWindowLongW"
If @AutoItX64 Then $sFuncName = "SetWindowLongPtrW"
Local $aResult = DllCall("user32.dll", "long_ptr", $sFuncName, "hwnd", $hWnd, "int", $iIndex, "long_ptr", $iValue)
If @error Then Return SetError(@error, @extended, 0)
Return $aResult[0]
EndFunc ;==>_WinAPI_SetWindowLong
Grüße
Lite