创建菜单Menu

A:静态创建菜单

步骤:

一、在资源中插入菜单资源(ID为:IDR_MENU1):


二、添加右键单击处理函数OnRButtonDown,函数代码为:

void CaaDlg::OnRButtonDown(UINT nFlags, CPoint point)
{
	CMenu menu;
	CMenu* pPopupMenu;
	menu.LoadMenu(IDR_MENU1);	
	pPopupMenu=menu.GetSubMenu(0);
	//方法一
//     ClientToScreen(&point);
// 	pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_TOPALIGN,point.x,point.y,this,NULL);
	//方法二
 	CPoint pointA;
	::GetCursorPos(&pointA);
	pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_TOPALIGN,pointA.x,pointA.y,this,NULL);
	CDialogEx::OnRButtonDown(nFlags, point);
}

B:动态创建菜单

一:在Resource.h头文件中定义资源ID。如:

#define  IDC_SHOW  1026

#define  IDC_EXIT      1027

二:在右键响应函数中添加代码:

LPPOINT lpoint=new tagPOINT; 
::GetCursorPos(lpoint);//得到鼠标位置 
CMenu menu; 
menu.CreatePopupMenu();//声明一个弹出式菜单 		
menu.AppendMenu(MF_STRING,IDC_SHOW,"显示"); 
menu.AppendMenu(MF_STRING,IDC_EXIT,"退出");
//确定弹出式菜单的位置 
menu.TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this); 
//资源回收 
HMENU hmenu=menu.Detach(); 
menu.DestroyMenu(); 
delete lpoint; 
运行结果:


三、如果要为显示、退出按钮添加单击响应函数,需要将响应函数和ID关联。

函数声明与实现:

afx_msg void OnShow();

void CDeskClockDlg::OnShow() 
{	
	this->ShowWindow(SW_SHOW);
}
在消息映射宏添加关联:

BEGIN_MESSAGE_MAP

ON_BN_CLICKED(IDC_SHOW, OnShow)

END_MESSAGE_MAP


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值