怎样用GetMenuString获得当前选择的菜单的名称

 我来答
匿名用户
2016-07-08
展开全部
AppendMenu 在指定的菜单里添加一个菜单项 
CheckMenuItem 复选或撤消复选指定的菜单条目 
CheckMenuRadioItem 指定一个菜单条目被复选成“单选”项目 
CreateMenu 创建新菜单 
CreatePopupMenu 创建一个空的弹出式菜单 
DeleteMenu 删除指定的菜单条目 
DestroyMenu 删除指定的菜单 
DrawMenuBar 为指定的窗口重画菜单 
EnableMenuItem 允许或禁止指定的菜单条目 
GetMenu 取得窗口中一个菜单的句柄 
GetMenuCheckMarkDimensions 返回一个菜单复选符的大小 
GetMenuContextHelpId 取得一个菜单的帮助场景ID 
GetMenuDefaultItem 判断菜单中的哪个条目是默认条目 
GetMenuItemCount 返回菜单中条目(菜单项)的数量 
GetMenuItemID 返回位于菜单中指定位置处的条目的菜单ID 
GetMenuItemInfo 取得(接收)和一个菜单条目有关的特定信息 
GetMenuItemRect 在一个矩形中装载指定菜单条目的屏幕坐标信息 
GetMenuState 取得和指定菜单条目状态有关的信息 
GetMenuString 取得指定菜单条目的字串 
GetSubMenu 取得一个弹出式菜单的句柄,他位于菜单中指定的位置 
GetSystemMenu 取得指定窗口的系统菜单的句柄 
HiliteMenuItem 控制顶级菜单条目的加亮显示状态 
InsertMenu 在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动 
InsertMenuItem 插入一个新菜单条目 
IsMenu 判断指定的句柄是否为一个菜单的句柄 
LoadMenu 从指定的模块或应用程式实例中载入一个菜单 
LoadMenuIndirect 载入一个菜单 
MenuItemFromPoint 判断哪个菜单条目包含了屏幕上一个指定的点 
ModifyMenu 改动菜单条目 
RemoveMenu 删除指定的菜单条目 
SetMenu 设置窗口菜单 
SetMenuContextHelpId 设置一个菜单的帮助场景ID 
SetMenuDefaultItem 将一个菜单条目设为默认条目 
SetMenuItemBitmaps 设置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号(√) 
SetMenuItemInfo 为一个菜单条目设置指定的信息 
TrackPopupMenu 在屏幕的任意地方显示一个弹出式菜单 
TrackPopupMenuEx 和TrackPopupMenu相似,只是他提供了额外的功能

在使用菜单之前,值得一提的是,包含菜单的窗口必须是POPUP-UP或OVERLAPPED风格,才可能拥有菜单。
菜单的创建有三种方法:1,在WINDOWCLASS中指定菜单资源的标识符;2,在CreateWindowEx函数参数中指定菜单句柄;3,先用LoadMenu函数
载入菜单资源,再用SetMenu函数把菜单加载到应用程序的菜单栏。
菜单的操作包含:向已存在菜单添加新的菜单项,删除菜单中的某一项,使菜单项呈现被选中状态,使菜单项无效,创建浮动式菜单,向
Windows系统菜单中添加,删除选项等等。
定位菜单项有两种途径:1,用菜单项的唯一标识符;2,用菜单项的逻辑索引。
菜单项的逻辑索引是这样规定的,菜单栏中的项从左到右的索引依次是0,1,2...,弹出菜单中的项从上到下的索引依次是0,1,2...。
如果想获得菜单某一项的句柄,因先获得菜单条的句柄,在用该菜单项的索引取得句柄。例如:
hMenu=GetMenu(hWnd); //hWnd是窗口句柄
hPopupMenu=GetSubMenu(hMenu,0); //0表示菜单的第一个选项
范例1:演示菜单的各种操作
// begin.cpp : Defines the entry point for the application.
//
#define WIN32_LEAN_AND_MEAN
#include "stdafx.h"
#include "resource.h"
#define ID_NEWITEM 1013 //定义新菜单项的标识符
#define ID_NEWSYSITEM 60441 //定义新系统菜单项标识符
LRESULT CALLBACK MainProc(HWND,UINT,WPARAM,LPARAM); //主窗口函数
BOOL WINAPI DoDispPopupMenu(HWND,int,int); //创建弹出式菜单
VOID WINAPI DoDispMessage(int); //显示相关信息 
VOID WINAPI DoInsertMenuItem(void); //向已有菜单中插入新项
VOID WINAPI DoDeleteMenuItem(void); //删除菜单中的选项
VOID WINAPI DoCheckMenuItem(void); //设置菜单项为选中标志
VOID WINAPI DoCheckRadio(void); //设置菜单项为单选标志
VOID WINAPI DoInsertSysMenu(void); //向系统菜单中插入新项
char szAppName[]="Begin";
HINSTANCE hIns;
HWND hMainWnd;
BOOL isInsert; //插入菜单标志
BOOL isCheck; //选中标志
int idRadio=2; //单选标志
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
HWND hWnd;
WNDCLASSEX wc;
wc.cbClsExtra = 0;
wc.cbSize = sizeof(WNDCLASSEX);
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wc.hIconSm = 0;
wc.hInstance = hInstance;
wc.lpfnWndProc = (WNDPROC)MainProc;
wc.lpszClassName = szAppName;
wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);
wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS | CS_OWNDC;
RegisterClassEx(&wc);
hWnd=CreateWindowEx(0, szAppName, szAppName, WS_OVERLAPPEDWINDOW, 
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, 
NULL,NULL,hInstance,NULL);
hMainWnd=hWnd;
hIns=hInstance;
//在此处向系统菜单中插入菜单项
DoInsertSysMenu();
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式