她开玩笑地说了句:挺可惜的,我的青春平平淡淡,站在她身旁的男生红着眼眶:你惊艳了我至少三年。。。

----网易云热评

一、修改系统菜单项

1、在create消息中处理

 case WM_CREATE:              获取系统菜单(hWnd);              break;

2、系统菜单的修改

AppendMenu添加

DeleteMenu删除

void 获取系统菜单(HWND hWnd){       //获取系统菜单句柄,false表示现在的句柄       HMENU 系统菜单句柄 = GetSystemMenu(hWnd, FALSE);       //删除或增加菜单项       for (int i = 0; i < 6; i++)       {              DeleteMenu(系统菜单句柄, 0, MF_BYPOSITION);//根据索引删除       }       AppendMenu(系统菜单句柄, MF_SEPARATOR, 0, L"");       AppendMenu(系统菜单句柄, MF_STRING, 1001, L"哎呦");}

3、系统菜单命令响应

WM_SYSCOMMAND响应菜单命令WPARAM的LOWORD是命令IDcase WM_SYSCOMMAND:              系统菜单消息处理(hWnd, wParam);              break;void 系统菜单消息处理(HWND hWnd,WPARAM wParam){       switch (LOWORD(wParam))//获取被点击系统菜单项id       {       case 1001:              MessageBox(hWnd, L"哎呦", L"aiaiaiyoyo", MB_OK);              break;       }}

二、右键弹出菜单

1、创建菜单右键菜单是一个弹出式菜单,使用CreatePopupMenu创建。

HMENU 菜单句柄 = CreatePopupMenu();

2、增加菜单项

AppendMenu(菜单句柄,MF_STRING,1002,L"哎");       AppendMenu(菜单句柄, MF_SEPARATOR, 0, L"");       AppendMenu(菜单句柄, MF_STRING, 1003, L"呦");

3、显示弹出式菜单

TrackPopupMenu(菜单句柄, TPM_CENTERALIGN | TPM_VCENTERALIGN, LOWORD(lParam),  HIWORD(lParam), 0, hWnd, NULL);BOOL TrackPopupMenu(       HMENU hMenu,      //菜单句柄       UINT uFlags,             //显示方式       int x,                   //水平位置,屏幕坐标系       int y,                   //垂直位置,屏幕坐标系       int nReserved,           //保留,必须0       HWND hWnd,        //处理菜单消息的窗口句柄       CONST RECT* prcRect //NULL,忽略); TrackPopupMenu是阻塞函数

4、命令处理WM_COMMAND,与窗口菜单一致 如果TrackPopupMenu设置了TPM_RETURNCMD选项,那么点击的菜单项ID通过函数的返回值获取。

不设置的情况

case WM_COMMAND:              右键消息处理(hWnd,wParam);              break;void 右键消息处理(HWND hWnd,WPARAM wParam){       switch (LOWORD(wParam))       {       case 1002:              MessageBox(hWnd, L"aiaiaiaiia", L"youyouyou", MB_OK);              break;       }}

设置情况

BOOL ret=TrackPopupMenu(菜单句柄, TPM_CENTERALIGN |  TPM_VCENTERALIGN|TPM_RETURNCMD, pt.x, pt.y, 0, hWnd, NULL);       switch (ret)       {       case 1002:              MessageBox(hWnd,L"没有command消息",L"aa",MB_OK);              break;       }

4、菜单项的状态 WM_INITMENUPOPUP,按照弹出菜单处理

三、菜单处理位置

1、鼠标右键抬起

WM_RBUTTONUP 鼠标右键消息窗口坐标系坐标,要使用需要转换成屏幕坐标系ClientToScreen 客户端坐标转屏幕坐标ScreenToClient        POINT pt = {0};       pt.x = LOWORD(lParam);       pt.y = HIWORD(lParam);       ClientToScreen(hWnd, &pt);

2、鼠标右键抬起后,不用坐标转换

WM_CONTEXTMENU     WParam - 右键点击的窗口句柄     LPARAM - LOWORD X坐标,屏幕坐标系                         HIWORD Y坐标,屏幕坐标系     WM_CONTEXTMENU消息是在WM_RBUTTONUP消息之后产生。void 右键抬起后(HWND hWnd,LPARAM lParam){       //1、创建右键菜单       HMENU 菜单句柄 = CreatePopupMenu();       //2、增加菜单项       AppendMenu(菜单句柄, MF_STRING, 1002, L"哎");       AppendMenu(菜单句柄, MF_SEPARATOR, 0, L"");       AppendMenu(菜单句柄, MF_STRING, 1003, L"呦");       //3、显示右键菜单       //坐标出现在垂直水平中央       BOOL ret = TrackPopupMenu(菜单句柄, TPM_CENTERALIGN | TPM_VCENTERALIGN |  TPM_RETURNCMD,  LOWORD(lParam),  HIWORD(lParam), 0, hWnd, NULL);       switch (ret)       {       case 1002:              MessageBox(hWnd, L"没有command消息", L"aa", MB_OK);              break;       }}

欢迎关注公众号:顺便编点程

win32编程 -- 系统菜单及右键菜单相关推荐

  1. win10系统如何删除右键菜单中的上传到百度网盘

    win10系统如何删除右键菜单中的上传到百度网盘 https://jingyan.baidu.com/article/e4d08ffde65bb44fd3f60d45.html

  2. 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜单 快捷方式...

    {=================================================================     功    能:             创建 桌面.发送到 ...

  3. Win32_16来看看标准菜单和右键菜单的玩法

    日常应用中,菜单主要分为两种:(1) 标准菜单(处于应用程序菜单栏处的菜单)    (2)右键快捷菜单 几乎你所见过或使用过的软件中,都有它俩儿 为应用程序添加它们的基本步骤: (1)用代码或者IDE ...

  4. 右键菜单_右键菜单太长会导致电脑卡顿?轻松删除右键菜单无用项

    ​ 有些人的电脑桌面看起来很整洁有序,结果点一下右键要卡 2秒,弹出来的菜单比脸都长,新建一个文件夹都要找半天. 右键菜单一直是各大软件刷存在感的好地方,因为比起桌面.任务栏和开始菜单,右键菜单使用频 ...

  5. DIY福音:Firefox菜单及右键菜单ID大全

    每一个折腾Firefox的Diyer都是上辈子折翼的天使,致自己! 打磨Firefox界面的时候最多的就隐藏一些平常根本用不上的一些菜单,常规的做法就是安装DOM Inspector扩展右键查找大法寻 ...

  6. Win11将右键菜单改回Win10右键菜单样式(右键菜单默认展开)

    1,首先用鼠标右键点击"开始"按钮(或者按Win+X键),点击 Windows 终端(管理员) 2,在终端应用程序里粘贴下面的代码 win10右键菜单(展开) reg add &q ...

  7. Windows7系统下为右键菜单设置背景

    昨天为自己的电脑重新装了一次系统(windows7),然后下载了一个Win7优化大师优化一下系统,其间发现了一个了可以为右键设置背景的功能,于是试了试,效果还不错,拿出来和大家分享一下: 这个功能设置 ...

  8. Win10系统怎么在右键菜单中添加命令提示符

    大家都知道,说到命令提示符,在最早的图形化Windows系统就开始有了,对于一些技术控用户来说,平时经常会使用到命令提示符功能.那么我们要如何将桌面右键菜单添加命令提示符选项呢?下面分享一下Win10 ...

  9. win11系统恢复Win10右键菜单的方法

    恢复Win10右键菜单的方法: 1.Win+R运行CMD 2.输入: reg add HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c9 ...

最新文章

  1. 安装Linux后修改grub默认启动选项
  2. php 字符串包含另一个字符串_每天一个PHP语法二字符串使用及内部结构
  3. openSUSE中启用apache mod_rewrite
  4. nacos 本地测试_Nacos集群配置实例(windows下测试)
  5. linux系统账户口令管理
  6. ROS入门笔记(十一):编写与测试简单的Service和Client (Python)
  7. 我的 2018 年终总结
  8. asp access物流基础信息查询平台毕业设计成品
  9. ADO方法访问数据库的封装接口
  10. 使用iText处理pdf文件的入门级教程
  11. excel复选框_在Excel公式中使用复选框结果
  12. 艾默生首席执行官范大为退休;液化空气将新建生产装置为京东方供应气体 | 美通企业日报...
  13. VCL组件DevExpress VCL v21.1 - 全新的甘特图控件
  14. dsp6657的helloworld例程测试-第一篇
  15. setTimeout expects a function as first argument but got undefined
  16. Class 2 基于ECS快速搭建Docker环境
  17. Python - 删除print()中的空格
  18. 6、Ordinary keyboard
  19. 比例导引律Matlab程序,是否有关于比例导引方面的仿真程序?
  20. CelebA数据集下载|HTTPSConnectionPool(host=‘drive.google.com‘, port=443)|RuntimeError:Dataset not found

热门文章

  1. 智能优化算法:天牛须搜索算法
  2. 采访亚马逊云科技顾凡:我们的智能湖仓是架构,而非产品,更非湖仓一体
  3. media响应式布局
  4. Proxmox ve(PVE) 显示CPU和硬盘温度、UPS信息
  5. S3C6410触摸屏驱动分析
  6. Ubuntu 18.04 分辨率设置
  7. jquery给标签添加属性或获取属性值attr方法,移除属性removeAttr方法
  8. 百度出品,Nature重磅 -- 优化的mRNA设计算法可改善mRNA的稳定性和免疫原性
  9. [日推荐]『车轮查违章』车辆违章怎么办?这个小程序能帮你!
  10. 全国计算机考试题库wps基本操作,2021年全国计算机等级考试(一级计算机基础及WPS Office应用)经典试题及答案...