单击控件A会自动生成控件B,如何让控件B再对鼠标的单击事件作出相应?【已解决】
本帖最后由 fenhanxue 于 2015-11-12 03:19 编辑比如我的窗口,一开始,只有button1,单击他,会自动生成button2,
我想实现的效果是,我再鼠标单击button2,会再生成button3
单击button3,会再生成button4
单击button4,会再生成button5
.......
单击button(N-1),会再生成buttonN
(无穷无尽。。。。)
不知道函数应该怎么写?
我只会写到button1创建2,2创建3就不会了。。。求指点啊。。。#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
Dim $Button3
$Form = GUICreate("Form1", 623, 96, 330, 147)
$Button1 = GUICtrlCreateButton("创建2", 1, 1, 48, 25)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$Button2 = GUICtrlCreateButton("创建3", 50, 1, 48, 25)
EndSwitch
WEnd 用消息做就行了。。。 仅针对提问描述Dim $Button1, $i = 0, $x = 50
GUICreate('Form1', 623, 96)
$Button1 = GUICtrlCreateButton('创建2', 1, 1, 48, 25)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button1
$i += 1
$Button1 = GUICtrlCreateButton('创建' & $i + 1, $i * $x, 1, 48, 25)
EndSwitch
WEnd 回复 1# fenhanxue
这样做有什么意义?我觉得除了对研究窗体编程的批量创建控件有点作用外,没什么用了吧?!
#include <WindowsConstants.au3>
Local $iSeq = 0
Local $iNumber = 11 ;每行按钮数量
Local $iSpacingX = 50, $iSpacingY = 30 ;垂直、水平,间距
$Form = GUICreate("test", 623, 296, 330, 147, BitOR($GUI_SS_DEFAULT_GUI, $WS_VSCROLL))
Assign('button' & $iSeq, GUICtrlCreateButton("创建2", 25, 25, 48, 25))
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case 3 To 9999;点击窗口内任一控件
If StringRegExp(GUICtrlRead($nMsg), '^创建\d+$') Then ; 只响应"创建."
If IsHWnd(GUICtrlGetHandle($nMsg + 1)) Then ContinueLoop; 不重复创建
$iSeq += 1
Assign('button' & $iSeq, GUICtrlCreateButton("创建" & ($iSeq + 2), $iSpacingX * Mod($iSeq, $iNumber) + 25, $iSpacingY * Floor($iSeq / $iNumber) + 25, 50, 25))
EndIf
EndSwitch
WEnd
有兴趣还可以移步此帖作进一步研究. 水木子版主就是用的消息模式弄出来的.
http://61.153.183.105/forum.php?mod=viewthread&tid=33380&highlight=%C5%FA%C1%BF%2B%BF%D8%BC%FE 回复 4# user3000
明白了,多谢啦,Assign 和 GUICtrlSetOnEvent 这2个函数帮了大忙 回复 4# user3000
其实怎么说呢,也不是一点用没有,可以做个下棋的游戏
页:
[1]