首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C++中灰度化关闭按钮?

如何在C++中灰度化关闭按钮?
EN

Stack Overflow用户
提问于 2014-03-27 20:07:44
回答 1查看 1.5K关注 0票数 0

如何将C++中的关闭按钮灰色化?有可能吗?我试过了

代码语言:javascript
复制
#define WINVER 0x0500
#include<windows.h>
DeleteMenu(SystemMenu, SC_CLOSE, MF_BYCOMMAND);

但没起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-27 20:12:27

有关如何使用纯Win32或MFCs进行操作,请参见这里的Win32。所有的功劳都归功于他们。我刚写了解释。

此函数将启用或禁用Win32上的菜单选项(以及副作用,关闭按钮):

代码语言:javascript
复制
BOOL EnableCloseButton(const HWND hwnd, const BOOL bState)
{
    HMENU   hMenu;
    UINT    dwExtra;

    if (hwnd == NULL) return FALSE;
    if ((hMenu = GetSystemMenu(hwnd, FALSE)) == NULL) return FALSE;
    dwExtra = bState ? MF_ENABLED : (MF_DISABLED | MF_GRAYED);
    return EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND | dwExtra) != -1;
}

它接受窗口的HWND和关闭按钮所需的状态(真启用,假禁用)。

对于MFC,您可以使用此版本,它接受CWnd而不是HWND:

代码语言:javascript
复制
BOOL EnableCloseButton(const CWnd *wnd, const BOOL bState)
{
    CMenu *menu;

    if (wnd == NULL) return FALSE;
    if ((menu = wnd->GetSystemMenu(FALSE)) == NULL) return FALSE;
    return menu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND | bState ? MF_ENABLED : MF_GRAYED) != -1;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22698131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档