本章主要讲解如何修改MFC AppWizard自动生成的应用程序的外观,包括工具栏和状态栏的变成。
9.1在窗口创建之前修改
第三章介绍了一些MFC AppWizard应用程序的执行流程,如果要在窗口创建之前修改应用程序的外观,可以再MainFrame类的PreCreateWindow()函数中修改窗口的外观属性。
01 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
02 {
03 if( !CFrameWnd::PreCreateWindow(cs) )
04 return FALSE;
05 // TODO: Modify the Window class or styles here by modifying
06 // the CREATESTRUCT cs
07 cs.cx=800;
08 cs.cy=500;
09 cs.style&=~FWS_ADDTOTITLE;
10 cs.lpszName="www";
11 return TRUE;
12 }
由于MFC应用程序的View类是覆盖在Frame类之上的,在此处对外观做的修改将只显示在Frame类部分。如窗口的大小,标题。
一个MFC单文档应用程序窗口的默认窗口样式是WS_OVERLAPPEDWINDOW和WS_ADDTOTITLE,要去掉其中的一种样式,可以对其做取反操作。
1 cs.style=cs.style&~WS_ADDTOTITLE;
或者直接设置窗口的样式
1 cs.style=WS_OVERLAPPEDWINDOW;
9.2在窗口创建之后修改
在窗口创建之后修改窗口的样式,在Create函数中执行。在Create函数中调用SetWindowLong函数。
1 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
2 {
3 //。。。
4 SetWindowLong(m_hWnd,GWL_STYLE,WS_OVERLAPPEDWINDOW);
5 SetClassLong(m_hWnd,GCL_HICON,(LONG)LoadIcon(NULL,IDI_ERROR));
6 }