Weis einer wie man einen Dopppelklick in einer Listbox von den au3 Lib auswertet ? also darauf reagiert?
doppelklick
-
- [ offen ]
-
Tam0r -
18. Juli 2007 um 01:17 -
Geschlossen -
Erledigt
-
-
ich hab was fürn doppelklick... kannst mal austesten...
[autoit]
[/autoit]
Func _DoubleClickOnListView($hWndGUI, $MsgID, $wParam, $lParam)
Local $tagNMHDR, $event, $hwndFrom, $code
$tagNMHDR=DllStructCreate("int;int;int", $lParam)
If @error Then Return
$event=DllStructGetData($tagNMHDR, 3)
If $wParam=$ListView Then
If $event=$NM_DBLCLK Then
If GUICtrlRead(GUICtrlRead($LISTVIEW))<>"0" Then
$LISTDATA=GUICtrlRead(GUICtrlRead($LISTVIEW))
GUICtrlSetData($HIER_DIE_DATEN_HINKOPIEREN, $LISTDATA[1])
EndIf
EndIf
EndIf
$tagNMHDR=0
$event=0
$lParam=0
EndFuncdas hier brauchst auch noch...
[autoit]
[/autoit]
Global Const $NM_FIRST = 0
Global Const $NM_DBLCLK = -3
Global $dll = DllOpen("user32.dll")sowie...
[autoit]
[/autoit]
GUIRegisterMsg(0x004E, "_DoubleClickOnListView") -
ich glaube die ähnliche funktion habe ich auch. Werde dies aufjedenfall auch nochmal Probieren aber, wie gesagt ich brauche eine die auch mit au3 Lib funktioniert...
-
Irgendwoher habe ich dieses hier
[autoit]
[/autoit][autoit][/autoit][autoit]
;Register WM_NOTIFY events
GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events").
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
.
.; WM_NOTIFY event handler
[/autoit][autoit][/autoit][autoit][/autoit]
Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam)
#forceref $hWndGUI, $MsgID, $wParam
Local $tagNMHDR, $event, $hwndFrom, $code
$tagNMHDR = DllStructCreate("int;int;int", $lParam);NMHDR (hwndFrom, idFrom, code)
If @error Then Return
$event = DllStructGetData($tagNMHDR, 3)
Select
Case $wParam = $suche_list
Select
;Case $event = $NM_CLICK
;ConsoleWrite("SingleClick" & @LF)
Case $event = $NM_DBLCLK
$text = _GUICtrlListViewGetItemText ($suche_list, _GUICtrlListViewGetSelectedIndices($suche_list))
$text = StringLeft($text,StringInStr($text,"|")-1)
up_anzeigen($text)
;MsgBox(0,"Double Clicked", _GUICtrlListViewGetItemText ($suche_list, _GUICtrlListViewGetSelectedIndices($suche_list)))
EndSelect
EndSelect
$tagNMHDR = 0
$event = 0
$lParam = 0
EndFunc ;==>WM_Notify_EventsLeider habe ich gerade keine Zeit das weiter auszuholen - habe es kurzerhand aus dem Script kopiert an dem ich gerade arbeite - vielleicht nützt es Dir aber was....
Grüsse
Carsten -
mein fehler war eigentlich in der hilde richtig drin.
[autoit]
[/autoit][autoit][/autoit][autoit]
#include <A3LListbox.au3>Global $hGUI, $hList, $iI
[/autoit][autoit][/autoit][autoit]; Create GUI
[/autoit][autoit][/autoit][autoit]
$hGUI = GUICreate("List Box", 400, 296)
$hList = _Listbox_Create($hGUI, 2, 2, 396, 294)
GUISetState(); Capture messages
[/autoit][autoit][/autoit][autoit]
GUIRegisterMsg($WM_COMMAND, "_Listbox_WM_COMMAND"); Add strings
[/autoit][autoit][/autoit][autoit]
_ListBox_BeginUpdate($hList)
for $iI = 1 to 9
$sText = StringFormat("%03d : Random string", Random(1, 100, 1))
_Listbox_AddString($hList, $sText)
next
_ListBox_EndUpdate($hList); Click the fourth item in the list
[/autoit][autoit][/autoit][autoit]
_Listbox_ClickItem($hList, 3); Loop until user exits
[/autoit]
do
until GUIGetMsg() = $GUI_EVENT_CLOSE^ -
Habe diese Funtion in einer 64bit Applikation eingebaut und es funzt nicht.
In einer 32bit-Exe gibt es keine Probleme.
Anscheind wird ein komischer Wert beim int geliefert...
Hat jemand eine Idee ?
-
Klar, die NMHDR ist ja falsch aufgebaut... Die struct ist so richtig:
[autoit]$tagNMHDR = "hwnd hWndFrom;uint_ptr IDFrom;uint Code"
[/autoit]
-> http://msdn.microsoft.com/en-us/library/bb775514(VS.85).aspx
//Edit: wobei die jetzt in der StructureConstants drin ist und der Thread von 2007...
oder, ne. in der StructureConstants ist auch der uint_ptr nur int... also falsch für 64-bit -
Danke Andi,
habe hier schon gepostet:
http://www.autoitscript.com/forum/index.php?showtopic=84746
Gruss
Geronimo