永发信息网

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

答案:4  悬赏:10  手机版
解决时间 2021-02-16 21:39
请问我的菜单为什么不能弹出子菜单(Windows Mobile|C++)
最佳答案
没用过 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 可以不要保存。
全部回答
huai le
我刚才刚看到这个问题了
问题是Windows Mobile上和PC上文件有什么区别我不大清楚
你的图上的“刷新 菜单” 条是什么,是标准菜单,还是...
是不是要求单击“菜单”项时弹出,一个菜单
如果“刷新 菜单” 条是不是准菜单
单击“菜单”项时弹出的菜单,应该用TrackPopupMenu实现的
下边是SDK中的rc 文件
弹出菜单项是 "Program Pop","Office Pop"
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS
#include "resource.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// Chinese (P.R.C.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ALPHATOOLBAR ICON DISCARDABLE "AlphaToolBar.ICO"
IDI_SMALL ICON DISCARDABLE "SMALL.ICO"
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
IDB_OFFICEGRPUP BITMAP DISCARDABLE ".\\bmp98\\OFFICE16Up.bmp"
IDB_OFFICEGRPDOWN1 BITMAP DISCARDABLE ".\\bmp98\\OfficeDn1.bmp"
IDB_OFFICEGRPDOWN2 BITMAP DISCARDABLE ".\\bmp98\\OfficeDn2.bmp"
IDB_PROGRAMGRPUP BITMAP DISCARDABLE ".\\bmp98\\VB16Up.bmp"
IDB_PROGRAMGRPDOWN1 BITMAP DISCARDABLE ".\\bmp98\\VBDn1.bmp"
IDB_PROGRAMGRPDOWN2 BITMAP DISCARDABLE ".\\bmp98\\VBDn2.bmp"
IDB_NETCAPTOR BITMAP DISCARDABLE ".\\bmp98\\NetCaptor_754.bmp"
IDB_PROTECT BITMAP DISCARDABLE ".\\bmp98\\Protect16Up.bmp"
IDB_NOTE BITMAP DISCARDABLE ".\\bmp98\\note16Up.bmp"
IDB_PAINT BITMAP DISCARDABLE ".\\bmp98\\Paint16up.bmp"
IDB_PHOTO BITMAP DISCARDABLE ".\\bmp98\\Photo16up.bmp"
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDC_ALPHATOOLBAR MENU DISCARDABLE
BEGIN
POPUP "&File"
BEGIN
MENUITEM "E&xit", IDM_EXIT
END
POPUP "&Help"
BEGIN
MENUITEM "&About ...", IDM_ABOUT
END
END
IDC_MENUPOP MENU DISCARDABLE
BEGIN
POPUP "Program Pop"
BEGIN
MENUITEM "&Microsoft Visual Basic 6.0", IDC_VB
MENUITEM "Microsoft Visual &C++ 6.0", IDC_VC
MENUITEM "&Borland C++ Builder 6.0", IDC_CBUILDER
MENUITEM "B&orland C++ Builder 5.0", IDC_CBUILDER5
MENUITEM "&Dev-C++", IDC_DEVC
MENUITEM "MinGW Developer &Studio", IDC_MINGW
MENUITEM "&Win-TC 1.91", IDC_WINTC
MENUITEM "E&xit", IDC_EXIT
END
POPUP "Office Pop"
BEGIN
MENUITEM "Microsoft &Word", IDC_WORD
MENUITEM "Microsoft &Excel", IDC_EXCEL
MENUITEM "Microsoft &Access", IDC_ACCESS
MENUITEM "Microsoft &FrontPage", IDC_FRONTPAGE
END
POPUP "Protect Pop"
BEGIN
MENUITEM "@3721专杀工具", IDC_3721
MENUITEM "金山清理专家(&K)", IDC_KINGCLEAR
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
IDC_ALPHATOOLBAR ACCELERATORS MOVEABLE PURE
BEGIN
"?", IDM_ABOUT, ASCII, ALT
"/", IDM_ABOUT, ASCII, ALT
END
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUTBOX DIALOG DISCARDABLE 22, 17, 230, 75
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "About"
FONT 8, "System"
BEGIN
ICON IDI_ALPHATOOLBAR,IDC_MYICON,14,9,16,16
LTEXT "AlphaToolBar Version 1.0",IDC_STATIC,49,10,119,8,
SS_NOPREFIX
LTEXT "Copyright (C) 2009",IDC_STATIC,49,20,119,8
DEFPUSHBUTTON "OK",IDOK,195,6,30,11,WS_GROUP
END
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include ""windows.h""\r\n"
"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include ""resource.h""\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\0"
END
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_APP_TITLE "AlphaToolBar"
IDS_HELLO "Hello World!"
IDC_ALPHATOOLBAR "ALPHATOOLBAR"
END
#endif // Chinese (P.R.C.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
这是实现菜单弹出的部分
inline void __fastcall TopopMenu(HWND hWnd, int X, int Y)
{
HMENU hmenu;
if (hProgramGrp == hWnd)
hmenu = GetSubMenu(LoadMenu(g_hInst, (LPCSTR)MAKEINTRESOURCE(IDC_MENUPOP)), 0);
else if (hOfficeGrp == hWnd)
hmenu = GetSubMenu(LoadMenu(g_hInst, (LPCSTR)MAKEINTRESOURCE(IDC_MENUPOP)), 1);
RECT rect;
GetWindowRect(hWnd, &rect);
POINT point;
point.x = rect.left;
point.y = rect.top + rect.bottom - 2;
//ClientToScreen(hWnd, &point);
TrackPopupMenu(hmenu, TPM_LEFTALIGN, point.x, point.y, 0, hWnd, NULL);
DestroyMenu(hmenu);
}
中毒了吧
重做系统试试
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
黑暗之魂3猎龙铠甲能召唤npc吗
一次函数y=-2x-3的图象上某点的纵坐标为3,则
0.38X102简便算
7月11日的日子好不好
罗晋的晋的拼音
我是潍坊的,被北京一家拍卖公司骗了,要报警
我贷款六万,利息是6厘6,贷三年利息是多少
高等数学下册,xOy坐标面上的抛物线z²=x
阅读下列材料,回答问题。(18分)材料一:九
笔记本i3的够用吗? i3 2377m
期末语文应该怎样复习
关于伏旱天气为什么是受高压控制是因为高压区
推荐一个比较好的数学软件(可以绘图的那种)
ups输入谐波电流什么意思
三分之一(x+3.5)+x=4-三分之二(x+3.5)
推荐资讯
初一语文散步
EDYTH什么意思?
3月11日,riben发生地震,随后发生海啸,高盛
今天一个漂亮的女生和我表白,我竟然拒绝了,
大姨妈推迟七天,腰酸,偶尔腹痛,乳头突出,
麦克斯与魔法标记如何存档
从霸州火车站到前卜庄怎么去?
为什么我的三星note3 N9005 开了智能休眠没有
帝国全面战争年上限怎么调?好像是最高才几十
比14多2的数是( )比9少5的数是( )
亚马逊海淘怎么填收货地址?
白山市殡仪馆怎么去啊,有知道地址的么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?