早听说Visual C++ 2008 FR1提供了很多新的功能,其中就包括MFC的新界面。现在拿到Visual Studio 2008 SP1简体中文版,急不可待的用了一下。果然,在向导中,就可以在工程里加入modern风格的界面了,可以模仿Office和Visual Stidio的界面风格。
阅读向导生成的代码发现,MFC用了一套新的框架类:
SDI:CFrameWndEx
MDI:CMDIFrameWndEx,CMDIChildWndEx
让我们先从框架类看起吧。
CFrameWndEx和CMDIFrameWndEx都是通过类CFrameImpl实现具体的框架绘制操作。CFrameWndEx和CMDIFrameWndEx都对我们熟悉的消息做了处理:
WM_NCHITTEST
WM_NCCALCSIZE
WM_NCPAINT
WM_NCMOUSEMOVE
WM_LBUTTONDOWN
WM_LBUTTONUP
WM_ACTIVATEAPP
WM_MOUSEMOVE
WM_SIZE
WM_SIZING
......
这些消息的处理又是调用CFrameImpl完成的。
MFC能显示多种风格的界面,这是如何实现的呢?看到向导创建了如下的代码:
void CMainFrame::OnApplicationLook(UINT id) { CWaitCursor wait; theApp.m_nAppLook = id; switch (theApp.m_nAppLook) { case ID_VIEW_APPLOOK_WIN_2000: CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManager)); break; case ID_VIEW_