MFC对话框杂记(一)

来源:互联网 发布:科怡软件3.3 编辑:程序博客网 时间:2024/05/22 12:52

1.添加了一个对话框资源,需要为该对话框添加一个类。

2.修改对话框模板图标的步骤是:

  1. 在资源视图中导入一个ico资源,不一定要是32*32的也可以是256*256,系统默认为IDC_ICON1.
  2. 删掉原来的IDR_MAINFRAME图标,将IDC_ICON1改为IDR_MAINFRAME。
  3. 点击生成->重新生成解决方案。
    这里写图片描述

3.编辑框可以设置为密码框,也可以接设置多行编辑,属性分别为:Mutiline和Password。

4.编辑框常用方法:

  1. GetPasswordChar() 获得编辑框密码字符
  2. SetPasswordChar() 设置或删除显示于编辑框中的密码字符
  3. LimitText() 限定编辑框输入的文本长度
  4. SetReadOnly 设置只读状态

5.可以用CWnd类的两个成员函数来处理编辑框:

  1. void GetWindowText(CString rString) const; 获取编辑框内容
  2. void SetWindowText(CString lpszString); 设置编辑框内容

6.创建模态对话框函数DoMadal()

该函数负责对话框的创建和撤销,在创建对话框时,DoModal函数的任务包括载入对话框模板资源,调用OnInitDialog函数初始化对话框和将对话框显示到屏幕上。完成创建后,DoModal函数将启动一个消息循环机制,以响应用户输入,由于该消息截获了几乎所有的输入消息,使主消息循环收不到对话框的输入,致使用户只能与模态对话框进行交互,而其他用户界面收不到输入信息。
CDialog::DoModal()的返回值为IDOK,IDCANCEL。表明操作者在对话框上选择“确认”或是“取消”。你需要根据DoModal()的返回值来决定你下一步的动作,而得到返回值也是使用有模式对话框的一个很大原因。常用模板如下:

CDlgClass Dlg;if(Dlg.DoModal()==IDOK/IDCANCEL){     //你的操作}

当dlg.DoModal()后,显示一个模态对话框,此时DoModal()函数并不返回,直到用户关闭此对话框时,DoModal才返回。当你CMyDlg dlg;时,对话框并没有显示,只要构造了一个CMyDlg类型的对象而已,直到用户调用DoModal(),对话框才会显示出来。

7.控件变量

添加控件变量一般有2中,一种是control类型,一种是value类型,一般而言声明为control类型会有更灵活的处理方法,但是有时候如果只是为了简单的保存控件的内容等,则添加一个value类型或许更好。

8.change事件响应函数

有时候我们需要根据某一个控件的状态来确定下一步的操作,则需要为该控件添加CHANGE事件响应函数。

9.对话框类的初始化

当我们要使用自己的对话框时,要初始化对话框,如设置对话框的一些外观,控件变量等,需要在OnInitDialog函数中设置。

10.在对话框前的操作

我们若想在对话框显示前,执行其他操作,如显示一个消息框等,需要在在该对话框类的InitInstance函数中,添加你的操作,注意需要在该对话框创建之前添加。

11.控件数据的更新

当你在一个控件中输入字符后,想获得该字符,首先你需要将该数据从控件传递给成员变量,需要下面一句话:

UpdateData(TRUE);

当需参数为FALSE的时候,表示将数据从成员变量传到控件。

12.文件包含

当对话框A调用另对话框B时,需要手动在A所调用的文件中包含B类的头文件

13.组合对话框CComboBox

    组合对话框由CComBoBox类定义,实际上是把一个编辑框和一个单选列表框结合在一起。组合框分为简易式(Simple)、下拉式(Dropdown)和下拉列表式(Drop List)这3种类型。简易式组合框包含一个编辑框和一个总是显示地列表框;下拉式组合框和简易式组合框类似,不同的是仅在单击下三角列表框才会弹出;下拉式列表组合框也有一个下拉的列表框,但它的编辑是只读的,不能输入字符。    对应地,CComboBox类的成员函数也分为两类:针对编辑框的成员函数和针对列表框的成员函数,常用的成员函数如下:

这里写图片描述

组合对话框通常用于提供选择功能,一般先将几种情况预先输入组合框类,运行时由用户选择。虽然可以利用函数添加可选项,但是在属性Data栏中可以直接添加,每项以分号分开。为了在运行时不改变列表顺序,应该取消排序(sort)功能;如果不希望接受用户输入,如性别只希望用户选择“男”,“女”就将Type属性选为Drop List
SetCurSel(int nSelect)函数用于设置组合框的当前选项,当参数nSelect=-1时,表示不选择任何选项,即显示空白。


13.获取对象指针

有时候不用为控件对象添加Control类型的变量,我们可以使用GetDlgItem(int nID)函数,以一种通用方式访问控件,只要将ID传递给函数参数即可。例子:

CEdit *edit=(CEdit*)GetDlgItem(IDC_EDIT);edit->GetWindowText(S);

14.对话框间的数据传递

对话框间的数据传递有几种方法,利用传指针方法是常用的一种

15.获取应用程序对象指针

函数AfxGetApp获取应用程序指针对象app->(CDlgApp*)AfxGetApp()


持续更新中……

0 0
原创粉丝点击