3.24-如何动态的改变某个视图的光标?
来源:互联网 发布:歼15模型淘宝 编辑:程序博客网 时间:2024/05/16 10:04
每当鼠标指针移动时,Windows通过鼠标指针把WM_SETCURSOR消息传递给窗口,当窗口没有处理WM_SETCURSOR消息时,DefWindowProc()按照下面的方式自动的设置光标:
※如果光标位于窗口区域外部,(单击测试代码不等于HI_CLIENT),调用::SetCursor(),设置光标为标准箭头(IDC_ARROW).
※如果光标位于窗口区域内部,,(单击测试代码等于HI_CLIENT),调用::SetCursor(),设置光标为与该窗口相关联的WNDCLASS结构的hCursor字段。
这样,通过在自己的代码中处理WM_SETCURSOR消息,当鼠标指针访问窗口的成员区域时,我们就能够动态的选择光标的形状了。
第一步:在视图类中增加HCURSOR类型的成员变量,为每个要显示的光标创建一个变量
HCURSOR m_hcurSquare,m_hcurCircle;
第二步:在视图类的构造函数中增加代码,装载相应的光标,初始化在第一步中声明的HCURSOR成员变量,同时添加光标资源
m_hcurCircle=AfxGetApp()->LoadCursor(IDC_CIRCLE);
ASSERT(m_hcurCircle != NULL);
m_hcurSquare=AfxGetApp()->LoadCursor(IDC_SQUARE);
ASSERT(m_hcurSquare != NULL);
第三步:增加WM_SETCURSOR消息处理函数,
BOOL CDrawView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
// TODO: Add your message handler code here and/or call default
// 1 - Use dynamic cursor only in client area
if( nHitTest == HTCLIENT )
{
// 2 - If no dynamic cursor, use cross as default
if( !m_bDynamicCursor )
{
SetCursor( m_hcurCross );
return TRUE; // Cursor was set
}
else
{
// 3 - Select correct dynamic cursor
switch( GetDocument()->m_shape )
{
default:
ASSERT( FALSE );
break;
case CDrawDoc::SQUARE:
SetCursor( m_hcurSquare );
return TRUE; // Cursor was set
case CDrawDoc::CIRCLE:
SetCursor( m_hcurCircle );
return TRUE; // Cursor was set
}
}
}
// 4 - Otherwise call base class to get standard cursor
return CView::OnSetCursor(pWnd, nHitTest, message);
}
- 3.24-如何动态的改变某个视图的光标?
- 3.24如何动态的改变某个视图的光标?
- 动态改变按钮上的光标
- 如何改变TextInput里光标的位置
- 改变Edit的光标
- 如何动态设置窗口的光标
- 教你如何改变EditText的光标和游标
- 如何改变视图窗口的颜色
- vim 光标的形状改变
- EditText光标位置的改变
- 改变UITextField的光标颜色
- 改变EditText光标的颜色
- 动态改变鼠标光标
- Android 代码当中动态改变某个控件的位置
- MFC 如何改变某个子控件的文本颜色
- 如何遍历与某个文档关联的所有视图?
- 如何动态改变滚动条的颜色
- 如何动态改变对话框的菜单。。。
- 抽象类和接口的区别,使用场景
- 享元模式
- 谷歌老了!百度雄起!!!
- js/css在ajax UpdatePanel 中没有效果的解决方法
- Java单例模式与延迟加载分析 Singleton & Lazy Initialized
- 3.24-如何动态的改变某个视图的光标?
- 从事ERP行业经历的三个阶段的经验总结
- JavaScript无提示关闭窗口
- OpenGL ES 2.0 Programming Guide这本书相关资源下载及编译环境建立说明
- Java中的public、 protected、 default、 private
- J2ME手机移动通讯开发记录存储管理系统的例子
- Javascript 数组学习一则
- enctype="multipart/form-data" 作用
- 创建了一个arm cortex m3 的学习群大家进来交流吧