03_MFC知识点总结(二)

一、对话框


1)模态对话框
    a)资源视图->Dialog->右击->插入Dialog
    b)创建对话框对象 CDialog
    c)以模态方式运行 CDialog::DoModal
2)非模态对话框
    a)资源视图->Dialog->右击->插入Dialog
    b)创建对话框对象,需要在.h的地方声明成员变量 CDialog
    c)创建对话框(在构造函数或OnCreate(),目的只创建一次)CDialog::Create
3)自定义对话框(重要)
    a)资源视图->Dialog->右击->插入Dialog
    b)点击对话框模本->右击->添加类
    c)多出来一个自定义的类, .h类中有个枚举和对话框关联 enum{IDD=IDD_DIALOG2}

二、基于对话框(控件)编程


1)基于对话框应用程序框架
    a)应用程序类:继承于CWinApp
        InitInstance():程序的入口地址
    b)对话框类:继承于CDialog
        OnInitDialog():对话框的初始化工作
        DoDataExchange():控件和变量的关联和交换
        
三、常用的控件


1)静态控件CStatic(Qt中的标签QLable)
    显示一些文字信息
    a)Caption:修改显示的内容
    b)ID:XXX_STATIC,静态ID,不响应任何消息(事件)
    
2)按钮 CButton
    a)Caption:修改显示的内容
    b)处理消息 BN_CLICKED,用户点击按钮自动触发:
        1)属性->控制事件->选择所需要事件
        2)双击按钮,自动生成消息处理函数
3)逃跑按钮(类似于Qt提升)
    a)自定义按钮类,继承于CButton
    选择类视图最开始的文件夹->右击->右击->添加类->MFC->MFC类
        1)处理鼠标移动消息 WM_MOUSEMOVE
        2)获取父窗口指针 CWnd::GetParent
        3)获取父窗口客户区域的范围 CWnd::GetClientRect
        4)获取按钮的范围 CWnd::GetWindowRect
        5)产生随机坐标 rand()%wc
        6)移动按钮的位置 CWnd::MoveWindow
        
    b)变量关联
    选中按钮->右击->添加变量->变量类型:MyButton->变量:button
    最终,button和我们所选中的按钮关联成功,操作button,相当于操作ui上的按钮(Qt的提升)
    c)为按钮设置位图
        1)按钮属性:Bitmap -> True
        2)在对话框类中 OnInitDialog()做如下处理
            a)创建位图模板
            b)创建位图对象 CBitmap
            c)加载位图资源 CBitmap::LoadBitmap
            
4)编辑框CEdit
    a)关联类别:Value,Control
        1)Value:标准普通函数数据类型 CString str;
            关联变量和控件数据的交互更新
            a)把编辑区的内容更新到 str中 UpdateData(TRUE);
            b)把str的内容更新到编辑区中 UpdateData(FALSE);
        
        2)Control:控件类型
            控件类型的对象即为ui上的控件
    
    b)常用属性设置
        1)Number -> TRUE 只能输入数字
        2)Password -> True 密码模式
        3)Want return -> True 接收回车键,自动换行,只有在多行模式下,才能换行
        4)Multiline -> True 多行模式
        5)Auto VScroll -> True
            Vertical Scroll ->True 当垂直方式字符太多,自动出现滚动条
        6)Read Only -> True 只读
        
    c)复制小案例
    关联 Control:控制类型,只能关联一次
        1)获取编辑区内容 CWnd::GetWindowText
        2)设置编辑区内容 CWnd::SetWindowText
        3)关闭对话框窗口
            CDialog::OnOk();
            CDialog::OnCancel();

5)单选框、复选框(特殊的CButton,没有单选框,复选框类型)
    a)单选框
        1)属性设置:顺序排放 Ctrl+D查看
        2)同组第一个按钮 Group 设置为 TRUE
        3)初始化单选框 CWnd::CheckRadioButton
        4)按钮是否按下 CWnd::IsDialogButtonChecked
        
    b)复选框
        1)常关联变量 BOOL UpdateData(TRUE) UpdateData(FALSE);
        2)设置按钮选择状态 CButton::SetCheck
        3)获取按钮选择状态 CButton::GetCheck
        
6)列表框CListBox
    a)给列表框添加一个字符串 CListBox::AddString
    b)选中列表框某一项,自动触发事件:LBN_SELECHANGE
        1)获取当前选中项 CListBox::GetCurSel
        2)获取指定位置的内容 CListBox::GetText
    
    c)删除指定位置的字符串 CListBox::DeleteString
    d)在指定位置插入字符串 CListBox::InsertString
    
7)组合框(下拉框)CComboBox
    a)获取内容:CComboBox::GetLBText
        其它接口和CListBox的用法几乎一样
    b)属性设置
        1)data: 设置内容,不同内容间同英文 的分号“;”分离
        2)type
        
8)滚动条 CScrollBar
    a)设置给定滚动条的最小和最大位置:CScrollBar::SetScrollRange
    b)获取一个滚动框的当前位置:CScrollBar::GetScrollPos
    c)设置一个滚动条的当前位置:CScrollBar::SetScrollPos
    d)处理滚动条的事件,不是在滚动控件本身处理,是在滚动条所属的父窗口处理(对话框类)处理信号:WM_HSCROLL
    e)滚动条位置关系
        switch (nSBCode) //判断滚动条的哪一部分
        {
        case SB_THUMBPOSITION: //滑块的位置
            break;
        case SB_LINELEFT: //向左的箭头
            break;
        case SB_LINERIGHT: //向右的箭头
            break;
        case SB_PAGELEFT: //箭头和滑块之间左边
            break;
        case SB_PAGERIGHT://箭头和滑块之间右边
            break;
        default:
            break;
        }


9)微调(旋转)按钮 SpinControl的使用
    a)属性设置
        Aauto Buddy -> True
        Set buddy integer -> True
    b)微调 (旋转)按钮的顺序比伙伴大1(Ctrl+D查看)


10)列表视图控件 CListCtrl
    a)属性设置 view -> Report(报表方式)
    b)常用接口
        1)设置列表风格 CListCtrl::SetExtendedStyle
            LVS_EX_FULLROWSELECT:选择整行
            LVS_EX_GRIDLINES:网格方式
            具体有哪些风格,可以通过MSDN查看
            
        2)获取列表风格 CListCtrl::SetExtendedStyle
            具体有哪些风格,可以通过MSDN查看
        
        3)插入某列 CListCtrl::InsertColumn
        
11)树视图控件 CTreeCtrl
    a)常用属性设置
        has button -> true
        has line -> true
        line at root ->true
    b)写代码流程
        1}加载自定义图标
            a)获取应用程序对象指针 AfxGetApp()
            b)加载自定义图标 CWndApp::LoadIcon
        2)创建图标列表
            a).文件中定义图形列表(CImageList)对象
            b)创建图像列表 CImageList::Create
            c)图像列表追加图标 CImageList::Add
        4)设置图形状态列表 CTreeCtrl::SetImageList
        5)插入节点 CTreeCtrl::InsertItem
        6)设置默认选中项 CTreeCtrl::SelectItem


12)标签控件CTabCtrl
    1)在ui工具箱拖放 Tab Control
    2)把TabSheet.h和TabSheet.cpp放在项目文件同级目录,并且添加到工程目录中
    3)给ui上 Tab Ctontrol 关联Control类型(CTabSheet)
    4)CTabSheet对象添加对话框
        a)资源视图 -> Dialog -> 右击 -> 添加类
        b)设置相应属性:
            Style -> Child(子窗口)
            Border -> None(无边框)
        c)自定义类:点击对话框模板 -> 右击 -> 添加类
        d)主对话框类中,自定义类对象
        e)主对话框中 OnInitDialog() 做初始化工作
        f)CTabSheet添加对话框 CTabSheet::AddPage()
            tmp.AddPage(_T("系统管理"),&t1,tab1);
                tmp:为CTabSheet对象
                t1:需要添加对话框对象
                tab1:对话框ID
        g)显示对话框:CTabSheet::Show()        
    
            
            
    
        

猜你喜欢

转载自blog.csdn.net/weixin_39036700/article/details/82632707