《Windows程序设计》之菜单

感觉这些没啥可写的,就把两个合成一个吧,第一段代码是MENUDEMO中的部分,第二段是POPMENU。

	switch(message)
	{
	case WM_COMMAND:
		//获取菜单句柄
		hMenu=GetMenu(hwnd);
		//LOWORD(wParam)是菜单ID
		switch(LOWORD(wParam))
		{
		case IDM_FILE_NEW:
		case IDM_FILE_OPEN:
		case IDM_FILE_SAVE:
		case IDM_FILE_SAVE_AS:
			MessageBeep(0);
			break;
		case IDM_APP_EXIT:
			SendMessage(hwnd,WM_CLOSE,0,0);
			return 0;
		case IDM_EDIT_UNDO:
		case IDM_EDIT_CUT:
		case IDM_EDIT_COPY:
		case IDM_EDIT_PASTE:
		case IDM_EDIT_CLEAR:
			MessageBeep(0);
			return 0;
		case IDM_BKGND_WHITE:
		case IDM_BKGND_LTGRAY:
		case IDM_BKGND_GRAY:
		case IDM_BKGND_DKGRAY:
		case IDM_BKGND_BLACK:
			//这个是设置选定状态取消
			CheckMenuItem(hMenu,iSelection,MF_UNCHECKED);
			//获取菜单ID
			iSelection=LOWORD(wParam);
			//设置为选定状态
			CheckMenuItem(hMenu,wParam,MF_CHECKED);
			//替换背景刷子
			SetClassLong(hwnd,GCL_HBRBACKGROUND,(LONG)GetStockObject(idColor[LOWORD(wParam)-IDM_BKGND_WHITE]));
			//刷新
			InvalidateRect(hwnd,NULL,TRUE);
			return 0;
		case IDM_TIMER_START:
			if(SetTimer(hwnd,ID_TIMER,1000,NULL))
			{
				//设置菜单id子项的状态
				EnableMenuItem(hMenu,IDM_TIMER_START,MF_GRAYED);
				EnableMenuItem(hMenu,IDM_TIMER_STOP,MF_ENABLED);
			}
			return 0;

		point.x=LOWORD(lParam);
		point.y=HIWORD(lParam);
		//窗口坐标转屏幕坐标
		ClientToScreen(hwnd,&point);
		//指定位置显示菜单,坐标为屏幕坐标
		TrackPopupMenu(hMenu,TPM_RIGHTBUTTON,point.x,point.y,0,hwnd,NULL);

第二段代码只是两个函数吧

再加一些内容吧:

GetSystemMenu

函数功能:该函数允许应用程序为复制或修改而访问窗口菜单(系统菜单或控制菜单)。

函数原型:HMENU GetSystemMenu(HWND hWnd,BOOL bRevert);  

参数:  hWnd:拥有窗口菜单拷贝的窗口的句柄。  

bRevert:指定将执行的操作。如果此参数为FALSE,GetSystemMenu返回当前使用窗口菜单的拷贝的句柄。

该拷贝初始时与窗口菜单相同,但可以被修改。  

如果此参数为TRUE,GetSystemMenu重置窗口菜单到缺省状态。如果存在先前的窗口菜单,将被销毁。


	hMenu=GetSystemMenu(hwnd,FALSE);
	//画一条水平区分线
	AppendMenu(hMenu,MF_SEPARATOR,0,NULL);
	//动态添加子项
	AppendMenu(hMenu,MF_STRING,IDM_SYS_ABOUT,TEXT("About..."));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值