1、设置CTreeCtrl的字体颜色和间距
2、特殊的消息映射
CMainFrame中 ON_WM_CREATE() 对应
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){....}
3、MFC框架创建流程
CScollVApp theApp;
CScollVApp::CScollVApp(){...//App构造函数}
CScollVApp::InitInstance()
{
...
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CScollVDoc),
RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口
RUNTIME_CLASS(CScollVView));
...
...
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
ProcessShellCommand(cmdInfo) //(1)跳转 关于PrecessShellCommand,查看http://embeded-life.blog.163.com/blog/static/105932519200921755725256/
解释:ParseCommandLine的作用主要是分析命令行参数,如果没有命令行参数 ,ParseCommandLine()就假定用户想新建一个文档,于是设置一个FileNew命令,如果命令行参数中有一个文件名,ParseCommandLine()就假定用户想打开该文件,于是设置一个FileOpen命令。
1: 当CCommandLineInfo cmdInfo进行定义时 , 首先调用构造函数 , 构造函数中m_nShellCommand被设置为FileNew
2: 然后执行ParseCommandLine(cmdInfo);对命令进行分析 .
3: 最后执行ProcessShellCommand (cmdInfo) , ProcessShellCommand ()判断m_nShellCommand为FileNew , 于是调用OnFileNew()创建了一个新的文档 .
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
}
(1)跳转
CScollVDoc::CScollVDoc()
{...//文档构造函数}
CMainFrame::CMainFrame()
{...//主框架构造函数}
CMainFrame::PreCreateWindow()
{...//主框架预创建窗口,调用两次???}
CMainFrame::OnCreate()
{
...//主框架创建
if (CFrameWnd::OnCreate(lpCreateStruct) == -1) //(2)跳转
return -1;
...
}
(2)跳转
CScollVView::CScollVView()
{...//视图构造函数}
CScollVView::PreCreateWindow()
{...//视图预创建窗口}
CScollVDoc::OnNewDocument()
{...//文档,创建新文档}
返回(1),继续
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
结束!