菜单分类
- 窗口的顶层菜单
- 弹出式菜单(鼠标右键的那些选项,记事本窗口左上角点击“文件”弹出的这些)
- 系统菜单(记事本左上角的图标)
 HMENU类型表示菜单,ID表示菜单项
资源相关
- 资源脚本文件:*.rc文件
- 编译器:rc.exe
  
菜单资源使用
- 添加菜单资源(不需要写代码)
- 加载菜单资源
 1.注册窗口类时设置菜单
 2.创建窗口传参设置菜单
 3.在主窗口WM_CREATE消息中利用SetMenu函数设置菜单
加载菜单资源:
LoadMenu函数的主要作用是从与应用程序实例关联的可执行文件(.EXE)中加载指定的菜单资源
HMENU LoadMenu(
	HINSTANCE hInstance,	//handle to module
	LPCTSTR lpMenuName		//menu name or resource identifier
	);
参数说明
- hInstance: 包含要加载的菜单资源的模块的句柄。
- lpMenuName: 菜单资源的名称。这个参数可以是资源标识符或者使用 MAKEINTRESOURCE 宏创建的值。
返回值
- 如果函数成功,返回菜单资源的句柄(HMENU)。
- 如果函数失败,返回值为NULL。可以调用 GetLastError 获取详细的错误信息。

 
 
 
 
 
 
看看硬盘上的变化

 
加载菜单资源
注册窗口类时设置菜单

 
创建窗口传参设置菜单

在主窗口WM_CREATE消息中利用SetMenu函数设置菜单
在主窗口WM_CREATE消息中利用SetMenu函数设置菜单。
BOOL SetMenu(
  HWND hWnd,
  HMENU hMenu
);
参数说明
- hWnd: 要设置菜单的窗口句柄。
- hMenu: 要分配给窗口的菜单句柄。如果此参数为NULL,则会移除窗口当前的菜单。
返回值
- 如果函数成功,返回非零值。
- 如果函数失败,返回零。可以使用GetLastError函数获取更多错误信息。
功能描述
- SetMenu函数的主要作用是将指定的菜单分配给一个窗口。这个操作会替换窗口当前的菜单(如果有的话)。通过这个函数,你可以动态地更改窗口的菜单,实现菜单的动态管理和更新。
  
命令消息处理
WM_COMMAND消息
-  下情况下发送: 
 1.用户从菜单中选择一个命令项。
 2.控件向其父窗口发送通知消息。
 3.加速键(快捷键)被转换时。
-  附带信息 
 wPARAM:
 HIWORD - 对于菜单为0
 LOWORD - 菜单项的ID
 lPARAM - 对于菜单为0
菜单项状态




















