GetSystemMenu(FALSE)

简介: GetSystemMenu 参数为False时返回当前窗口系统菜单(窗口标题栏右键弹出的移动、大小、最大化等)的句柄。         系统菜单是指我们点击窗体左上角的小图标时所弹出的菜单,其中好象有“恢复”.“移动”.“最大化”.“最小化”.“关闭”这么几个按钮.这个菜单用普通的方法是不能编辑与改变的,但是我们可以通过api函数getsystemmenu来得到它的句柄,然后通过菜单相关的api函数就能改变它了。

GetSystemMenu

参数为False时返回当前窗口系统菜单(窗口标题栏右键弹出的移动、大小、最大化等)的句柄

        系统菜单是指我们点击窗体左上角的小图标时所弹出的菜单,其中好象有“恢复”.“移动”.“最大化”.“最小化”.“关闭”这么几个按钮.这个菜单用普通的方法是不能编辑与改变的,但是我们可以通过api函数getsystemmenu来得到它的句柄,然后通过菜单相关的api函数就能改变它了。

         如果括号中参数为FALSE,GetSystemMenu返回当前使用窗口菜单的拷贝的句柄。该拷贝初始时与窗口菜单相同,但可以被修改。
         如果此参数为TRUE,GetSystemMenu重置窗口菜单到缺省状态。如果存在先前的窗口菜单,将被销毁。

         任何没有用函数GetSystemMenu来生成自己的窗口菜单拷贝的窗口将接受标准窗口菜单。

         窗口菜单上的菜单项发送WM_SYSCOMMAND消息.

在一个对话框工程中:

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
   CString strAboutMenu;
   strAboutMenu.LoadString(IDS_ABOUTBOX);
   if (!strAboutMenu.IsEmpty())
   {
    pSysMenu->AppendMenu(MF_SEPARATOR);//添加一条水平线
    pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);//IDM_ABOUTBOX表示要执行的动作,因为在点击这个菜单项时,将会发送消息,消息中nID就是这个ID,通过比对ID产生相应的动作
   }
}
void CADO_TestDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
   CAboutDlg dlgAbout;
   dlgAbout.DoModal();
}
else
{
   CDialog::OnSysCommand(nID, lParam);
}
}

      只有在主窗口是对话框的MFC应用程序中才会出现这个消息IDM_ABOUTBOX。
       IDM_ABOUTBOX是MFC框架在“InitDialog”函数中加入的“系统菜单”消息,用来弹出“IDD_ABOUTBOX”指定的对话框。
       关于((nID & 0xFFF0) == IDM_ABOUTBOX):
       在MSDN中SysCommand的帮助中,有这样一段:
       In WM_SYSCOMMAND messages, the four low-order bits of the nID parameter are used internally by Windows. When an application tests the value of nID, it must combine the value 0xFFF0 with the nID value by using the bitwise-AND operator to obtain the correct result.  
       即nID的低四位是Windows内部用的,应用程序在检测这个ID时,必须用 0xFFF0与nID相与,屏蔽低四位,根据相与的结果来产生相应的动作

目录
相关文章
|
存储 供应链 算法
《数学模型(第五版)》学习笔记(2)第3章 简单的优化模型 第4章 数学规划模型
《数学模型(第五版)》学习笔记(2)第3章 简单的优化模型 第4章 数学规划模型
396 1
|
小程序 JavaScript 前端开发
【经验分享】如何获取任意小程序appId及页面路径
【经验分享】如何获取任意小程序appId及页面路径
1352 8
|
数据采集 小程序 Python
搞定短视频!批量下载快手视频(附源码)
相信大家都接触了短视频平台,比如某音、某手等平台,竟然大家都熟悉了,那么今天辰哥分享的技术是:在某手上搜索视频,并实现下载!
1601 0
|
8月前
|
前端开发 数据可视化 安全
82.7K star!大气炫酷UI开源项目,超级火!
shadcn/ui 是一款基于 Radix UI 和 Tailwind CSS 构建的现代化 UI 组件库,专为追求设计品质与开发效率的开发者打造。不同于传统组件库,它提供完全可定制的组件代码模板,让开发者既能享受开箱即用的便利,又能保持对设计系统的完全掌控。
304 13
|
4月前
|
人工智能 供应链 API
降本90%的秘密:开放银行API如何让电商分账系统“自动跑”?
在数字经济时代,开放银行与电商API的深度融合正在重塑支付清算与分账系统。通过标准化接口,银行服务与电商生态实现数据互通、流程自动化与资金高效流转,构建“银行即服务”(BaaS)新生态。本文从技术原理、协同场景、典型案例与未来趋势四方面,解析其在支付清算与分账系统中的创新应用与发展方向。
|
运维 监控 关系型数据库
运维实战:Windows服务挂掉了怎么办,通过Bat脚本实现自动重启
本文介绍了如何使用Bat脚本自动监控并重启Windows服务器上的挂掉服务,例如MySQL,以避免在假期等情况下需要紧急处理问题。首先,创建一个Bat脚本,设定每小时检查一次服务状态,如果服务停止则自动重启。脚本内容包括检查服务是否运行并根据状态执行相应操作。同时,脚本中包含了确保以管理员权限运行的代码。 脚本需设置为ANSI编码以防止乱码。推荐将Bat脚本封装为Windows服务以保证稳定运行,提供了使用NSSM工具、Windows服务程序和开源的Java工具winsw将批处理脚本转化为服务的方法。这些方法可以确保服务在后台可靠运行,即使在服务意外停止时也能自动恢复。
ly~
|
缓存 监控 编译器
如何优化 SDL 图形库在不同系统中的性能
SDL(Simple DirectMedia Layer)是一个跨平台的多媒体开发库,用于优化不同系统中的图形库性能。在银河麒麟系统中,通过SDL渲染模式提升视频监控客户端性能,支持更多播放路数。优化方法包括:1) 图像加载时使用SDL_ConvertSurface转换图像格式,避免内存中存在多份拷贝;2) 在VSCode下配置SDL时,合理设置编译器选项和项目架构,减少API调用带来的性能开销;3) 使用SDL库在景嘉微7200显卡上优化渲染性能,提高播放路数。综合考虑图像加载优化、系统特性利用及硬件兼容性,以实现最佳性能。
ly~
723 6
|
存储 缓存 Linux
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(三)--实时与非实时数据交互
本文介绍了Xenomai中的XDDP(Xenomai Distributed Data Protocol)通信机制,XDDP用于实时和非实时进程之间的数据交换。XDDP在Xenomai内核中涉及的数据结构和管理方式,以及创建XDDP通道后的实时端和非实时端连接过程。
648 0
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(三)--实时与非实时数据交互
|
存储 传感器
Landsat遥感影像数据的批量下载:USGS
本文介绍在USGS网站批量下载Landsat系列遥感影像的方法~
1182 1
Landsat遥感影像数据的批量下载:USGS
|
小程序
微信小程序内部跳到外部小程序
微信小程序内部跳到外部小程序