清泛IT社区App Inventor 2 中文社区

搜索

扫码访问移动社区 移动社区,您的掌上技术专家

关注我,精彩不错过! 关注我,精彩不错过!

扫码安装最新版AI伴侣 最新版AI伴侣v2.72

Aia Store .aia 源码一站式解决方案 发布日志AI2连接测试ai2Starter模拟器

开通会员送SVIPApp Inventor 2 拓展有奖征文 VIP会员享专有教程,免费赠送基础版*技术支持服务! AI2入门必读中文文档中文教程IoT专题

查看: 808|回复: 0
打印 上一主题 下一主题

c++关闭按钮灰掉

  • TA的每日心情
    开心
    2024-02-17 18:16
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    546

    主题

    715

    帖子

    1万

    积分

    管理员

    这里没有广告...

    Rank: 9Rank: 9Rank: 9

    积分
    10709
    QQ
    跳转到指定楼层
    楼主
    发表于 2016-04-07 10:48:44 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

    通过系统菜单灰掉:
    1. //获得系统菜单
    2. CMenu *pMenu = GetSystemMenu(false);
    3. //获得关闭按钮ID
    4. UINT ID = pMenu->GetMenuItemID(pMenu->GetMenuItemCount()-1);
    5. //使关闭按钮无效
    6. pMenu->EnableMenuItem(ID,MF_GRAYED);
    复制代码
    启用:
    1. //获得系统菜单
    2. CMenu *pMenu = GetSystemMenu(false);
    3. //获得关闭按钮ID
    4. UINT ID = pMenu->GetMenuItemID(pMenu->GetMenuItemCount()-1);
    5. //使关闭按钮可用
    6. pMenu->EnableMenuItem(ID,MF_ENABLED);
    复制代码

    同理,最大化、最小化按钮灰掉&启用代码如下:
    1. //禁用最小化按钮
    2. void CMainFrame::OnMenudismin()
    3. {
    4.         //获得窗口风格
    5.         Style = ::GetWindowLong(m_hWnd,GWL_STYLE);
    6.         //设置新的风格
    7.         Style &= ~(WS_MINIMIZEBOX);
    8.         ::SetWindowLong(m_hWnd,GWL_STYLE,Style);
    9.         GetWindowRect(&Rect);
    10.         //重画窗口边框
    11.         ::SetWindowPos(m_hWnd,HWND_TOP,Rect.left,Rect.top,Rect.Width(),Rect.Height(),SWP_DRAWFRAME);
    12. }
    13. //使最小化按钮有效
    14. void CMainFrame::OnMenuablemin()
    15. {
    16.         //获得窗口风格
    17.         Style = ::GetWindowLong(m_hWnd,GWL_STYLE);
    18.         //设置新的风格
    19.         Style |= WS_MINIMIZEBOX;
    20.         ::SetWindowLong(m_hWnd,GWL_STYLE,Style);
    21.         GetWindowRect(&Rect);
    22.         //重画窗口边框
    23.         ::SetWindowPos(m_hWnd,HWND_TOP,Rect.left,Rect.top,Rect.Width(),Rect.Height(),SWP_DRAWFRAME);
    24. }


    25. //禁用最大化按钮
    26. void CMainFrame::OnMenudismax()
    27. {
    28.         //获得窗口风格
    29.         Style = ::GetWindowLong(m_hWnd,GWL_STYLE);
    30.         //设置新的风格
    31.         Style &= ~(WS_MAXIMIZEBOX);
    32.         ::SetWindowLong(m_hWnd,GWL_STYLE,Style);
    33.         GetWindowRect(&Rect);
    34.         //重画窗口边框
    35.         ::SetWindowPos(m_hWnd,HWND_TOP,Rect.left,Rect.top,Rect.Width(),Rect.Height(),SWP_DRAWFRAME);
    36. }
    37. //使最大化按钮有效
    38. void CMainFrame::OnMenuablemax()
    39. {
    40.         //获得窗口风格
    41.         Style = ::GetWindowLong(m_hWnd,GWL_STYLE);
    42.         //设置新的风格
    43.         Style |= WS_MAXIMIZEBOX;
    44.         ::SetWindowLong(m_hWnd,GWL_STYLE,Style);
    45.         GetWindowRect(&Rect);
    46.         //重画窗口边框
    47.         ::SetWindowPos(m_hWnd,HWND_TOP,Rect.left,Rect.top,Rect.Width(),Rect.Height(),SWP_DRAWFRAME);
    48. }
    复制代码


    清泛网 - 专注IT技能提升
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    © 2024 tsingfun.com, Inc.  沪ICP备2020034476号-1  沪公网安备31011702000040号

    GMT+8, 2024-11-23 09:47 , Processed in 0.024959 second(s), 42 queries .