Сразу извиняюсь за ламерский вопрос.
Вот есть GUICtrlGetHandle(controlID), по которой можно узнать handle, зная controlID. А как сделать обратно?
Узнать controlID по Handle
-
SyDr
-
san45
Re: Узнать controlID по Handle
Это если юзать GuiCtrlGreate... а _GuiCtrlGreate... (UDF) возвращают handle.
Вот в этом примере $slider2 не будет ловиться.
Код:
Можно использовать GUIGetMsg(1) и $msg[2], но у меня много элементов с controlID, а переделывать не хочется. Легче конвертнуть сабж, еси возможно.
зы. использвал
Вот в этом примере $slider2 не будет ловиться.
Код:
Код: Выделить всё
#include
#include
#include
Example()
Func Example()
Local $slider1, $button, $msg
$hGUI = GUICreate("(UDF Created) Slider Create", 350, 100)
$slider1 = GUICtrlCreateSlider(2, 2, 300, 20)
$slider2 = _GUICtrlSlider_Create($hGUI, 2, 50, 300, 20, BitOR($TBS_TOOLTIPS, $TBS_AUTOTICKS))
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $slider1
MsgBox(0,"","slider1")
Case $slider2
MsgBox(0,"","(UDF Created) Slider")
EndSwitch
WEnd
EndFunc ;==>ExampleМожно использовать GUIGetMsg(1) и $msg[2], но у меня много элементов с controlID, а переделывать не хочется. Легче конвертнуть сабж, еси возможно.
зы. использвал
Код: Выделить всё
а серавно без подцветки [img]images/smilies/sad.gif[/img]-
Creat0R
Re: Узнать controlID по Handle
Цитата san45:
как сделать обратно?
Код:
Цитата san45:
использвал
как сделать обратно?
Узнать controlID по Handle
Код:
Код: Выделить всё
Func _GUICtrlGetID($hWnd)
Local $aRet = DllCall("user32.dll", "int", "GetDlgCtrlID", "hwnd", $hWnd)
Return $aRet[0]
EndFuncЦитата san45:
использвал
Код: Выделить всё
а серавно без подцветки [url=viewtopic.php?p=137194#p137194]»[/url]
А кто сказал что оно должно быть с подсветкой? Для этого используется специальная утилита [url=http://creator-lab.ucoz.ru/load/3-1-0-18]Au3ToPost[/url].
Но с GUIGetMsg оно работать не будет, и не должно, там ControlID серийный, т.е начинается с 10000, и GUIGetMsg его не обрабатывает. Для [b]_GUICtrlSlider_Create[/b] используется обработчик сообщении WM_NOTIFY:
Код: [url=#][/url]
[code]#include
#include
#include
;
Global $iSlider_Event = 0
$hGUI = GUICreate("(UDF Created) Slider Create", 350, 100)
$slider1 = GUICtrlCreateSlider(2, 2, 300, 20)
$slider2 = _GUICtrlSlider_Create($hGUI, 2, 50, 300, 20, BitOR($TBS_TOOLTIPS, $TBS_AUTOTICKS))
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $slider1
MsgBox(0,"","slider1")
EndSwitch
If $iSlider_Event Then
$iSlider_Event = 0
MsgBox(0,"","(UDF Created) Slider")
EndIf
WEnd
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndSlider
$hWndSlider = $slider2
If Not IsHWnd($slider2) Then $hWndSlider = GUICtrlGetHandle($slider2)
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hWndSlider
Switch $iCode
Case $NM_RELEASEDCAPTURE ; The control is releasing mouse capture
$iSlider_Event = 1
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc