菜单的分类
窗口顶层菜单:
弹出式菜单(标准叫法){下拉菜单:点击窗口顶层菜单形成的的下拉菜单、右键形成的}
系统菜单:操作系统提供的,每一个程序,左上角ICON都会有

菜单是容器,装的是菜单项,每个菜单项都有自己的ID

点击菜单项会产生 WM_COMMAND

WM_COMMAND[命令消息]
对于菜单,点击菜单项的时候,会产生WM_COMMAND
菜单时候 仅仅LOWORD(wParam) == ID,lParam 0;

菜单是容器,装的是菜单项,每个菜单项都有自己的ID
添加菜单一般分为两种办法:

  1. 一种是创建 .rc文件 [.rc文件不需要我们写,我们仅仅需要在通过IDE来进行编辑就可以了]
    (1) 直接利用LoadMenu 这个API导入,返回HMENU菜单句柄,在创建的时候赋值(注意 .rc 下面的menu Id)
    (2) 直接将 .rc 里面的menu id在创建 WNDCLASS 的时候进行赋值
    (3) 在 WM_CREATE 的时候SetMenu()[传入参数为(1)中产生的HMENU]
  HMENU LoadMenu(              //这个函数是通过加载存在的 .rc 文件通过 rc.exe 生成的 .res 的资源
      HINSTANCE hInstance,	//应用程序实例的句柄
      LPCTSTR lpMenuName	//菜单名称字符串或菜单资源标识符
  );
   SetMenu(                     //给某hWnd窗口设置menu  设置menu的时间有要求吗[需要在show之前设置,否则会导致鼠标进入一直忙碌等问题]
      HWND hWnd,
      HMENU hMenu
   );
  1. 通过代码创建
    HWMND CreateMenu(); //这个函数没有参数,创建Menu之后我们需要通过句柄在menu里面填写菜单选项 ...