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

Code: Alles auswählen

#SS_NOTIFY
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 :mrgreen:
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