Windows编程资源,菜单资源,图标资源,光标资源,上下文菜单,字符串资源,加速键资源(下)

简介: Windows编程资源,菜单资源,图标资源,光标资源,上下文菜单,字符串资源,加速键资源(下)

二.上下文菜单

1.显示上下文菜单(右键菜单)

MSDN官方文档解释TrankPopupMensu函数

BOOL TrankPopupMenu(
  HMENU hMenu,      //要显示的快捷菜单的句柄。
  UINT nFlags,      //指定显示方式
  int x,
  int y,            //x,y分别为快捷菜单位置,x为水平位置,y为垂直位置(屏幕坐标系)
  int nReserved,    //保留,必须为0
  HWND hWnd,        //拥有快捷菜单的窗口句柄
  const RECT* prcRext  //已忽略
  );

注意: 这里的第一个参数hMenu,可以通过CreatePopopMenu函数来创建一个新的快捷菜单,也可以通过GetSubMenu函数来检索与现有菜单项关联的子菜单句柄来获取句柄。

这个函数是阻塞函数

2.上下文菜单中的WM_RBUTTONUP消息

鼠标右键被放开为窗口坐标系坐标,如果要转化为屏幕坐标系的话,请使用ClientToScreen函数。

3.WM_CONTEXTMENU消息

MSDN官方文档结束WM_CONTEXTMENU消息

  • 产生时间:鼠标右键被放开时
  • 附加信息
  • wParam:右键点击的窗口句柄
  • lParam:
  • LOWORD:x
  • HIWORD:y (注意是屏幕坐标系)

我们在讲解鼠标消息的时候,鼠标右键被放开时会产生WM_RBUTTONUP消息,这里的WM_CONTEXTMENU消息是在WM_RBUTTONUP消息之后产生的。

三.图标资源,光标资源

1.添加图标资源

像我们添加菜单资源一样,添加Icon资源

添加好之后,我们可以选择自己画一个图标或者从外部添加图标,注意图标大小,一个图形文件中,可以有多个大小不同的图标。

2.加载图标资源

将图标资源设置好之后,我们需要拿到图标资源句柄

我们可以使用LoadIcon函数来获取图标句柄:

MSDN官方文档解释LoadIcon函数

HICON LoadIcon(
  HINSTANCE hInstance,     //图标资源的实例句柄
  LPCTSTR lpIconName       //要加载的图标资源的名称
);

获取到图标资源句柄之后,我们只需要在注册窗口时将图标资源句柄传给hIcon参数即可。

3.添加光标资源

像前文讲到的添加菜单资源,图标资源一样,我们只需要选择Coursor

添加好光标资源后,每个光标还有FotSpot,是当前鼠标的热点,只有在这一点上,光标才起作用。

4.加载光标资源

添加好光标资源后,我们还是需要拿到光标资源句柄,我们可以使用HCURSOR函数来获取光标资源句柄。

MSDN官方文档解释LoadCursor函数

HCURSOR LoadCursor(
  HINSTANCE hInstance,        //光标资源句柄可以为0
  LPCTSTR lpCursorName        //光标资源名称
  );

当hInstance参数为0时,获取系统默认的光标资源

5.设置资源

  • 我们拿到光标资源句柄后,在注册窗口时,设置hCursor参数为我们拿到的光标资源句柄即可。
  • 我们也可以在创建窗口时,显示窗口之前,使用SetCursor函数来设置光标资源。

5.WM_SETCURSOR消息

  • 产生时间:如果鼠标导致光标在窗口移动,并且未捕获鼠标输入,则发送到窗口
  • 附加消息:
  • wParam:包含光标的窗口句柄
  • lParam:
  • LOWORD:当前区域代码(指定触发此消息的窗口,当进入菜单模式时,此字段为0)
  • HIWORD:当前鼠标消息ID

三.字符串资源

在这里我们讲一下,字符串资源到底有什么作用呢?

我们在做开发的时候,客户可能有时候让我们做中文版界面,有时候又想让我们改为英文版界面,这时候字符串资源就显得特别重要了,不让我们要改很多源码。

同样,我们到可视化图形界面来添加字符串资源

  • 获取字符串资源句柄
int LoadString(
  HINSTANCE hInstance,     //包含字符串资源的可执行文件的实例句柄
  UINT uID,      //要加载的字符串标识符
  LPTSTR lpBuffer,    //存放字符串的Buff
  int nBufferMax     //字符串Buff长度
  );

四.加速键资源

加速键资源这里定义的有点抽象了,其实就是快捷键。

1.添加加速键资源

我们还是添加资源–>添加Accelerator资源

2.加速键资源的使用

  • 加载加速键表

MSDN官方文档解释LoadAccelerstors函数

加载指定的加速器表。

HACCEL LoadAccelerators(
  HINSTANCE hInstance,      //模块的实例句柄
  LPCTSTR lpTableName       //要加载的加速表的名称
  );

这里注意,我们加载完加速表后,不能直接使用加速键表,我们还需要翻译加速键,

MSDN官方文档解释TranslateAccelerator函数,函数作用:处理菜单命令的快捷键。

int TranslateAccelerator(
  HWND hWnd,         //要翻译其消息的窗口句柄
  HACCEL hAccTable,  //加速器表的句柄
  LPMSG lpMsg        //指向Msg结构的指针,其中包括检索得到的消息
  );

那么加速器到底是怎么工作的?我们来写一段伪代码为大家讲解:

TranslateAcceleator(hWnd,hAccTable,&Msg){
  if(Msg.message != WM_KEYDOWN) return 0;
  根据Msg.wParam获知按键到底是哪个
  查表,到hAccelTable中比对是否存在该加速键
  if(没找到) return 0;
  else{
  SendMesage(hWnd,WM_COMMAND,ID_NEW....);
  return 0;
  }

今天的分享就到这里,如果文章中有错误之处,还请大家指出来,我会非常虚心得学习,希望我们共同进步!!!




相关文章
|
2月前
|
Windows
windows 11 恢复右键传统菜单
windows 11 恢复右键传统菜单
198 27
|
28天前
|
Windows
.NET 隐藏/自定义windows系统光标
【10月更文挑战第20天】在.NET中,可以使用`Cursor`类来控制光标。要隐藏光标,可将光标设置为`Cursors.None`。此外,还可以通过从文件或资源加载自定义光标来更改光标的样式。例如,在表单加载时设置`this.Cursor = Cursors.None`隐藏光标,或使用`Cursor.FromFile`方法加载自定义光标文件,也可以将光标文件添加到项目资源中并通过资源管理器加载。这些方法适用于整个表单或特定控件。
|
2月前
|
网络协议 API Windows
MASM32编程调用 API函数RtlIpv6AddressToString,windows 10 容易,Windows 7 折腾
MASM32编程调用 API函数RtlIpv6AddressToString,windows 10 容易,Windows 7 折腾
|
2月前
|
Windows
[原创]用MASM32编程获取windows类型
[原创]用MASM32编程获取windows类型
|
2月前
|
JavaScript 前端开发 API
MASM32编程通过WMI获取Windows计划任务
MASM32编程通过WMI获取Windows计划任务
|
2月前
|
API Windows
MASM32编程获取Windows当前桌面主题名
MASM32编程获取Windows当前桌面主题名
|
3月前
|
数据库 Windows
超详细步骤解析:从零开始,手把手教你使用 Visual Studio 打造你的第一个 Windows Forms 应用程序,菜鸟也能轻松上手的编程入门指南来了!
【8月更文挑战第31天】创建你的第一个Windows Forms (WinForms) 应用程序是一个激动人心的过程,尤其适合编程新手。本指南将带你逐步完成一个简单WinForms 应用的开发。首先,在Visual Studio 中创建一个“Windows Forms App (.NET)”项目,命名为“我的第一个WinForms 应用”。接着,在空白窗体中添加一个按钮和一个标签控件,并设置按钮文本为“点击我”。然后,为按钮添加点击事件处理程序`button1_Click`,实现点击按钮后更新标签文本为“你好,你刚刚点击了按钮!”。
241 0
|
2天前
|
监控 安全 网络安全
Windows Server管理:配置与管理技巧
Windows Server管理:配置与管理技巧
15 3
|
5天前
|
存储 安全 网络安全
Windows Server 本地安全策略
由于广泛使用及历史上存在的漏洞,Windows服务器成为黑客和恶意行为者的主要攻击目标。这些系统通常存储敏感数据并支持关键服务,因此组织需优先缓解风险,保障业务的完整性和连续性。常见的威胁包括勒索软件、拒绝服务攻击、内部威胁、恶意软件感染等。本地安全策略是Windows操作系统中用于管理计算机本地安全性设置的工具,主要包括用户账户策略、安全选项、安全设置等。实施强大的安全措施,如定期补丁更新、网络分段、入侵检测系统、数据加密等,对于加固Windows服务器至关重要。
|
1月前
|
边缘计算 安全 网络安全