win32 单选标记的菜单
来源:互联网 发布:js split数组 编辑:程序博客网 时间:2024/06/03 22:39
先设置好菜单
IDR_MAIN MENUBEGIN POPUP "菜单" BEGIN MENUITEM "飞机", ID_32771 MENUITEM "大炮", ID_32772 MENUITEM "手枪", ID_32773 END MENUITEM "哈哈哈", 0END
载入菜单
// 在这里把菜单附加上,成为类级别 wcex.lpszMenuName = MAKEINTRESOURCE(IDR_MAIN);//整个菜单资源的ID,不是菜单项
思路
1、调用GetMenu( 窗口句柄 )获取窗口中菜单栏的句柄;
2、调用GetSubMenu( 菜单栏句柄,0 )获得【菜单】弹出菜单的句柄,0表示菜单栏中的第一个元素,如果第二个就是1,我们的弹出菜只有【菜单】一项;
3、调用CheckMenuRadioItem函来来Check菜单。
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; // 获取窗口上的整个菜单栏的句柄 HMENU hmm = GetMenu(hWnd); // 获取第一个弹出菜单,即[水果]菜单 HMENU hfmn = GetSubMenu(hmm, 0); switch(msg) { case WM_COMMAND: { .......
菜单句柄是HMENU类型,所以GetMenu和GetSubMenu函数都返回HMENU类型的值。其实,这里我给大家推荐一个技巧,就是使用auto关键字,我们无需管它函数什么,统一用auto关键字,它会根据代码上下文推断数据类型,就像C#里面的var声明变量一样。
响应消息:
switch (wmId) { case ID_32771: CheckMenuRadioItem(hfmn, ID_32771, ID_32773, ID_32771, MF_BYCOMMAND); MessageBox(hWnd, L"你选择了飞机。", L"提示", MB_OK); break; case ID_32772: CheckMenuRadioItem(hfmn, ID_32771, ID_32773, ID_32772, MF_BYCOMMAND); MessageBox(hWnd, L"你选择了大炮。", L"提示", MB_OK); break; case ID_32773: CheckMenuRadioItem(hfmn, ID_32771, ID_32773, ID_32773, MF_BYCOMMAND); MessageBox(hWnd, L"你选择了手枪。", L"提示", MB_OK); break; }
CheckMenuRadioItem函数介绍
原型: BOOL CheckMenuRadioItem(HMEN hMENU,UINT idFirst,UINT idLast,UINT idCheck,UINT uFlags);
参数:
hMenu:包含一组菜单项的菜单的句柄。
idFirst:菜单组里第一个菜单项的标识符或位置。
idLast:菜单组里最后一个菜单项的标识符或位置。
idCheck:要校核的菜单项的标识符或位置。
uFlag:指定idFirst,idLast,idCheck含义的值。如果此参数为MF_BYCOMMAND,则其他参数指定菜单项标识符。如果此参数为MF_BYPOSITION,则其他参数指定菜单项位置。
0 0
- win32 单选标记的菜单
- 跟我一起玩Win32开发(5):具有单选标记的菜单
- 具有单选标记的菜单;auto关键字;CheckMenuRadioItem函数
- 【win32】标记菜单与对话框背景色
- Win32的菜单编程
- 对话框中菜单的标记
- win32 单选按钮
- win32 菜单资源的载入
- MFC如何动态给单文档菜单选项添加标记~~
- iOS中UITableView单选标记的实现
- win32之单选按钮
- WIN32汇编-单选按钮组的设置
- 单选菜单
- 创建一组只能单选的选项菜单
- 菜单【复选和单选】
- 多选 单选 自定义菜单
- vs2010 标记菜单问题
- vS2010中标记菜单
- Android学习心得(7) --- 迭代器Iterator反编译smali分析
- 直方图规定化(直方图匹配)
- iOS汉字识别改进算法
- 浅析分时系统和实时系统
- Eclipse怎么修改文档注释样式
- win32 单选标记的菜单
- JDBC连接MySQL数据库
- App应用上传到appStore的几种状态
- SPFA算法——单源最短路径
- 打包的时候报错 An asset is marked with HideFlags.DontSave but is included in the build的解决办法
- 取石子的几个找sg函数的问题
- SQL sever 附加数据库提示"版本为611,支持版本为655"——机房重构(一)
- linux centos svn 安装配置自动同步更新web服务
- C++ 根据当前路径与相对路径,获取绝对路径