Win32API之设置鼠标光标样式

我目前还在做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));

才能一直保持。

按这个方法尝试后,鼠标成功地变成了插入符,并且不受点击等鼠标操作影响。

Win32API之MessageBox(转)

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和WM_DESTROY

当用户点击右上角的关闭按钮时,发出的是WM_CLOSE消息,该消息意味着关闭窗口。

这个消息的处理方式是调用DestroyWindow()来发出WM_DESTROY消息。

而WM_DESTROY消息意味着关闭程序,这个消息的处理方式是调用PostQuitMessage()来发送WM_QUIT,以退出程序。