110,534
社区成员
发帖
与我相关
我的任务
分享
响应消息WM_SETCURSOR消息吧,在里面使用SetCursor
重载类的WM_NCHITTEST,改变鼠标
在父窗口的WM_MOUSEMOVE和WM_PAINT里向子窗口发送WM_NCHITTEST消息
在WM_SETCURSOR消息中设置鼠标
BOOL CAboutDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
// TODO: Add your message handler code here and/or call default
POINT point;
GetCursorPos(&point); //取得当前鼠标位置
//假设资源中这个图标的ID是IDC_IMAGE
CWnd *pCtrl = this->GetDlgItem(IDC_IMAGE);
RECT rect;
pCtrl->GetWindowRect(&rect); //取得控件矩形坐标
if( point.x >= rect.left && point.x <= rect.right &&
point.y >= rect.top && point.y <= rect.bottom)
{
//m_hCurNoDrop是在构造函数中用LoadCursor装入
SetCursor(m_hCurNoDrop);
return true;
}
return CDialog::OnSetCursor(pWnd, nHitTest, message);
}
private void Button1_Click(System.Object sender, System.EventArgs e)
{
OpenFileDialog fd = new OpenFileDialog();
fd.Filter = "图像文件(*.jpg;*.gif;*.png)|*.jpg;*.gif;*.png";
if (fd.ShowDialog() == Windows.Forms.DialogResult.OK) {
Image fn = Image.FromFile(fd.FileName);
Bitmap bitmap = new Bitmap(fn);
IntPtr handle = bitmap.GetHicon();
Cursor myCursor = new Cursor(handle);
this.Cursor = myCursor;
}
}
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim fd As OpenFileDialog = New OpenFileDialog()
fd.Filter = "图像文件(*.jpg;*.gif;*.png)|*.jpg;*.gif;*.png"
If fd.ShowDialog() = Windows.Forms.DialogResult.OK Then
Dim fn As Image = Image.FromFile(fd.FileName)
Dim bitmap As New Bitmap(fn)
Dim handle As IntPtr = bitmap.GetHicon()
Dim myCursor As New Cursor(handle)
Me.Cursor = myCursor
End If
End Sub
this.Cursor = Cursors.UpArrow; // 默认光标
this.Cursor = new Cursor(@"c:\1.ico"); // 自定义