【已解决】没找到 $MF_ENABLED 的定义,如何使关闭按钮的状态从灰化还原为正常?
本帖最后由 xiehuahere 于 2011-11-30 13:17 编辑风行者 在 窗口标题样式例子 中提供了灰化窗口标题关闭按钮的例子 “关闭按钮不可用”。
代码如下:#include <WindowsConstants.au3>
Const $SC_CLOSE = 0xF060
Const $MF_BYCOMMAND = 0x00000000
Const $MF_GRAYED = 0x00000001
$Form = GUICreate("关闭按钮不可用")
$HWND = DllCall("User32.dll","HANDLE","GetSystemMenu","HWND",$Form,"BOOL",False) ;得到菜单句柄
DllCall("User32.dll","BOOL","EnableMenuItem","HANDLE",$HWND,"UINT",$SC_CLOSE,"UINT",BitOR($MF_BYCOMMAND,$MF_GRAYED))
GUISetState()
Do
Until GUIGetMsg() = -3现在想在某一操作过程中灰化关闭按钮,操作完成后再还原。
但找遍了头文件 <GuiMenu.au3> 及其内部包含的所有文件,都没有找到定义$MF_ENABLED的地方。在AutoIt3根目录下全部搜索,也没找到。
在此请教高人。
如果没有此定义,如何还原关闭按钮的状态呢?
【PS】没想到这么快就解决了。下次给自己规定个提问的时限:折腾超过半天再来提问。 Local Const $SC_CLOSE = 0xF060
Local $Form = GUICreate('设置关闭按钮')
Local $HWnd = DllCall('User32.dll', 'HANDLE', 'GetSystemMenu', 'HWnd', $Form, 'BOOL', False) ;菜单句柄
Local $bt1 = GUICtrlCreateButton('启用关闭', 100, 100, 150, 25)
Local $bt2 = GUICtrlCreateButton('禁用关闭', 100, 130, 150, 25)
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case -3
Exit
Case $bt1
DllCall('User32.dll', 'bool', 'EnableMenuItem', 'handle', $HWnd, 'uint', $SC_CLOSE, 'uint', 0)
Case $bt2
DllCall('User32.dll', 'bool', 'EnableMenuItem', 'handle', $HWnd, 'uint', $SC_CLOSE, 'uint', 1)
EndSwitch
WEnd不好意思,我是猜的~ 本帖最后由 xiehuahere 于 2011-11-30 13:14 编辑
回复 2# afan
这都被你猜出来了。。。 也忒强了~~
谢谢关注!
我在 MSDN 上找到了相关定义:
http://msdn.microsoft.com/en-us/library/ms647636(VS.85).aspx
这些的确不是由AutoIt来定义的,所以帮助里不写也理所当然。 操作完成之后在把样式改成可用不行吗?
页:
[1]