Windows编程与MFC # 3 基于对话框的应用程序(2)

模态对话框
在Addition.cpp文件中可以看到CAdditionApp类有个InitInstance()函数。
InitInstance()函数的后半部分有一段代码就是定义对话框对象并弹出对话框的。
(模态对话框弹出后原来的程序无法接受响应)
Windows编程与MFC # 3 基于对话框的应用程序(2)_第1张图片
弹出对话框dlg,并将DoModal函数的返回值(退出时点击按钮的ID)赋值给nResponse。
DoModal()函数负责对话框的显示和撤销,包括载入对话框资源,调用CDialog::OnInitDialog()函数初始化对话框和将对话框显示在屏幕上。然后启动一个消息循环,以响应用户的输入。

virtual INT_PTR DoModal();   
返回值:整数值,指定了传递给CDialog::EndDialog(该函数用于关闭对话框)的nResult参数值。如果函数不能创建对话框,则返回-1;如果出现其它错误,则返回IDABORT。
调用了它,对话框就会弹出,返回值是退出对话框时所点的按钮的ID。比如,点了“退出”按钮,那么DoModal返回值为IDCANCEL。
Windows编程与MFC # 3 基于对话框的应用程序(2)_第2张图片
Windows编程与MFC # 3 基于对话框的应用程序(2)_第3张图片

void CAdditionDlg::OnClickedAddButton()
{
       // TODO: 在此添加控件通知处理程序代码
      INT_PTR nRes;             // 用于保存DoModal函数的返回值   
      CTipDlg tipDlg;             // 构造对话框类CTipDlg的实例   
      nRes = tipDlg.DoModal();        // 弹出对话框   
      if (IDCANCEL==nRes)     
 // 判断对话框退出后返回值是否为IDCANCEL,如果是则return,否//则继续向下执行   
             return;   

    // 将各控件中的数据保存到相应的变量 
    UpdateData(TRUE);
    // 将被加数和加数的加和赋值给m_dResult   
    m_dResult =m_dOperand1+m_dOperand2;
    //根据各变量的值更新相应的控件。和的编辑框会显示   
    //m_dResult的值   
    UpdateData(FALSE);   
}

盲猜PTR是pointer,有误还请指正
Windows编程与MFC # 3 基于对话框的应用程序(2)_第4张图片

课后作业

1.编写一个对话框程序,包含一个文本编辑框和一个按钮,当单击按钮时,文本编辑框中显示按钮被单击的次数。
2. 使用静态文本控件、文本编辑框、按钮等控件自行设计一个个人简历界面,信息自定,并且要求判断信息是否填写完整。
3.自学非模态对话框的相关内容*。要求:
在例题中再添加一个按钮“非模态”,单击弹出一个非模态对话框(可新建,也可用提示对话框)。
4. 自学PPT上的“补充内容:CString类”。

补充内容 CString

MFC提供了大量封装好的类,其中有一个CString类用于处理字符串。
CString没有基类。一个CString对象由可变长度的一队字符组成。
CString是MFC中的一种很有用的数据类型,它简化了字符串的各种操作。 Windows编程与MFC # 3 基于对话框的应用程序(2)_第5张图片
Windows编程与MFC # 3 基于对话框的应用程序(2)_第6张图片
CString对象采用了动态分配内存的机制。即在创建CString对象时,不需对该对象指明内存大小,CString会根据实际情况动态地进行分配。
创建一个CString类对象并为其赋值的方法有以下几种方法。

(1)  CString  str1;
       str1=“hello”;
(2) CString str2=“hello”;
(3) CString str3=str2;
(4) CString str4(‘C’); 
      //str4=“C”
(5) CString str5(‘C’,5);
      //str5=“CCCCC”

第一种方法是先构造一个CString类的对象,然后再使用赋值语句为其赋值。
第二种方法是在构造CString类对象的同时,进行初始化。
第三种方法是在构造CString类对象时,利用已有对象为其初始化
第四种方法是在构造CString类对象的同时,用单字符为其初始化。
第五种方法是在构造CString类对象时,指明产生一个字符串的方法。

Windows编程与MFC # 3 基于对话框的应用程序(2)_第7张图片
(1)字符串连接。使用CString类型能够很方便地连接两个字符串,如:

CString msg1 = “Hello”;
CString msg2 = “World”;
CString msg = msg1 + msg2;

(2)字符串转换为数值。在C语言中存在函数atof()可以将字符串转换为数值,不需要逐个字符解析。其函数声明为:
double atof(const char *nptr);

CString对象作为参数也可以完成转换。
CString digital = “123.45”;
double d = atof(digital); //d=123.45

(3)字符串格式化。字符串格式化是把其它类型数据转化为CString类型的方法。如:把一个整数转化成CString类型,可用如下方法:
CString s;
s.Format(“%d”,10);
Format()函数的参数与C语言中printf()函数的参数含义相同。
Windows编程与MFC # 3 基于对话框的应用程序(2)_第8张图片
(4)删除指定字符串。CString类提供TrimLeft()和TrimRight()函数删除指定的字符串。其函数声明为:
void TrimLeft();
void TrimLeft(TCHAR chTarget);

如果没有参数,则从左删除’\n’、’\t’和空格等字符,直到遇到一个非此类字符。
如果指定的参数是字符串,从字符串左边看起,遇到括号中出现的字符(参数)全部删除,直到出现第一个括号中未出现的字符时停止删除,即使后面又出现了参数中有的字符也不会删去了。
CString s=“0123456789”;
s.TrimLeft(“02”);
结果s=“123456789”。
(5)获得特定子串,CString类提供Left()和Right()函数来获取从字符串左侧开始或右侧开始的连续若干个字符,其函数声明为:
CString Left(int nCount) const;
CString Right(int nCount) const;
其中nCount个字符的个数
CString s=“123456789”;
CString l=s.Left(5); //l=“12345”
CString r=s.Right(5); //r=“56789”

(6)获得字符串长度,CString类提供GetLength()函数来获取字符串的长度,其函数声明为:
int GetLength( ) const;

你可能感兴趣的:(Windows编程,MFC)