一 MFC对话框
   1 DoModal函数的执行过程
     1.1 查找和加载对话框资源
     1.2 将父窗口设置为不可用状态
     1.3 创建和显示对话框
     1.4 进入对话框的消息循环
     1.5 点击OK或者Cancel或者关闭按钮,隐藏对话框窗口
     1.6 将父窗口设置为可用的和活动的
     1.7 销毁对话框窗口
     1.8 释放对话框资源
     1.9 返回执行结果(IDOK/IDCANCEL) 
二 对话框数据交换技术(DDX)
   引入对话框数据交换技术的目的方便的操作控件。将对话框类的
   成员变量与对话框的控件绑定,通过操作成员变量达到操作控件
   的目的。
   1 相关函数:
   1.1 需要一系列的绑定函数
      (绑定函数的作用就是将成员变量与控件绑定)
       DDX_Control(pDX,控件ID,控件类型的变量名);
       DDX_Text(pDX,控件ID,值类型的变量名);
   1.2 数据交换函数DoDataExchange
       包含了对话框中所有的绑定函数。
       CDialog::OnInitDialog函数间接调用DoDataExchange函数,
       在对话框初始后,控件与变量已经绑定了。
   1.3 UpdateData(BOOL)-当用户在控件中输入的值与控件绑定的值
       有数据交换时,调用该函数。
       UpdateData(TRUE)-控件的值传递给成员变量
       UpdateData(FALSE)-成员变量的值传递给控件
   2 使用DDX做一个登录例子
三 MFC控件的使用
   1 静态控件(CStatic)包括图片、静态文本和分组框。控件的默认ID都是
     IDC_STATIC,如果需要为静态控件绑定成员变量时,首先需要
     修改控件的ID。
   2 按钮控件(CButton)包括一般按钮、复杂按钮和单选按钮。单选
     按钮如果需要绑定成员变量,需要选中group属性。单选按钮的
     分组,同一组按钮的Tab键顺序要连续,然后在Tab键编号较小
     的按钮设置group属性,有几组设置几个。 
   3 组合框控件和列表框控件
     组合框通常是单选,列表框可单选和多选。组合框可以通过
     属性设置数据项。
   4 播放动画的例子
     4.1 文件对话框
     CFileDialog( 
       BOOL bOpenFileDialog, //表示打开或者另存为对话框
       LPCTSTR lpszDefExt=NULL,用在另存为对话框表示默认扩展名 
       LPCTSTR lpszFileName = NULL,用在另存为对话框表示默认文件名
       //对话框的样式
       DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
       LPCTSTR lpszFilter = NULL,//设置文件类型的过滤字符串 
       CWnd* pParentWnd = NULL //父窗口,通常为NULL
      );
      设置文件类型的过滤字符串的格式:
      1 多个数据项之间以"|"隔开,整个字符串以"||"结束;
      2 每一个数据项由两部分组成,显示部分和过滤部分。这两
        部分以"|"隔开。
      "视频文件(*.avi)|*.avi|所有文件(*.*)|*.*||";
     4.2 CListBox和CComboBox的使用
         4.2.1 添加数据项
              CListBox::AddString
              CComboBox::AddString
         4.2.2 查找数据项
              CListBox::FindString    LB_ERR
              CComboBox::FindString   CB_ERR
         4.2.3 删除数据项
              CListBox::DeleteString
              CComboBox::DeleteString
         4.2.4 获取/设置当前选择的数据项
              CListBox::GetCurSel/SetCurSel
              CComboBox::GetCurSel/SetCurSel 
         4.2.5 获取/设置数据项的附加数据
              CListBox::GetItemData/SetItemData
              CComboBox::GetItemData/SetItemData
         ...
---------------------------------------
一 控件的使用
   演示旋转按钮(CSpinButtonCtrl)、进度条(CProgressCtrl)和
   滑块控件(CSliderCtrl)的使用.
   1 设置控件表示的数值范围
     SetRange/GetRange
     SetRange32/GetRange32
   2 设置控件的步长或者增量
     CSpinButtonCtrl::SetAccel
     CProgressCtrl::SetStep
     CSliderCtrl::PageSize
     CSliderCtrl::LineSize  
   3 设置/获取当前的位置
     SetPos/GetPos 
二 列表控件
   1 相关类
     CListView-本质是一个视图类。相当于在CView的客户区包含了
               一个CListCtrl控件。
               GetListCtrl()得到视图包含的控件。
     CListCtrl-本质是一个控件,常用于对话框显示数据。
   2 分析CListCtrl控件:
     控件可以以不同的样式显示数据,包含图标、小图标、列表和
     报表等四种样式。 如果以报表的样式显示数据,控件还可以
     包含多个列。一个控件包含多个数据项。每个数据项的信息包
     括图标和文本。不同的数据项的图标也是不一样的,所以,控件
     包含了两个图标列表(大图标列表和小图标列表)。
   3 控件的使用
     3.1 设置控件的图标列表(大图标列表和小图标列表)
         CListCtrl::SetImageList
     3.2 修改控件的显示风格
         CWnd::ModifyStyle
     3.3 添加列
         CListCtrl::InsertColumn
     3.4 添加数据项
         CListCtrl::InsertItem
     3.5 设置列文本
         CListCtrl::SetItemText
     3.6 设置/获取数据项的附加数据      
         CListCtrl::SetItemData/GetItemData
     3.7 设置控件的背景图片
         CListCtrl::SetBkImage
         需要有Ole库的初始化 AfxOleInit();
     3.8 设置文本的背景色
         CListCtrl::SetTextBkColor(CLR_NONE)
     ...
三 树控件 
   1 相关类
   CTreeView-是一个视图,在CView的客户区包含了一个CTreeCtrl
             控件。调用GetTreeCtrl()得到视图包含的控件
   CTreeCtrl-是一个控件,更多的用于对话框上显示数据
   2 CTreeCtrl的使用 
   2.1 分析CTreeCtrl
      CTreeCtrl控件主要用于显示具有层次结构的数据。树控件是
      由一个个的节点组成,每一个节点的信息包括文本和图标,
      而且节点的图标可以有选中和未选中两种图标。
   2.2 具体使用
      2.2.1 设置图标列表
      CTreeCtrl::SetImageList
      2.2.2 插入节点
      CTreeCtrl::InsertItem
      2.2.3 设置节点高度
      CTreeCtrl::SetItemHeight
      2.2.4 设置节点的展开状态
      CTreeCtrl::Expand
      2.2.5 设置/获取树节点的附加数据
      CTreeCtrl::SetItemData/GetItemData
      ...
      几乎所有的函数操作时,都会有节点句柄作为参数!
      VC扩展界面库...
四 属性页对话框  
   1 分类
     标签式属性页和向导式属性页
   2 相关类
   CPropertyPage类-对话框类,拥有自己的资源窗口。       
   CPropertySheet类-框架窗口类,包含多个页面对话框。
   3 标签式属性页(例子:使用属性页设置图形的线宽和颜色)
     用于设置参数、选项等配置  
---------------------------------
一 属性页对话框 
   1 分类
     标签式属性页和向导式属性页
   2 相关类
   CPropertyPage类-对话框类,拥有自己的资源窗口。       
   CPropertySheet类-框架窗口类,包含多个页面对话框。
   3 标签式属性页(例子:使用属性页设置图形的线宽和颜色)
     用于设置参数、选项等配置  
     3.1 插入对话框资源,注意对话框资源的类型,双击生成相应
     的类,注意父类一定是CPropertyPage。重复这个步骤,可以
     添加多个页面对话框。
     3.2 添加CPropertySheet类的子类CSheet类,并且添加页面
      对象,在CSheet类的构造函数中,将页面对象添加到表单。
      AddPage(&m_page1);
      AddPage(&m_page2);
     3.3 在菜单的消息处理函数中,创建和显示属性页
      CPropertySheet::DoModal
     3.4 将应用按钮设置为可用状态
      CPropertyPage::SetModified
     3.5 消息处理(通过重写虚函数的方式)
      CPropertyPage::OnApply
      CPropertyPage::OnOK
      CPropertyPage::OnCancel
   4 向导式属性页
     通常用于引导用户按照设定的步骤一步步的选择或者设置最终
     完成某种功能。
     4.1 与3.1 相同
     4.2 与3.2 相同
     4.3 在创建和显示对话框前,先设置为向导模式
         CPropertySheet::SetWizardMode()
         CPropertySheet::DoModal()
 
     4.4 设置每一个页面的向导按钮,右击CPage1类,选择添加
         虚函数,在列表中选择OnSetActive(),在函数中:
         ((CPropertySheet*)GetParent())->SetWizardButtons(
		PSWIZB_NEXT);
         按照同样的方式,设置CPage2和CPage3这两个页面的
         向导按钮。
     4.5 获取用户在每一个页面中选择的信息。通常的办法给控件
         绑定成员变量。
         4.5.1CPage1的处理:
         为单选按钮和列表框绑定成员变量。添加CPage1
         的WM_INITDIALOG消息处理函数,在OnInitDialog函数中:
         m_wndCity.AddString("北京");
	 m_wndCity.AddString("上海");
	 m_wndCity.AddString("天津");
	 m_wndCity.AddString("重庆"); 
         4.5.2 为空判断
         右击CPage1类,选择添加虚函数中,选择OnWizardNext,
         在函数中:
         UpdateData(TRUE);
	if (-1==m_nJob)
	{
		MessageBox("请选择您的职业!");
		return -1;
	}
	if (m_strCity=="")
	{
		MessageBox("请选择您所在的城市");
		return -1;
	}
        4.5.3 CPage2、CPage3类的处理,为控件绑定成员变量。
        分别在 OnWizardNext和OnWizardFinish中为空判断。
        注意 OnWizardFinish的返回值类型是BOOL。
      4.6 在视图对菜单的消息处理函数OnWizardProp中:
        4.6.1 在视图中添加成员变量并在构造函数中初始化
             int m_nJob;
	     CString m_strCity;
	     BOOL m_bFlag[4];
	     CString m_strSalary;
        4.6.2 在视图类的OnWizardProp将页面中的数值传
            递给视图:
        // 创建和显示向导式属性页
        CSheet sheet("向导式属性页");
	//设置显示的方式为向导模式
	sheet.SetWizardMode();
	if(ID_WIZFINISH!=sheet.DoModal())return;
	//1将每一个页面的数值传递给视图
        m_nJob=sheet.m_page1.m_nJob;
	m_strCity=sheet.m_page1.m_strCity;
	//2 使得视图重绘以显示新的数据
	Invalidate(TRUE); 
         4.6.3 在OnDraw函数中,输出各个变量的值
         
          
         
MFC 多线程
COM 4天
数据库(odbc和ado)+网络通信(socket)3天
vod视频点播系统 (4)
MFC DAY10 11 12,布布扣,bubuko.com
原文地址:http://www.cnblogs.com/Renekton/p/3864155.html