AfxGetApp()函数
获取当前App的CWinApp类指针
AfxRegisterWndClass函数
LPCTSTR AFXAPI AfxRegisterWndClass(UINT nClassStyle,HCURSOR hCursor = 0, HBRUSH hbrBackground = 0, HICON hIcon = 0);
返回值 LPCTSTR :
LP 代表指针、
C 代表常量、
T 代表根据是否定义UNICODE宏而分别define为char或wchar_t、
STR 代表字符串。
第一个参数为UINT nClassStyle常数,指定窗口类样式,定义窗口的某种操作特性;
窗口类样式(style)有,可自行选择,多个样式之间用 “|” 连接
一般设置为: CS_HREDRAW | CS_VREDRAW (水平和竖直发生变化时重绘 )
常量/值 | 说明 |
---|---|
CS_BYTEALIGNCLIENT | 在 (x 方向) 的字节边界上对齐窗口的工作区 。 此样式会影响窗口的宽度及其在显示器上的水平位置。 |
CS_BYTEALIGNWINDOW | 在 (x 方向) 的字节边界上对齐窗口 。 此样式会影响窗口的宽度及其在显示器上的水平位置。 |
CS_CLASSDC | 分配一个设备上下文,供类中的所有窗口共享。 由于窗口类是特定于进程的,因此应用程序多个线程可以创建同一类的窗口。 线程还可以尝试同时使用设备上下文。 发生这种情况时,系统只允许一个线程成功完成其绘图操作。 |
CS_DBLCLKS | 当用户双击鼠标位于属于该类的窗口中时,将双击消息发送到窗口过程。 |
CS_DROPSHADOW | 对窗口启用阴影效果。 通过 SPISETDROPSHADOW_ 打开和关闭效果。 通常,这为小型生存期窗口(例如菜单)启用,以强调它们与其他窗口的 Z 顺序关系。 从具有此样式的类创建的Windows必须是顶级窗口;它们可能不是子窗口。 |
CS_GLOBALCLASS | 指示窗口类是应用程序全局类。 |
CS_HREDRAW | 如果移动或大小调整更改了工作区的宽度,则重新绘制整个窗口。 |
CS_NOCLOSE | 禁用窗口菜单上的 "关闭 "。 |
CS_OWNDC | 为类中的每个窗口分配唯一的设备上下文。 |
CS_PARENTDC | 将子窗口的剪裁矩形设置为父窗口的剪裁矩形,以便子窗口可以绘制父窗口。 具有 CSPARENTDC_ 样式位的窗口从系统的设备上下文缓存接收常规设备上下文。 它不会为子级提供父级的设备上下文或设备上下文设置。 指定 CSPARENTDC_ 可增强应用程序的性能。 |
CS_SAVEBITS | 以位图形式保存此类窗口遮盖的屏幕图像部分。 删除窗口后,系统使用保存的位图还原屏幕图像,包括遮盖的其他窗口。 因此,如果位图使用的内存尚未丢弃,并且其他屏幕操作未使存储的图像失效,则系统不会将 WMPAINT_ 消息发送到隐藏的窗口。 此样式适用于小型窗口 (例如,菜单或对话框) 短暂显示,然后在其他屏幕活动发生前删除。 此样式增加了显示窗口所需的时间,因为系统必须首先分配内存来存储位图。 |
CS_VREDRAW | 如果移动或大小调整更改工作区的高度,则重新绘制整个窗口。 |
第二个参数为HCURSOR hCursor句柄,指定鼠标进入窗口时,光标形状;
由AfxGetApp()->LoadStandardCursor(IDC_WAIT)获取;
常量/值 | 说明 |
---|---|
IDC_APPSTARTING | 带小沙漏的标准箭头 |
IDC_ARROW | 标准箭头 |
IDC_CROSS | 十字光标 |
IDC_HAND | windows 2000:手型 |
IDC_HELP | 带问号的箭头 |
IDC_IBEAM | i型标 |
IDC_ICON | obsolete for applications marked version 4.0 or later. |
IDC_NO | 禁止符号 |
IDC_SIZE | obsolete for applications marked version 4.0 or later. use idc_sizeall. |
IDC_SIZEALL | 十字箭头 |
IDC_SIZENESW | 指向东北和西南的双向箭头 |
IDC_SIZENS | 指向南和北的双向箭头 |
IDC_SIZENWSE | 指向西北和东南的双向箭头 |
IDC_SIZEWE | 指向东西的双向箭头 |
IDC_UPARROW | 上箭头 |
IDC_WAIT | 沙漏 |
第三个参数为HBRUSH hbrBackground句柄,指定窗口默认背景颜色;
可以传递一个画刷句柄,
也可以指定一个预定义的Windows系统颜色并加1,
颜色表接口是COLOR_3DFACE ;COLOR_3DFACE+1
第四个参数为HICON hIcon句柄,指定windows用来在桌面上、任务栏和其它地方代表应用程序的图标句柄;
可以自定义图标然后加载,也可以加载系统图标。
CreateEx函数
virtual BOOL CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd, UINT nID,
LPVOID lpParam = NULL);
virtual BOOL CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
int x, int y, int nWidth, int nHeight,
HWND hWndParent, HMENU nIDorHMenu, LPVOID lpParam = NULL);
第一个参数DWORD dwExStyle
指定要建立的窗口的扩展样式,引扩展样式包括所有的MFC样式。
第二个参数LPCTSTR lpszClassName
创建窗口的类名称,类的名称可以用全局AfxRegisterWndClass函数或预定义的注册任何类名称。
第三个参数LPCTSTR lpszWindowName
创建的窗口名称,为自定义字符串,如:“我的窗口”(含引号)
第四个参数DWORD dwStyle
指定的窗口样式属性。见窗口样式和所调用CWnd::描述值创建样式的所有值,用"|"将不同值连起来,如:OPUP |
WS_SYSMENU|WS_EX_TOOLWINDOW
第五个参数RECT& rect或者x,y,nWidth,nHeight
所要创建窗口的坐标、高度及宽度或都用矩形表示
第六个参数CWnd* pParentWnd
标识的父窗口或所属窗口。无父窗口时使用空值:“NULL”
第七个参数UINT nID
本窗口作为子窗口使用时的ID号。
第八个参数LPVOID lpParam = NULL
以由CREATESTRUCT结构lpCreateParams领域中引用的数据
第N个参数HMENU nIDorHMenu,
标识所创建窗口的菜单,可使用菜单ID:"IDR_MENU"或使用空值:“NULL”