请问我的菜单为何不能弹出子菜单(Windows Mobile|C++)

已举报 回答 关注
请问我的菜单为何不能弹出子菜单(Windows Mobile|C++)
问在线客服
扫码问在线客服
  • 回答数

    4

  • 浏览数

    7,942

4个回答 默认排序
  • 默认排序
  • 按时间排序

已采纳
没用过 SHCreateMenuBar ,这个应该是 shell32.lib里面的函数。
CE系统上有 LoadMenu 函数,你用这个不是很好么
HMENU LoadMenu(
HINSTANCE hInstance,
LPCTSTR lpMenuName ) ,使用 MAKEINTRESOURCE 宏转换MENUID;

我不知道wm系统下菜单资源的格式,我想应该和xp下差不多吧。这个格式是LoadMenu装入识别的,跟操作系统关系不大。你新建一个VC的工程,然后以编辑方式打开.rc资源文件,能看到资源文本内容。(点中xxx.rc文件,右键“打开方式...”——选“源代码文本编辑器”,再“打开”即可看到资源文本,找找就能看到菜单部分的资源定义格式了)。

不过这样都太麻烦,如果你菜单比较简单且不变动,完全可以写入在程序中,如下方式:

HMENU CreateMenu(),如果是弹出式菜单使用 CreatePopupMenu 来创建一个菜单句柄。然后使用
AppendMenu(hMenu,uFlags,uIDNewItem,lpNewItem)来添加一个菜单项目。
比如你的情况:

HMENU hMainMenu= CreateMenu();

// 弹出式子菜单部分。
HMENU hPopupMenu = CreatePopueMenu();
BOOL bRet = AppendMenu(hPopupMenu, MF_STRING, 1000, "子菜单项1");
bRet = AppendMenu(hPopupMenu, MF_STRING,1001,"子菜单项2");
bRet = AppendMenu(hPopupMenu, MF_STRING,1002,"子菜单项3");

// 给主菜单添加项目。
bRet = AppendMenu( hMainMenu, MF_STRING, 1008,"刷新");
bRet = AppendMenu( hMainMenu, MF_POPUP|MF_STRING,UINT_PTR(hPopupMenu),"菜单");

然后就可以将hMainMenu附加给窗口显示了。 hPopupMenu 可以不要保存。
取消 评论
你应该说的是win8
取消 评论
以前我们用的都是Windows 3,会出现Windows 7 ,是不是你的电脑程序重新更新了,如果是重新更新程序,就是Windows 7 新版本,挺好用的
取消 评论
那是win8的开始菜单界面,在win7里是左下角弹出开始菜单
取消 评论
ZOL问答 > 手机 > 其他分类 > 请问我的菜单为何不能弹出子菜单(Windows Mobile|C++)

举报

感谢您为社区的和谐贡献力量请选择举报类型

举报成功

经过核实后将会做出处理
感谢您为社区和谐做出贡献

扫码参与新品0元试用
晒单、顶楼豪礼等你拿

扫一扫,关注我们
提示

确定要取消此次报名,退出该活动?