《Visual-C++基础入门教程-第7课:创建菜单(共5页).doc》由会员分享,可在线阅读,更多相关《Visual-C++基础入门教程-第7课:创建菜单(共5页).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上Windows窗口一般都带有一个菜单栏,包含了许多操作命令,这种菜单称为下拉式菜单,单击一个菜单会弹出一个下拉列表菜单项,单击菜单项就可以选择这个命令;菜单栏中第一个一般是“文件”最后一个是“帮助”,我们通过一个例子来学习如何在自己的窗口中添加菜单;1、菜单属于一种资源,因此在资源文件中定义,同时菜单是分级的,如果菜单项右侧带有一个小黒三角按钮,就表示包含下一级菜单;2、启动VC,新建一个名为Menu的Win32 Application工程,再新建一个相同名称的头文件和源程序文件,在头文件中输入函数的申明,在源程序中输入窗口框架代码(输好多遍了吧?)Menu.h代码如
2、下:/函数原型申明LRESULT /菜单标识符#define IDM_NEW 201/新建/退出/编辑菜单#define IDM_EDITCOPY 211/复制/粘贴/帮助菜单#define IDM_ABOUT 221/关于#define IDM_EDITPASTE 212#define IDM_EXIT 202APIENTRY MainWndProc(HWND,UINT,WPARAM,LPARAM);BOOL InitApplication(HINSTANCE);BOOL InitInstance(HINSTANCE,int);在源程序Menu.cpp里的InitApplication函数中
3、加入使用菜单代码,修改其中一句,加入资源文件中定义的菜单标识符wcexMenuApp.lpszMenuName =MenuAppMenu;3、启动记事本,单击保存命令,保存在Menu文件夹中,文件名为Menu.rc类型为“所有文件”,即新建一个资源文件,输入菜单的代码,菜单由一对BEGIN和END定义一个菜单列表,菜单列表的表头用POPUP定义,代码如下:#include Menu.h/要用头文件中申明的标识符/ 下面定义菜单资源/菜单标识符BEGIN POPUP 文件(&F) BEGIN MENUITEM 新建(&N), IDM_NEW MENUITEM SEPARATOR/分隔条 MENU
4、ITEM 退出(&X), IDM_EXIT END POPUP 编辑(&E) BEGIN MENUITEM 复制(&C), IDM_EDITCOPY MENUITEM SEPARATOR MENUITEM 粘贴(&P), IDM_EDITPASTE, GRAYEDMENUAPPMENU MENU DISCARDABLE /开始是灰色的,不可用 END POPUP 帮助(&H) BEGIN MENUITEM 关于(&A).tF1, IDM_ABOUT ENDEND保存一下文件,然后关闭记事本,在VC窗口中单击“工程”菜单选择“添加工程”“Files.”,选择其中的资源文件Menu.rc单击“确定
5、”,把资源文件加入工程当中;4、单击菜单时会发送一个命令消息,下面再加入消息处理过程的代码(绿色双斜杠部分是注释),有的一行太长会自动折到下一行,代码如下:LRESULT APIENTRY MainWndProc( HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) static CHAR szBuf20;/标题文字字符串 HDC hdc;/设备描述表 PAINTSTRUCT ps;/绘图对象 /新建菜单的切换 /封面显示 CH/处理菜单命令的消息 /取低位字节判断 /新建命令 InvalidateRect(hWnd,NULL,TRUE);/
6、更新整个屏幕区域 hdc=BeginPaint(hWnd,&ps); SetTextColor(hdc, RGB(255,255,0); SetBk/背景模式为透明背景; if (bNew)/新建换一句话 /退出命令 DestroyWindow(hWnd); /复制命令 Enable/粘贴命令 /关于命令 /n是输入一个回车 break; default: return (DefWindowProc(hWnd,message,wParam,lParam); return(0); break; default: return(DefWindowProc(hWnd,message,wParam,l
7、Param); break; case WM_DESTROY: PostQuitMessage(0); MessageBox(hWnd,n创建菜单的示范程序! nn编写:刘桂明 2004.8,关于,MB_OK|MB_ICONINFORMATION);MessageBox(NULL,“粘贴”命令的演示。 , 提示 , MB_OK|MB_ICONINFORMATION); break; case IDM_ABOUT:MenuItem(GetMenu(hWnd), IDM_EDITPASTE,MF_BYCOMMAND|MF_ENABLED); break; case IDM_EDITPASTE:br
8、eak; case IDM_EDITCOPY:break; case IDM_EXIT:/输出一句话 TextOut(hdc,80,60,千山万水,在哪儿?,lstrlen(千山万水,在哪儿?); else TextOut(hdc,80,60,万水千山,在这里!,lstrlen(万水千山,在这里!); EndPaint(hWnd,&ps); bNew=!bNew;Mode(hdc,TRANSPARENT);case IDM_NEW:switch(LOWORD(wParam)AR szText=请选择一个菜单项。; hdc=BeginPaint(hWnd,&ps); TextOut(hdc,80,40,szText,lstrlen(szText); TextOut(hdc,100,60,美丽心情! ,lstrlen(美丽心情! ); EndPaint(hWnd,&ps); break; case WM_COMMAND:switch(message) case WM_PAINT:static BOOL bNew=TRUE;保存一下文件,单击编译条上的“构建”按钮,如果出现错误就仔细检查一下,然后单击“执行”按钮,看看前进中的的程序窗口;本节学习了在程序窗口中加入菜单栏的代码设计,如果你成功地完成了练习,请继续学习下一课内容;专心-专注-专业