对话框响应鼠标事件.doc_第1页
对话框响应鼠标事件.doc_第2页
对话框响应鼠标事件.doc_第3页
对话框响应鼠标事件.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

pMsg是PreTranslateMessage传进来的参数,你在类向导里添加虚函数时vc自动生成;m_Btn是定义在CMyDlg类里的成员变量,可以是public的BOOL CMyDlg:PreTranslateMessage(MSG* pMsg) / TODO: Add your specialized code here and/or call the base classif (WM_RBUTTONDOWN = pMsg-message)RECT rect;m_btn.GetWindowRect(&rect);POINT point;GetCursorPos(&point);if (PtInRect(&rect, point)AfxMessageBox(OnRButton1);return CDialog:PreTranslateMessage(pMsg);在WM_CONTEXTMENU中处理/自定义右键菜单void CMyEdit:OnContextMenu(CWnd* pWnd, CPoint point)if (point.x = -1 & point.y = -1)/keystroke invocationCRect rect;GetClientRect(rect);ClientToScreen(rect);point = rect.TopLeft();point.Offset(5, 5);CMenu menu;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 | TPM_RIGHTBUTTON, point.x, point.y,pView);在它的父窗口(CTestView)中定义了一个CMyEdit的指针CEditBox *m_pCurEdit;用来保存当然右键点击的是哪个控件,在控件的OnContextMenu()函数中把this指针付给其父控件的m_pCurEdit变量,这样其父窗口就得到了点击的控件。右键响应函数放在它的父窗口中,响应函数类似如下:/电压等幅值void CTestView:OnVolEqual() / TODO: Add your command handler code hereif(m_pCurEdit = &m_valueUa)AfxMessageBox(Ua);m_pCurEdit = NULL;如何让编辑框响应鼠标单击 分类: VC相关 2007-03-08 20:54 824人阅读 评论(2) 收藏 举报 鼠标单击会产生WM_LBUTTONDOWN消息,此消息属于标准窗口消息。标准窗口消息的路由是从子类向父类传递,因此我们可以利用标准消息的路由来实现。默认情况下编辑框是不响应鼠标单击的,因为当你单击编辑框时产生的WM_LBUTTONDOWN消息都流向了编辑框的基类CEdit。所以我们要想编辑框响应鼠标单击,就得为编辑框派生一个新类。这样当我们单击编辑框时,WM_LBUTTONDOWN消息就会流向我们派生的新类,在这个新类中我们就有机会处理该消息。比如:首先建一个基于对话框的应用程序,工程名为Test,建成以后通过类向导给当前工程添加一个新类取名为NewEdit,这样在我们的工程Test中就有了一个新类CNewEdit然后通过类向导,为编辑框关联一个CNewEdit类型的控件变量CNewEdit m_newEdit;再给我们的新类CNewEdit添加一个WM_LBUTTONDOWN消息处理函数,在这个消息处理函数中我们就可以处理编辑框的鼠标单击消息了!其实上面的方法是通用的,我们要让编辑框响应鼠标双击,右击,让按钮响应鼠标移动等等,我们都可以利用上面的方法来实现,实现的关键在于你能否理解标准消息的传递路由。让编辑框响应鼠标单击新方法:假设有一个EditBox关联的CEdti变量为m_test建一个基于对话框的程序,然后重载PreTranslateMessage函数添加如下代码: BOOL CTestDialogDlg:PreTranslateMessage(MSG* pMsg) / TODO: Add your specialized code here and/or call the base class if( pMsg-message = WM_LBUTTONDOWN & /鼠标单击消息 pM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论