要更改应用程序的窗口的外观,我们可以在两个时候更改,一是在应用程序窗口创建之前,二是在应用程序窗口创建之后进行更改。本文将两种方式记录下来。
在窗口创建之前修改:
我们之前已经知道,在应用程序窗口创建之前会调用一个叫PreCreateWindow()的函数,要想在窗口创建之前修改程序窗口的外观跟大小,就应该在CMainFrame类(SDI程序)中的PreCreateWindow()函数中进行。
virtual BOOL PreCreateWindow( CREATESTRUCT& cs ); //PrecreateWindow()函数原型,参数稍后作解释。
PreCreateWindow()函数是一个虚函数,在MFC的底层代码中,当调用PreCreateWindow()函数时,如果传递了子类对象的指针,根据多态性的原理,那么就会调用子类对象的PreCreateWindow()函数。函数原型中的参数类型是一个CREAGTETRUCT结构,我们这里可以看一下这个结构体中含有哪些字段。
typedef struct tagCREATESTRUCTW { LPVOID lpCreateParams;
HANDLE hInstance; HMENU hMenu; HWND hwndParent;
int cy; int cx; int y; int x;
LONG style; LPCSTR lpszName; LPCSTR lpszClass;
DWORD dwExStyle;} CREATESTRUCTW, *PCREATESTRUCTW, *LPCREATESTRUCTW;//This structure defines the initialization parameters passed to the window procedure of an application.
之前我们就应该知道了,CREATESTRUCT结构体中的字段跟CreateWindowEx()函数中的参数是完全一致的(只是顺序相反而已)。PreCreateWindow()函数中的参数是一个引用类型,这样,我们只要更改参数