C++学习笔记:定制应用程序外观

2014-11-16 12:20:24 · 作者: · 浏览: 31

  本章主要讲解如何修改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 }