如何响应一个CEdit 或者 CStatic 上鼠标移动到他上面的消息? 如何响应一个CEdit 或者 CStatic 上鼠标移动到他上面的消息? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 子类化,或者从CEdit派生个类来处理。 "子类化,或者从CEdit派生个类来处理。"我怎么子类化?我是想派生一个类来处理的,但是我不知道怎么做。是重载什么函数还是……,请帮帮我好吗? WM_MOUSEMOVE,然后判断跟你的那个控件的rect是不是相交。 Insert->New ClassName : CMyEditBase class : CEdit映射WM_MOUSEMOVE消息.hclass CMyEdit : CEdit{...protected: //{{AFX_MSG(CMyEdit) afx_msg void OnMouseMove(UINT nFlags, CPoint point); //}}AFX_MSG};.cppvoid CMyEdit::OnMouseMove(UINT nFlags, CPoint point) { CEdit::OnMouseMove(nFlags, point); //自己要处理的代码。} 初始化中添加:CRect rect; //全局变量GetDlgItem(IDC_STATIC1)->GetWindowRect(&rect);ScreenToClient(&rect);:: OnMouseMove(UINT nFlags,CPoint Point){if(rect.PtInRect(Point)) MessageBox("鼠标载这里")} void CDlgLabel::OnMouseMove(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CWnd *pW =this->ChildWindowFromPoint(point); if(pW==NULL) return; int nCtrlID=::GetDlgCtrlID(pW->m_hWnd); switch(nCtrlID) { case IDC_EDIT1: //编辑框 break; case IDC_STATIC: //静态文本框 break; default: break; }} 对于CStatic,需要设置notify属性 to : lhb_780902(逐日)CStatic 根本就没有 ON_WM_MOUSEMOVEove响应消息。 WM_MOUSEMOVE,然后判断rect是否在你所要指定的区域里 TO: gxingmin(小高) 我用你的方法为什么没通过! http://www.vckbase.com/code/listcode.asp?mclsid=3&sclsid=301看看这个例子 TreeCtrl响应TVN_ENDLABELEDIT的问题 ** 不是一般的难题: 给你一个别人程序的窗口的句柄, 如何知道这个窗口的客户区位置? ** 3DES加密算法 编码问题,急,分不够可在加 微软会取消win32 api吗? 如何快速得到一个节点下所有的机器IP 有关打印的问题 请教关于CObList有排序成员函数吗,如果有,原型是什么? [求助]一个关于如何在MFC单文档中新建窗口的问题,求大神帮帮忙 BCG GridControl 中关于checkbox状态问题 关于动态生成的菜单的消息响应问题? 用CreateWindowEx制作工具条的问题
我怎么子类化?我是想派生一个类来处理的,但是我不知道怎么做。是重载什么函数还是……,请帮帮我好吗?
Name : CMyEdit
Base class : CEdit
映射WM_MOUSEMOVE消息
.hclass CMyEdit : CEdit
{
...
protected:
//{{AFX_MSG(CMyEdit)
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
//}}AFX_MSG
};.cpp
void CMyEdit::OnMouseMove(UINT nFlags, CPoint point)
{
CEdit::OnMouseMove(nFlags, point); //自己要处理的代码。
}
GetDlgItem(IDC_STATIC1)->GetWindowRect(&rect);ScreenToClient(&rect);:: OnMouseMove(UINT nFlags,CPoint Point)
{
if(rect.PtInRect(Point))
MessageBox("鼠标载这里")
}
{
// TODO: Add your message handler code here and/or call default
CWnd *pW =this->ChildWindowFromPoint(point);
if(pW==NULL)
return;
int nCtrlID=::GetDlgCtrlID(pW->m_hWnd);
switch(nCtrlID)
{
case IDC_EDIT1:
//编辑框
break;
case IDC_STATIC:
//静态文本框
break;
default:
break;
}}
CStatic 根本就没有 ON_WM_MOUSEMOVEove响应消息。
看看这个例子