昨天一直在做avatar头像在工具里的显示,让策划调好头像位置后,保存一个世界矩阵到avatar文件里,游戏里显示avatar头像时,就只需要读取那个世界矩阵就可以了,一切准备工作已经就绪,实验成功了,本来在dialog的消息响应,为了改进操作手段,我决定把鼠标事件放到cstatic里,让策划可以直觉操作,所以,这玩意需要相应2个鼠标事件:
ON_MOUSEMOVE
ON_MOUSEWHEEL
实现当鼠标左键按下,移动鼠标,则移动视图。
当鼠标右键按下,移动鼠标,则旋转avatar。
然而,遇到的问题还是挺多的。
高兴的写好了这些处理代码,各种相应都写好了,结果怎么也相应不了。
原来有一个很重要的原因, 需要给CStatic设置notify,可以在资源界面里改,也可以在创建函数里改,这样一改,就可以支持ON_MOUSEMOVE消息了。可是还有一个,ON_MOUSEWHEEL,还是无法响应。
原来是这样的,CStatic正如其名,他是一个static控件,而static控件默认是无法获取输入焦点的,例如EditCtrl,你一点,就可以输入文字了,但静态控件不同,就是让你看的。所以,为了让它支持支持MOUSEWHEEL消息,就需要让他获取焦点。
简单的,在CStatic 的ON_LBUTTONDOWN和ON_RBUTTONDOWN事件响应里,手动让他SetFocus就行了。
没有焦点的控件,对OnMouseWheel不响应的,所以要下得到焦点.
void CStaticTest::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
SetFocus();
CStatic::OnLButtonDown(nFlags, point);
}
//
void CStaticTest::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
SetFocus();
CStatic::OnRButtonDown(nFlags, point);
}
现在可以:
BOOL CStaticTest::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
// TODO: Add your message handler code here and/or call default
AfxMessageBox("haha");//
return CStatic::OnMouseWheel(nFlags, zDelta, pt);
}
一般意义上,控件不响应消息,可能只有2中原因,一种是外部原因,控件的消息被父控件过滤了,还有就是自身原因啦,这个控件,本身它只不支持某种消息呢,或者是否需要打开某种开关才能支持呢,比如像CStatic的notify开关,以及需要获取焦点才能响应MOUSEWHEEL这样的情况。
分享到:
相关推荐
Static text to display long filenames with ellipses
CStaticEX_Static边框_CStatic_VCCStatic_dlglab.com.zip
CStatic扩展类(labelex.h/labelex.cpp)实例
自定义Static控件响应 MFC
vc\cstatic_digital_clock.zip
CStaticEX_Static边框_CStatic_VCCStatic_dlglab.com_源码.zip
一个简单的数字时钟程序,其中的date类派生于MFC CStatic 基类。 CIVStringSet_Demo.zip CIVStringSet_Source.zip 基于MFC和STL平台的字符串类,可以实现在快速字符串搜索。 enum_display_modes_demo.zip ...
继承CStatic类,实现输出字体属性配置,利用双缓冲。同时可以设置控件的其他属性
鼠标放上去后具有3D边框的CStatic控件。
自定义控件的方法,可以修改控件和文档的颜色。。。。。。。。。。。。。。。。。。。。
CStatic 自绘集合 (含 滚动效果 以及 动态链接)
简单的 CStatic 重绘 就是相应事件 改变颜色 大小等等的
这个超经典的在cstatic静态控件显示图片代码!
MFC控件之静态文本CStatic,使用visual studio2017,纯代码创建静态文本背景颜色,文本内容的改变的小例子。
重载CStatic类实现字体颜色和大小随时变化
CStatic 继承于 CWnd,是一种特殊的窗体。他可以显示文本字符串(这也是最常用的用法)、图标、指针(cursor)、位图和增强图文元件....但是如果把他的属性设置为 SS_NOTIFY,他可以通知其父窗口的击鼠标事件。
本控件只是一个很简单的控件,比任务管理器里的曲线图略复杂,不具有图例、鼠标移动可以捕捉曲线上的坐标等特性。 具体如下: 1)从CStatic派生,容易在对话框中使用。 2)能够随对话框的缩放自动改变大小,这里...
此工程可以实现为CStatic控件添加超级连接,可以实现一般的应用软件中超级连接到公司主页或者邮箱等等功能
vc CStatic超级链接效果 ,一个简单的空间