找回密码
 加入
搜索
查看: 3358|回复: 3

[GUI管理] 【已解决】没找到 $MF_ENABLED 的定义,如何使关闭按钮的状态从灰化还原为正常?

[复制链接]
发表于 2011-11-30 11:08:02 | 显示全部楼层 |阅读模式
本帖最后由 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[0],"UINT",$SC_CLOSE,"UINT",BitOR($MF_BYCOMMAND,$MF_GRAYED))
 
GUISetState()
Do
Until GUIGetMsg() = -3
现在想在某一操作过程中灰化关闭按钮,操作完成后再还原。
但找遍了头文件 <GuiMenu.au3> 及其内部包含的所有文件,都没有找到定义$MF_ENABLED的地方。在AutoIt3根目录下全部搜索,也没找到。
在此请教高人。

如果没有此定义,如何还原关闭按钮的状态呢?

【PS】没想到这么快就解决了。下次给自己规定个提问的时限:折腾超过半天再来提问。
发表于 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[0], 'uint', $SC_CLOSE, 'uint', 0)
                Case $bt2
                        DllCall('User32.dll', 'bool', 'EnableMenuItem', 'handle', $HWnd[0], 'uint', $SC_CLOSE, 'uint', 1)

        EndSwitch
WEnd
不好意思,我是猜的~

评分

参与人数 1贡献 +1 收起 理由
xiehuahere + 1 大胆猜想,思路正确

查看全部评分

 楼主| 发表于 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来定义的,所以帮助里不写也理所当然。
发表于 2011-11-30 14:27:08 | 显示全部楼层
操作完成之后在把样式改成可用不行吗?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 23:53 , Processed in 0.083506 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表