实验3API菜单使用文档格式.docx
- 文档编号:15871431
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:11
- 大小:93.11KB
实验3API菜单使用文档格式.docx
《实验3API菜单使用文档格式.docx》由会员分享,可在线阅读,更多相关《实验3API菜单使用文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
要求:
(1)创建弹出式菜单
(2)显示相关信息
(3)向已有菜单中插入新项
(4)删除菜单中的选项
(5)设置菜单项为选中标志
(6)设置菜单项为单选标志
(7)向系统菜单中插入新项
四、实验步骤
(一)新建项目
使用VisualC++的应用程序向导生成一个应用程序MenuDemo。
项目类型选择“Win32Application”,在向导的第一步中将程序类型设置成“AsimpleWin32application”。
(二)编写实现菜单使用的代码
参考代码:
//test.cpp:
Definestheentrypointfortheapplication.
//
#defineWIN32_LEAN_AND_MEAN
#include"
stdafx.h"
resource.h"
#defineID_NEWITEM1013//定义新菜单项的标识符
#defineID_NEWSYSITEM60441//定义新系统菜单项标识符
LRESULTCALLBACKMainProc(HWND,UINT,WPARAM,LPARAM);
BOOLWINAPIDoDispPopupMenu(HWND,int,int);
//创建弹出式菜单
VOIDWINAPIDoDispMessage(int);
//显示相关信息
VOIDWINAPIDoInsertMenuItem(void);
//向已有菜单中插入新项
VOIDWINAPIDoDeleteMenuItem(void);
//删除菜单中的选项
VOIDWINAPIDoCheckMenuItem(void);
//设置菜单项为选中标志
VOIDWINAPIDoCheckRadio(void);
//设置菜单项为单选标志
VOIDWINAPIDoInsertSysMenu(void);
//向系统菜单中插入新项
charszAppName[]="
MenuDemo"
;
HINSTANCEhIns;
HWNDhMainWnd;
BOOLisInsert;
//插入菜单标志
BOOLisCheck;
//选中标志
intidRadio=2;
//单选标志
intAPIENTRYWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPSTRlpCmdLine,
intnCmdShow)
{MSGmsg;
HWNDhWnd;
WNDCLASSEXwc;
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(&
}returnmsg.wParam;
}
LRESULTCALLBACKMainProc(HWNDhWnd,UINTmessage,
WPARAMwParam,LPARAMlParam)
{HDChdc;
PAINTSTRUCTps;
switch(message)
{caseWM_CREATE:
return0;
caseWM_PAINT:
hdc=BeginPaint(hWnd,&
ps);
EndPaint(hWnd,&
//dodrawing
caseWM_RBUTTONDOWN:
//鼠标在窗口中右键被按下时,弹出浮动式菜单
if(DoDispPopupMenu(hWnd,LOWORD(lParam),HIWORD(lParam)))
//函数调用成功
else
break;
//函数调用失败
caseWM_COMMAND:
switch(LOWORD(wParam))
{caseID_INSERT:
if(isInsert==0)
{DoInsertMenuItem();
//插入新的菜单项
DoDispMessage(4);
//显示相关信息
}break;
caseID_NEWITEM:
DoDispMessage(3);
break;
caseID_DELETE:
if(isInsert!
=0)
{DoDeleteMenuItem();
//删除菜单项
DoDispMessage(5);
caseIDEXIT:
PostQuitMessage(0);
caseID_CHECK:
//在菜单选项前打钩
DoCheckMenuItem();
caseID_RADIO1:
//在菜单选项前做一圆形标志,表明此项被选中,清除旧的标志
idRadio=2;
DoCheckRadio();
caseID_RADIO2:
//同上
idRadio=3;
caseID_RADIO3:
idRadio=4;
caseID_FLOAT1:
//浮动菜单的选项被选中时的处理
DoDispMessage(0);
caseID_FLOAT2:
DoDispMessage
(1);
caseID_FLOAT3:
DoDispMessage
(2);
}
caseWM_CLOSE:
PostQuitMessage(0);
}
returnDefWindowProc(hWnd,message,wParam,lParam);
BOOLWINAPIDoDispPopupMenu(HWNDhWnd,intx,inty)
{
HMENUhMenu;
HMENUhPopupMenu;
POINTpt={x,y};
//从资源文件中载入菜单资源
hMenu=LoadMenu(hIns,MAKEINTRESOURCE(IDR_MENU2));
//获得子菜单的句柄
hPopupMenu=GetSubMenu(hMenu,0);
//窗口坐标转化到屏幕坐标
ClientToScreen(hMainWnd,&
pt);
//创建浮动菜单
if(TrackPopupMenu(hPopupMenu,TPM_LEFTALIGN|TPM_RIGHTBUTTON,
pt.x,pt.y,0,hMainWnd,NULL)==FALSE)
returnFALSE;
//使用完毕,回收内存
DestroyMenu(hMenu);
returnTRUE;
VOIDWINAPIDoDispMessage(intid)
{HDChdc;
//在菜单事件发生时,输出相应的字符串
char*mess[]={"
CommandFloatingMenuitem1"
"
CommandFloatingMenuitem2"
CommandFloatingMenuitem3"
CommandNewMenuItem"
NewItemHaveBeenInserted"
NewItemHaveBeenDeleted"
};
InvalidateRect(hMainWnd,NULL,FALSE);
hdc=GetDC(hMainWnd);
TextOut(hdc,0,0,mess[id],strlen(mess[id]));
ReleaseDC(hMainWnd,hdc);
VOIDWINAPIDoInsertMenuItem()
{HMENUhMenu;
//插入菜单项
MENUITEMINFOinfo;
info.cbSize=sizeof(MENUITEMINFO);
//每一个新插入的菜单项都必须填写MENUITEMINFO结构
info.fMask=MFT_STRING|MIIM_DATA|MIIM_ID|MIIM_TYPE;
info.fType=MFT_STRING;
info.fState=0;
info.wID=ID_NEWITEM;
info.hSubMenu=NULL;
info.hbmpChe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 API 菜单 使用