MFC_8.27_Windows窗口响应鼠标、键盘并退出询问
Windows窗口响应鼠标、键盘并退出询问
软件版本VC++ 6.0,新建一个应用程序外壳:
- 【File】-【new】- Projects【Win32 Application】- input projectname -【OK】
- 【An empty project】-【Finish】-【OK】
为应用程序添加源文件:
- 【File】-【new】- Files【Win32 Application】- input filename -【OK】
写入代码如下
1. 头文件:
#include
#include
2. 窗口过程函数的声明(一般包含在[.h]的文件中,除此都为cpp文件):
LRESULT CALLBACK WinSunProC(HWND hwnd, //handle to window——窗口句柄UINT uMsg, //message identifier——消息代码WPARAM wParam, //first message parameter——消息代码的两个参数LPARAM lParam //second message parameter
);
3. WinMain函数(windows程序的入口点函数,与DOS程序的入口点函数main作用相同,当WinMain函数结束或返回时,Windows应用程序结束):
int WINAPI WinMain(HINSTANCE hInstance, //handle to current instance——该程序当前运行的实例的句柄 HINSTANCE hPrecInstance, //handle to precious instance——当前实例的前一个实例的句柄LPSTR lpCmdLine, //commend line——指定传给应用程序的命令行参数//(exp.记事本软件打开txt文件时,定参为文件的路径)int nCmdShow //show state——指定程序的窗口如何显示(通常不理会)
)
{
4. 设计一个窗口类:
WNDCLASS wndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0; //这两个用不上给0就行
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);//(强转)窗口背景为黑色
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS); //鼠标光标为十字光标
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR); //最小化图标
wndcls.hInstance=hInstance; //实例句柄
wndcls.lpfnWndProc=WinSunProc; //窗口处理过程(=上面自己取的名字,待会下面自己再定义)
wndcls.lpszClassName="Angie_Drinking"; //窗口类名
wndcls.lpszMenuName=NULL; //窗口菜单
wndcls.style=CS_HREDRAW|CS_VREDRAW; //窗口类型
RegisterClass(&wndcls);
——————————————注释: *MSDN 中对于 WNDCLASS 的定义—————————————-
typedef struct _WNDCLASS { UINT style; WNDPROC lpfnWndProc; int cbClsExtra;int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName;
} WNDCLASS, *PWNDCLASS;
style
- Specifies the class style(s). This member can be any combination of the class styles.
| Style | Action |
|---|---|
| CS_BYTEALIGNCLIENT | 在字节边界上(在x方向上)定位窗口的用户区域的位置。 |
| CS_BYTEALIGNWINDOW | 在字节边界上(在x方向上)定位窗口的位置 |
| CS_CLASSDC | 该窗口类的所有窗口实例都共享一个窗口类DC |
| CS_DBLCLKS | 允许向窗口发送双击鼠标键的消息。 |
| CS_GLOBALCLASS | 当调用CreateWindow 或 CreateWindowEx 函数来创建窗口时允许它的hInstance参数和注册窗口类时传递给RegisterClass 的 hInstance参数不同。如果不指定该风格,则这两个 hInstance 必须相同。 |
| CS_HREDRAW | 当水平长度改变或移动窗口时,重画整个窗口 |
| CS_VREDRAW | 当垂直长度改变或移动窗口时,重画整个窗口 |
| CS_NOCLOSE | 禁止系统菜单的关闭选项 |
| CS_OWNDC | 给予每个窗口实例它本身的DC(设备描述表(Device Context),简称DC)。注意,尽管这样是很方便,但它必须慎重使用,因为每个DC大约要占800个字节的内存。 |
| CS_PARENTDC | 将子窗口的裁剪区域设置到父窗口的DC中去,这样子窗口便可以在父窗口上绘制自身。注意,这是子窗口还是从系统缓存中获取DC,而不是使用父窗口的DC。使用该风格可以提高系统性能。 |
| CS_SAVEBITS | 以位图形式保存被该窗口遮挡的屏幕部分,这样当给窗口移动以后,系统便可以用该保存的位图恢复屏幕移动的相应部分,从而系统不用向被该窗口遮挡的窗口发送 WM_PAINT 消息。该特性对于菜单类型的窗口比较合适,因为它通常是简短的显示一下之后便消失。设置该特性将增加显示该窗口的时间,因为它通常要先分配保存位图的内存。 |
lpfnWndProc
- Pointer to the window procedure. You must use the CallWindowProc function to call the window procedure.
- 窗口处理过程(=上面自己取的名字,待会下面自己再定义里面的内容)
cbClsExtra
- Specifies the number of extra bytes to allocate following the window-class structure. The system initializes the bytes to zero.
cbWndExtra
- Specifies the number of extra bytes to allocate following the window instance. The system initializes the bytes to zero.
hInstance
- Handle to the instance that contains the window procedure for the class.
- 标识了该窗口类的窗口过程所在的模块实例的句柄,不能为NULL
hIcon
- Handle to the class icon. This member must be a handle to an icon resource. If this member is NULL, the system provides a default icon.
- 标识了该窗口类的图标。hIcon字段必须是一个图标的句柄;若hIcon字段为NULL,那么系统将提供一个默认的图标。
| LoadIcon(NULL,下面的选项) | 如果要使用系统的图标 |
|---|---|
| IDI_APPLICATION | 默认程序图标(编译器图形) |
| IDI_ASTERISK | Asterisk icon.(蓝底圆形感叹号) |
| IDI_ERROR | Hand-shaped icon.(红底圆形一个叉) |
| IDI_EXCLAMATION | 感叹号图标(黄底三角感叹号) |
| IDI_HAND | Hand-shaped icon. |
| IDI_INFORMATION | Asterisk icon. |
| IDI_QUESTION | 疑问号图标(蓝底圆形一个问号) |
| IDI_WARNING | 感叹号图标 |
| IDI_WINLOGO | windows的logo图标(编译器图形) |
hCursor
- Handle to the class cursor. This member must be a handle to a cursor resource. If this member is NULL, an application must explicitly set the cursor shape whenever the mouse moves into the application’s window.
- 标识该窗口类的光标,hCursor必须是一个光标资源的句柄。若hCursor字段为NULL,则无论何时鼠标移到应用程序窗口时,应用程序必须显式设置光标形状。
| LoadCursor(NULL,下面的选项) | 如果要使用系统的图案 |
|---|---|
| IDC_APPSTARTING | 标准的箭头和小沙漏 |
| IDC_ARROW | 标准的箭头 |
| IDC_CROSS | 十字光标 |
| IDC_HELP | 标准的箭头和问号 |
| IDC_IBEAM | 工字光标 |
| IDC_NO | 禁止圈 |
| IDC_SIZEALL | 四向箭头指向东、西、南、北 |
| IDC_SIZENESW | 双箭头指向东北和西南 |
| IDC_SIZENS | 双箭头指向南北 |
| IDC_SIZENWSE | 双箭头指向西北和东南 |
| IDC_SIZEWE | 双箭头指向东西 |
| IDC_UPARROW | 垂直箭头 |
| IDC_WAIT | 沙漏 |
hbrBackground
- Handle to the class background brush. This member can be a handle to the physical brush to be used for painting the background, or it can be a color value. A color value must be one of the following standard system colors (the value 1 must be added to the chosen color). If a color value is given, you must convert it to one of the following HBRUSH types:
- 标识了该窗口类的背景画刷。hbrBackground字段必须是用于绘制背景的物理刷子的句柄,或者是一个颜色的值。如果给出一个颜色的值,它必须是下面列出的标准系统颜色之一(系统将对所选颜色加1)。如果给出了颜色值,它必须是转换成下列的HBRUSH类型之一的颜色:
| GetStockObject ( fnObject:指定对象的类型,该参数可取如下值之一) | 意义 |
|---|---|
| BLACK_BRUSH | 黑色画刷 |
| DK |
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
