修改鼠标光标的形状(二)
2007-05-07 22:11
225 查看
继续上一篇文章未完的话题,下面继续通过代码对之前提到的三种方法进行解释。
在 CMyDialog 增加成员变量 HCURSOR m_hMyCurosr; 并在 CMyDialog 构造函数中将其初始化:
m_hMyCurosr = NULL;
我的想法是通过 CMyDialog::m_hMyCurosr 来保存所要使用的鼠标光标形状,当其为 NULL 的时候,则使用系统默认的鼠标光标。另外在 CMyDialog 中增加 public 成员函数 SetMyCursor() 供外部调用(这个大家应该可以理解吧),其实现如下:
//////////////////////////////////////////////////////
//
// 函数名: CMyDialog::SetMyCursor
//
// 访问权: public
//
// 描述: 设置新的鼠标光标
//
// 参数:
// hCursor
// 新的鼠标光标句柄,为 NULL 表示使用系统默认鼠标光标形状
//
// 返回值: 返回之前所使用的鼠标光标句柄
//
//////////////////////////////////////////////////////
HCURSOR CMyDialog::SetMyCursor(HCURSOR hCursor)
{
HCURSOR hRet = m_hMyCurosr;
m_hMyCurosr = hCursor;
return hRet;
}
方法一:在处理 WM_SETCURSOR 消息的时候调用 API 函数 SetCursor() 来修改鼠标光标形状。
如果鼠标引起光标在某个窗口中移动,且鼠标输入没有被捕获时,该窗口就会收到 WM_SETCURSOR 消息,我们可以把 WM_SETCURSOR 理解成是专门用来设置鼠标光标形状的消息,在 VC6 中通过 ClassWizard 可以自动生成 WM_SETCURSOR 对应的消息函数 OnSetCursor(),其实现如下:
ON_WM_SETCURSOR()
BOOL CMyDialog::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
if ((HTCLIENT == nHitTest)
&& (m_hMyCurosr != NULL))
{
::SetCursor(m_hMyCurosr);
return TRUE;
}
return CDialog::OnSetCursor(pWnd, nHitTest, message);
}
*要注意的是,当设置了鼠标光标以后,您应该让函数返回 TRUE 以防止系统再作缺省处理。
在 CMyDialog 增加成员变量 HCURSOR m_hMyCurosr; 并在 CMyDialog 构造函数中将其初始化:
m_hMyCurosr = NULL;
我的想法是通过 CMyDialog::m_hMyCurosr 来保存所要使用的鼠标光标形状,当其为 NULL 的时候,则使用系统默认的鼠标光标。另外在 CMyDialog 中增加 public 成员函数 SetMyCursor() 供外部调用(这个大家应该可以理解吧),其实现如下:
//////////////////////////////////////////////////////
//
// 函数名: CMyDialog::SetMyCursor
//
// 访问权: public
//
// 描述: 设置新的鼠标光标
//
// 参数:
// hCursor
// 新的鼠标光标句柄,为 NULL 表示使用系统默认鼠标光标形状
//
// 返回值: 返回之前所使用的鼠标光标句柄
//
//////////////////////////////////////////////////////
HCURSOR CMyDialog::SetMyCursor(HCURSOR hCursor)
{
HCURSOR hRet = m_hMyCurosr;
m_hMyCurosr = hCursor;
return hRet;
}
方法一:在处理 WM_SETCURSOR 消息的时候调用 API 函数 SetCursor() 来修改鼠标光标形状。
如果鼠标引起光标在某个窗口中移动,且鼠标输入没有被捕获时,该窗口就会收到 WM_SETCURSOR 消息,我们可以把 WM_SETCURSOR 理解成是专门用来设置鼠标光标形状的消息,在 VC6 中通过 ClassWizard 可以自动生成 WM_SETCURSOR 对应的消息函数 OnSetCursor(),其实现如下:
ON_WM_SETCURSOR()
BOOL CMyDialog::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
if ((HTCLIENT == nHitTest)
&& (m_hMyCurosr != NULL))
{
::SetCursor(m_hMyCurosr);
return TRUE;
}
return CDialog::OnSetCursor(pWnd, nHitTest, message);
}
*要注意的是,当设置了鼠标光标以后,您应该让函数返回 TRUE 以防止系统再作缺省处理。
相关文章推荐
- 修改鼠标光标的形状
- 修改鼠标光标的形状(三)
- 修改鼠标光标的形状(四)
- 修改鼠标光标的形状
- 修改鼠标光标的形状(一)
- 修改鼠标光标的形状(五)
- [学习笔记]Java窗体中如何改变鼠标光标的形状
- MFC 如何设置鼠标的形状 如何设置光标热区
- C#设置鼠标在控件上面时,改变光标形状
- MFC 如何设置鼠标的形状 如何设置光标热区
- 改变光标(鼠标形状)后如何消防闪烁
- 修改Android系统的鼠标光标
- VC6.0实现鼠标光标形状及大小的定制
- VC:设置光标(鼠标)形状
- 改变鼠标光标形状
- 改变光标(鼠标形状)后如何消防闪烁
- Windows鼠标光标形状
- canvas 修改光标形状 滑过事件 点击事件
- 鼠标触及形状问题(自定义鼠标光标类型)
- VC6.0实现鼠标光标形状及大小的定制