对话框响应鼠标事件

对话框响应鼠标事件

ID:40641958

大小:29.50 KB

页数:4页

时间:2019-08-05

对话框响应鼠标事件_第1页
对话框响应鼠标事件_第2页
对话框响应鼠标事件_第3页
对话框响应鼠标事件_第4页
资源描述:

《对话框响应鼠标事件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、pMsg是PreTranslateMessage传进来的参数,你在类向导里添加虚函数时vc自动生成;m_Btn是定义在CMyDlg类里的成员变量,可以是public的BOOLCMyDlg::PreTranslateMessage(MSG*pMsg){//TODO:Addyourspecializedcodehereand/orcallthebaseclassif(WM_RBUTTONDOWN==pMsg->message){RECTrect;m_btn.GetWindowRect(&rect);POINTpoint;GetCursorPos(&point)

2、;if(PtInRect(&rect,point)){AfxMessageBox("OnRButton1");}}returnCDialog::PreTranslateMessage(pMsg);}在WM_CONTEXTMENU中处理//自定义右键菜单voidCMyEdit::OnContextMenu(CWnd*pWnd,CPointpoint){if(point.x==-1&&point.y==-1){//keystrokeinvocationCRectrect;GetClientRect(rect);ClientToScreen(rect);poin

3、t=rect.TopLeft();point.Offset(5,5);}CMenumenu;VERIFY(menu.LoadMenu(IDR_VOL_VALUE));CMenu*pPopup=menu.GetSubMenu(0);ASSERT(pPopup!=NULL);CTestView*pView=(CTestView*)(GetParent());pView->m_pCurEdit=this;pPopup->TrackPopupMenu(TPM_LEFTALIGN

4、TPM_RIGHTBUTTON,point.x,point.y,pView);}在它的

5、父窗口(CTestView)中定义了一个CMyEdit的指针CEditBox*m_pCurEdit;用来保存当然右键点击的是哪个控件,在控件的OnContextMenu()函数中把this指针付给其父控件的m_pCurEdit变量,这样其父窗口就得到了点击的控件。右键响应函数放在它的父窗口中,响应函数类似如下://电压等幅值voidCTestView::OnVolEqual() {//TODO:Addyourcommandhandlercodehereif(m_pCurEdit==&m_valueUa){AfxMessageBox("Ua");}m_pCu

6、rEdit=NULL;}如何让编辑框响应鼠标单击分类:VC相关2007-03-0820:54824人阅读评论(2)收藏举报鼠标单击会产生WM_LBUTTONDOWN消息,此消息属于标准窗口消息。标准窗口消息的路由是从子类向父类传递,因此我们可以利用标准消息的路由来实现。默认情况下编辑框是不响应鼠标单击的,因为当你单击编辑框时产生的WM_LBUTTONDOWN消息都流向了编辑框的基类CEdit。所以我们要想编辑框响应鼠标单击,就得为编辑框派生一个新类。这样当我们单击编辑框时,WM_LBUTTONDOWN消息就会流向我们派生的新类,在这个新类中我们就有机会处理

7、该消息。比如:首先建一个基于对话框的应用程序,工程名为Test,建成以后通过类向导给当前工程添加一个新类取名为NewEdit,这样在我们的工程Test中就有了一个新类CNewEdit然后通过类向导,为编辑框关联一个CNewEdit类型的控件变量CNewEdit  m_newEdit;再给我们的新类CNewEdit添加一个WM_LBUTTONDOWN消息处理函数,在这个消息处理函数中我们就可以处理编辑框的鼠标单击消息了!!其实上面的方法是通用的,我们要让编辑框响应鼠标双击,右击,让按钮响应鼠标移动等等,我们都可以利用上面的方法来实现,实现的关键在于你能否理解

8、标准消息的传递路由。 让编辑框响应鼠标单击新方法:假设有一个EditBox关联的CEdti变量为m_test建一个基于对话框的程序,然后重载PreTranslateMessage函数添加如下代码:BOOLCTestDialogDlg::PreTranslateMessage(MSG*pMsg){   //TODO:Addyourspecializedcodehereand/orcallthebaseclass   if(pMsg->message==WM_LBUTTONDOWN&& //鼠标单击消息      pMsg->hwnd==m_test.m_hW

9、nd)   //产生单击消息的窗口为编辑框   {      TR

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。