风林 发表于 2010-12-10 17:07:35

是否可以在OnEvent 模式的窗体中设置某个键为消息循环模式?

本帖最后由 风林 于 2010-12-10 17:09 编辑

简单地说,就是在一个设置了OnEvent模式的窗体中设置一个复选键为消息循环模式,当该键被选中时弹出另一个窗口,能让用户选择其子选项。大家有什么办法没有?

yhxhappy 发表于 2010-12-10 18:02:13

楼主贴些代码出来才好分析嘛#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Opt("GUIOnEventMode", 1); 切换到 OnEvent 模式

$Form1 = GUICreate("Form1", 300, 200)
GUISetOnEvent($GUI_EVENT_CLOSE, "GUI")
$Checkbox = GUICtrlCreateCheckbox("点击", 48, 56, 97, 17)
GUICtrlSetOnEvent(-1, "GUI")
$Label1 = GUICtrlCreateLabel("选择的子项目:", 150, 40, 88, 60)

$Form2 = GUICreate("Form1", 208, 203)
GUISetOnEvent($GUI_EVENT_CLOSE, "GUI")
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 32, 40, 97, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 32, 80, 97, 17)
$Checkbox3 = GUICtrlCreateCheckbox("Checkbox3", 32, 120, 97, 17)


Local $t = "选择的子项目:"

GUISetState(@SW_SHOW, $Form1)

While 1

WEnd

Func GUI()
        Switch @GUI_CtrlId
        Case $GUI_EVENT_CLOSE
                If @GUI_WINHANDLE = $Form1 Then
                        Exit
                ElseIf @GUI_WINHANDLE = $Form2 Then
                        If GUICtrlRead($Checkbox1) = 1 Then        $t &= @CRLF & "Checkbox1"
                        If GUICtrlRead($Checkbox2) = 1 Then        $t &= @CRLF & "Checkbox2"
                        If GUICtrlRead($Checkbox3) = 1 Then        $t &= @CRLF & "Checkbox3"
                        GUICtrlSetData($Label1, $t)
                        GUISwitch($Form1)
                        GUISetState(@SW_HIDE, $Form2)
                EndIf
        Case $Checkbox
                If GUICtrlRead($Checkbox) = 1 Then GUISetState(@SW_SHOW, $Form2)
        EndSwitch
EndFunc

风林 发表于 2010-12-14 09:58:19

你好,你上面的好像是从消息循环模式转换到OnEvent 模式,但我需要的是在OnEvent模式的窗体中单独设置某个键为消息循环模式。

ceoguang 发表于 2010-12-14 14:47:39

GUIRegisterMsg
页: [1]
查看完整版本: 是否可以在OnEvent 模式的窗体中设置某个键为消息循环模式?