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即可。

你可能感兴趣的:(windows)