首页 > 上网技巧 > 电脑小技巧 > 正文

使用Win32 API 添加窗顶菜单及右键菜单

时间:2013-02-08 12:26 作者:QQ地带 我要评论

 使用Win32创建窗口这个过程就不再多说了.
我使用 Code::Blocks编写Win32程序,但是资源文件还是要用三方软件来编辑的
这里推荐一款 ResEdit 软件,可以到网上搜一下.
1.获取菜单句柄
::LoadMenu( 程序实例instance,资源句柄 );
程序实例参数就不多说了即HINSTANCE参数
资源句柄使用MAKEINTRESOURCE(菜单ID);ID在resource.h里定义好了.
这个函数返回的是一个菜单句柄
2. 将菜单插入程序
窗口顶部菜单.
方式之一:
在创建窗口的时候把这个句柄参数传进去就OK了.
 
hwnd = CreateWindowEx ( 
       0,   
       szClassName,         
       "Code::Blocks Template Windows App", 
       WS_OVERLAPPEDWINDOW,  
       CW_USEDEFAULT,       
       CW_USEDEFAULT,       
       544,                  
       375,                  
       HWND_DESKTOP,        
       LoadMenu(hThisInstance,MAKEINTRESOURCE(IDR_MENU)), // MENU 
       hThisInstance,       /* Program Instance handler */ 
       NULL                 
       ); 
方式之二:
 
SetMenu (hwnd, hMenu) ;
 
这个也容易理解吧.
方式之三:
在定义窗口类的时候,将菜单指针传入.这里就不再多讲了,这个不经常用.
右键菜单:
这个其实也很简单:
在消息回调里捕获WM_RBUTTONUP消息.
lParam 低8位存放鼠标x坐标,高8位存放鼠标y坐标.
使用百分之一ksair.com.tw
TrackPopupMenu (hMenu, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hwnd, NULL) ; 
生成右键菜单.
3.响应菜单
顶层菜单截获WM_COMMAND 消息,系统菜单响应WM_SYSCOMMAND
利用wParam的低8位判断是点击的哪个菜单项.
 
case WM_COMMAND: 
            switch(LOWORD(wParam)) 
            { 
            case IDM_EXIT2: 
                PostQuitMessage(0); 
                break; 
            default: 
                break; 
            } 
总之使用Win32SDK添加右键菜单和顶层菜单是一件很轻松的事情.

标签:Win32
顶一下
(0)
0%
踩一下
(0)
0%

Google提供的广告