MFC几个常用函数:OnCreate和OnInitialUpDate,GetActiveFrame和MDIGetActive,Invalidate、SetModifiedFlage、UpdateAll

本文详细解析了MFC编程中的几个关键函数:OnCreate用于创建控件的基本结构,OnInitialUpdate负责初始化控件;GetActiveFrame和MDIGetActive分别获取活动的MDI框架窗口和子窗口;Invalidate用于标记窗口需要重绘,SetModifiedFlag设置文档被修改标志,UpdateAllViews用于同步文档更改到所有视图。

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

一、OnCreate和OnInitialUpDate

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

ONCREATE只是产生VIEW的基本结构和变量而在OnInitialUpDate()中,主要初始化视图中控件等,对各个变量进行初始化操作。

例子。我们要在视图中添加一个button和combobox控件则

  1. <span style=“color:#ff0000;”>OnCreate函数中写法如下</span>:  
  2. int CFormView::OnCreate(LPCREATESTRUCT lpCreateStruct)   
  3. {  
  4.  if (CView::OnCreate(lpCreateStruct) == -1)  
  5.   return -1;  
  6.    
  7.  // TODO: Add your specialized creation code here  
  8.  CRect rect(20,20,100,50);  
  9.  m_ctrlButton.Create(”Button1”,WS_CHILD|WS_VISIBLE,rect,this,NULL);  
  10.   
  11.  //创建按扭控件  
  12.  CFont *pFont=CFont::FromHandle((HFONT)::GetStockObject(ANSI_VAR_FONT));  
  13.  CRect rect1(150,20,350,100);  
  14.  m_combobox.Create(WS_CHILD|WS_VISIBLE|CBS_SIMPLE|CBS_NOINTEGRALHEIGHT|WS_VSCROLL,rect1,this,NULL);  
  15.   
  16.  return 0;  
  17. }  
  18. <span style=”color:#ff0000;”>OnInitialUpDate中写法</span>  
  19. void CFormView::OnInitialUpdate()   
  20. {  
  21.  CView::OnInitialUpdate();  
  22.    
  23.  // TODO: Add your specialized code here and/or call the base class  
  24.  //初始化组合框控件  
  25.  m_combobox.AddString(”Mondy”);  
  26.  m_combobox.AddString(”Tuesday”);  
  27.  m_combobox.AddString(”Wednesday”);  
  28.  m_combobox.AddString(”Thursday”);  
  29.  m_combobox.AddString(”Saturday”);  
  30.  m_combobox.AddString(”Sunday”);  
  31.   
  32. }  
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.youkuaiyun.com/zhuxiufenghust/article/details/7039879

  1. The CMDIFrameWnd class provides the functionality of a Windows multiple document interface (MDI) frame window, along with members for managing the window.   
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)框架窗口,连同会员管理窗口。
  1. The CMDIChildWnd class provides the functionality of a Windows multiple document interface (MDI) child window, along with members for managing the window.  
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类的内容,一般都用这个把更新的内容可视化。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值