展开全部
hopeztm的实现思路有些问题:
1)楼主要的是静态文本框,怎么能随便换成CEdit?
必须继承自CStatic
2)消32313133353236313431303231363533e58685e5aeb931333262353362息映射有ON_WM_MOUSELEAVE()这个宏吗?
因为MFC不支持WM_MOUSELEAVE消息,必须将WM_MOUSELEAVE看成是自定义消息,手工添加消息映射宏:ON_MESSAGE(WM_MOUSELEAVE, myFunc);
myFunc的函数签名为:afx_msg LRESULT myFunc(WPARAM, LPARAM);
3)第五条能这样关联吗?
通过SubClassDlgItem进行关联。
我做了个CClrStatic的类,头文件为ClrStatic.h,CPP文件为ClrStatic.cpp。楼主可以看下。
另外需要对做一些解释:
1)WM_MOUSELEAVE可以看成是自定义消息,该消息WINDOWS默认是不会发送给我们的控件的,必须为控件先调用TrackMouseEvent函数才能在鼠标离开控件时,控件能收到WM_MOUSELEAVE
2)当鼠标在控件中时,可以简单捕获WM_MOUSEMOVE消息,需要注意的是在鼠标移动时,不能总是Invalidate,否则控件比较大时,会出现闪屏。当鼠标进入控件或离开时,简单关联一个BOOL变量,让CClrStatic知道,当前鼠标是否在控件里或离开,第一次进入控件即首次获得WM_MOUSEMOVE消息时,将BOOL变量设置成TRUE,并调用一