zoukankan      html  css  js  c++  java
  • MFC DAY10 11 12

    一 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)

  • 相关阅读:
    FastAPI数据库系列(一) MySQL数据库操作
    FastAPI响应系列(二) 响应状态码
    FastAPI系列学习目录
    FastAPI大型目录程序设计
    FastAPI异步任务系列(一) FastAPI后台任务
    FastAPI安全系列(三) 基于Hash Password和JWT Bearer Token的OAuth2 .0认证
    FastAPI安全系列(二) 基于Password和Bearer Token的OAuth2 .0认证
    FastAPI安全系列(一) OAuth2 .0认证基础
    you can run: npm install --save core-js/modules/es.regexp.exec core-js/modules/es.string.replace(已解决)
    BFC总结
  • 原文地址:https://www.cnblogs.com/Renekton/p/3864155.html
Copyright © 2011-2022 走看看