xiehuahere 发表于 2011-11-30 11:08:02

【已解决】没找到 $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】没想到这么快就解决了。下次给自己规定个提问的时限:折腾超过半天再来提问。

afan 发表于 2011-11-30 12:07:09

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:13:31

本帖最后由 xiehuahere 于 2011-11-30 13:14 编辑

回复 2# afan


   这都被你猜出来了。。。 也忒强了~~
   谢谢关注!
   
   我在 MSDN 上找到了相关定义:
   http://msdn.microsoft.com/en-us/library/ms647636(VS.85).aspx
   
   这些的确不是由AutoIt来定义的,所以帮助里不写也理所当然。

nivisde 发表于 2011-11-30 14:27:08

操作完成之后在把样式改成可用不行吗?
页: [1]
查看完整版本: 【已解决】没找到 $MF_ENABLED 的定义,如何使关闭按钮的状态从灰化还原为正常?