我目前还在做Windows程序设计的课程实验,开发一个编辑器。我尝试设置鼠标光标样式为IDC_IBEAM
SetCursor(LoadCursor(IDC_IBEAM));
但是没有什么作用,鼠标会在点击左键的时候消失一下,一移动又回来了,不过还是原来的光标。
在网上查到,需要在SetCursor之前先设置原来的光标不显示,设置之后再显示新的光标。
ShowCursor(FALSE); SetCursor(LoadCursor(IDC_IBEAM)); ShowCursor(TRUE);
结果依然令人失望。幸运的是,我在网上找到了这样一个解答:
如果产生了鼠标消息,系统可能会用窗口的hcursor重新刷新光标,
所以用
SetClassLong(hwnd,GCL_HCURSOR,(long)LoadCursor(NULL,IDC_CROSS));
才能一直保持。
按这个方法尝试后,鼠标成功地变成了插入符,并且不受点击等鼠标操作影响。
MessageBox 是Windows系统库 user32.dll 的一个导出函数,用于显示一个提示消息对话框,其原型定义如下 :
int MessageBox( HWND hWnd, // handle to owner window LPCTSTR lpText, // text in message box LPCTSTR lpCaption, // message box title UINT uType // message box style );
可以看到有四个参数,第一个是消息框所有者窗口句柄,可以是NULL,第二个是消息框的文本内容,第三个是消息框标题,第四个参数是消息框样式(按钮和图标)。
按钮样式及常量(可用【样式=数字】表示)
0、确定按钮; _MB_OK=@0x0
1、确定、取消按钮; _MB_OKCANCEL=@0x1
2、终止、重试、忽略按钮;_MB_ABORTRETRYIGNORE=@0x2
3、是、否、取消按钮;_MB_YESNOCANCEL=@0x3
4、是、否按钮;_MB_YESNO=@0x4
5、重试取消钮;_MB_RETRYCANCEL=@0x5
6、终止、重试、继续 0x00000006(需声明API才能使用)
图标常量
_MB_ICONASTERISK=@0x40/ “i”图标
_MB_ICONEXCLAMATION=@0x30/ “!”号图标
_MB_ICONHAND=@0x10 / “×” 号图标
_MB_ICONINFORMATION=@0x40 / “i” 图标
_MB_ICONMASK=@0xF0 / “i” 图标
_MB_ICONQUESTION=@0x20/ “?” 号图标
_MB_ICONSTOP=@0x10/ “×” 号图标
按钮返回值
1=确定钮; IDOK
2=取消钮; IDCANCEL
3=终止钮; IDABORT
4=重试钮; IDRETRY
5=忽略钮;IDIGNORE
6=是钮;IDYES
7=否钮;IDNO
当用户点击右上角的关闭按钮时,发出的是WM_CLOSE消息,该消息意味着关闭窗口。
这个消息的处理方式是调用DestroyWindow()来发出WM_DESTROY消息。
而WM_DESTROY消息意味着关闭程序,这个消息的处理方式是调用PostQuitMessage()来发送WM_QUIT,以退出程序。