2010.6.22

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();
结束!

你可能感兴趣的:(2010.6.22)