MFC幾個常用函式:OnCreate和OnInitialUpDate,GetActiveFrame和MDIGetActive,Invalidate、SetModifiedFlage、UpdateAll

xfortius發表於2013-01-27

把用常用的都整理一下,不然好亂。

一、OnCreate和OnInitialUpDate

參考:http://www.cnblogs.com/mingfei200169/articles/666567.html

ONCREATE只是產生VIEW的基本結構和變數而在OnInitialUpDate()中,主要初始化檢視中控制元件等,對各個變數進行初始化操作。

例子。我們要在檢視中新增一個button和combobox控制元件則

OnCreate函式中寫法如下:
int CFormView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
 if (CView::OnCreate(lpCreateStruct) == -1)
  return -1;
 
 // TODO: Add your specialized creation code here
 CRect rect(20,20,100,50);
 m_ctrlButton.Create("Button1",WS_CHILD|WS_VISIBLE,rect,this,NULL);

 //建立按扭控制元件
 CFont *pFont=CFont::FromHandle((HFONT)::GetStockObject(ANSI_VAR_FONT));
 CRect rect1(150,20,350,100);
 m_combobox.Create(WS_CHILD|WS_VISIBLE|CBS_SIMPLE|CBS_NOINTEGRALHEIGHT|WS_VSCROLL,rect1,this,NULL);

 return 0;
}
OnInitialUpDate中寫法
void CFormView::OnInitialUpdate() 
{
 CView::OnInitialUpdate();
 
 // TODO: Add your specialized code here and/or call the base class
 //初始化組合框控制元件
 m_combobox.AddString("Mondy");
 m_combobox.AddString("Tuesday");
 m_combobox.AddString("Wednesday");
 m_combobox.AddString("Thursday");
 m_combobox.AddString("Saturday");
 m_combobox.AddString("Sunday");

}

這裡一點非常重要:OnCreate()是生成結構的,而OnInitialUpDate是對結構進行初始化。兩個一個相當於硬體一個相當於軟體,功能和作用完全不同。但是是相互密切聯絡。

二、GetActiveFrame和MDIGetActive

參考:http://blog.csdn.net/zhuxiufenghust/article/details/7039879

The CMDIFrameWnd class provides the functionality of a Windows multiple document interface (MDI) frame window, along with members for managing the window. 
CMDIFrameWnd功能的類提供了一個Windows多文件介面(MDI)框架視窗,連同會員管理視窗。
The CMDIChildWnd class provides the functionality of a Windows multiple document interface (MDI) child window, along with members for managing the window.
CMDIChildWnd功能的類提供了一個Windows多文件介面(MDI)子視窗,連同會員管理視窗。
注意了:一個是提供多文件介面的框架視窗,一個是多文件介面的子視窗

三、Invalidate、SetModifiedFlag、UpdateAllViews

參考:http://zhidao.baidu.com/question/50593960.html

1:Invalidate

該函式的作用是使整個視窗客戶區無效,如果無效視窗要進行顯示或者處理(即變成當前視窗),那麼視窗的客戶區無效意味著需要重繪。因此,這個機制和人是一樣的,只處理需要的,有用的

2:SetModifieldFlag

設定髒點,表明內容是否已經被修改(汙染),常常在判斷是否儲存的時候有用。

3:UpdateAllViews

當更新了Doc類的內容,一般都用這個把更新的內容視覺化。



相關文章