Windows程序设计 读书笔记 菜单及其他资源。

一、windows识别初始字符#作为ASCII形式数据的开头

二、自定义资源的使用:感觉没啥用,不写了。

  //LoadResource  FindResource  LockResource

  注意事项:

HRSRC FindResource( HMODULE hModule, // module handle LPCTSTR lpName, // resource name LPCTSTR lpType // resource type);

  对于这里的LPCTSTR lpName  如果在资源ID里写的是"AnnabelLee",那这里直接用TEXT ("AnnabelLee"),而如果资源里没用双引号,而是普通的:IDR_ANNABLELEE,那这里要用 MAKEINTRESOURCE(IDR_ANNABLELEE);

读取文本资源(TEXT资源 .txt文件)示例:

hResource = LoadResource (hInst,
                      FindResource (hInst, TEXT ("AnnabelLee"),
                                           TEXT ("TEXT"))) ;
          
          pText = (char *) LockResource (hResource) ;
          iNumLines = 0 ;
          
          while (*pText != '\\' && *pText != '\0')
          {
               if (*pText == '\n')
                    iNumLines ++ ;
               pText = AnsiNext (pText) ;
          }
          *pText = '\0' ;

三、菜单

  当用户选择一个菜单时,产生几个消息,一般这些消息不需要处理,直接交给DefWindowProc即可。

  WM_INITMENU

  WM_MENUSELECT

  WM_INITMENUPOPUP

  WM_COMMAND

  WM_SYSCOMMAND --  系统菜单。最大化最小化之类的

  WM_MENUCHAR --  非热键  --- 默认是由DefWindowProc发出蜂鸣声

  右键弹出浮动菜单:

    初始化: LoadMenu    

    右键事件:TrackPopupMenu

  自定义系统菜单:

    HMENU GetSystemMenu( HWND hWnd, // handle to window BOOL bRevert // reset option); -- 获取系统菜单, bRevert 为真将系统菜单恢复为最原始状态

    获取后,进行一般操作。  AppendMenu, DeleteMenu, InsertMenu, ModifyMenu,RemoveMenu,

                EnableMenuItem,EM_GETSEL,F

    DeleteMenu  删除并清除

    RemoveMenu  删除不清除

  其他菜单命令:

    强制刷新 DrawMenuBar,GetSubMenu,GetMenuItemCount,GetMenuItemID,

    ChecnMenuItem,GetMenuString,GetMenuState,DestroyMenu

四、加速键,在资源里定义加速项对应关系,然后初始化的时候LoadAccelerators即可。

原文地址:https://www.cnblogs.com/aoyihuashao/p/1716383.html