求助,怎样让一个窗口或者控件始终占有焦点,直到该窗口销毁~
不考虑使用GUISetState目前我尝试注册了WM_COMMAND消息
伪代码如下:
if $WM_KILLFOCUS And (句柄=窗口句柄 or 句柄 = 控件句柄) then return
运行未得到想要的结果
求大家指点下。
@afan,A大,我搜索到一个帖子,看你回过一个类似的贴。求指点~~ 回复 2# afan
尝试着写了一下,基本能实现功能,但未达预期效果。
求A大帮看下,代码怎么改一下。
Func _WM_ACTIVATE($hWnd, $Msg, $wParam, $lParam)
if $lParma <> $hForm then ;$hForm窗体句柄
Winactive($hForm)
GUICtrlSetState($Inptu,@GUI_FOCUS) ;$hForm控件句柄
Endif
EndFunc
注册 WM_ACTIVATE 消息 from MSDN
While processing this message, do not make any function calls that display or activate a window. This causes the thread to yield control and can cause the application to stop responding to messages. For more information, see Message Deadlocks. 细节自行研究吧
Global $hForm = GUICreate('')
Global $Input = GUICtrlCreateInput('', 100, 100, 120, 20)
GUISetState()
GUIRegisterMsg('0x0006', '_WM_ACTIVATE')
While GUIGetMsg() <> -3
WEnd
Func _WM_ACTIVATE($hWnd, $msg, $wParam, $lParam)
If Not $wParam Then
WinActivate($hForm)
GUICtrlSetState($Input, 0x100)
EndIf
EndFunc ;==>WM_ACTIVATE 回复 5# afan
{:face (356):}这种方式不保险,,,连续快速在其他窗口点击鼠标。。。。会导致程序获取不到焦点。。 回复 6# yamakawa
有两个字叫细节
页:
[1]