MFC原创教程:从不会开始(对话框2)

三:使用控件进行界面布局
添加控件--排版控件这些都和VB都差不多。
主要是为了访问控件,还需要为控件命名。使控件窗口关联到对应到窗口类上,这称为控件到子类化。依然上通过类向导来关联。选择 控件,ctrl+w(或右键点击控件--建立类向导)--MemberVariables--选择要控制到控件ID--Add Variables--输入变量名称-- Category--变量类型选为 Control 。对控件的控制,在前面已经说过了。
四:添加成员变量
①手动添加变量:
    ClassVIew--双击CDialogDIg--在public或者其它地方输入变量,如int m_Num;
②通过类向导:(基本不这么做)
    ClassVIew--右键点击CDialogDIg--Add MemberValiables
五:添加成员变量:
①手动添加成员变量:
②通过类向导:(通常这样做)    
    因为如果使用①方法,需要在类内声明函数,然后在类外定义函数,比较费时。ClassVIew--右键点击CDialogDIg--Add MemberFunction

MFC原创教程:从不会开始(对话框2)_第1张图片

    这样,系统就自动在该类添加了成员函数的声明并且在类外定义了函数。

六:添加消息处理函数(开始进入最难到部分了,至少我上这么认为)

    也是直接做个例子,让窗口标题自动实时显示窗口宽度;

    ClassVIew--右键点击Add Windows Message Handler,会看到左边一大堆的消息事件,这些只能慢慢使用慢慢记住的样子。

     右下方Filter for message availableto 选择Window ,左边双击WM_SIZE -- Edit Existing

    添加如下代码:

void CDialogDlg::OnSize(UINT nType, int cx, int cy)
{
 CDialog::OnSize(nType, cx, cy);
 CString csWidth;   //创建一个字符串成员变量
 csWidth.Format("%d",cx);//个人见解:窗口有大小,改变其大小后,就会响应触发这个(消息处理函数)。形参int cx是窗口宽度,这一行代码将cx转换为字符串格式。
 SetWindowText("窗口宽度为:"+csWidth);//在标题栏中显示。(需改变窗口大小后才会显示)
}

PS:我创建的这个对话框窗口,起初是不能改变大小的(属性被设置为固定的了)。通过右键点击窗口视图--属性--样式--边框--调整大小,就可以随时改变窗口大小了。

     同样的道理可以显示窗口高度

MFC原创教程:从不会开始(对话框2)_第2张图片

②处理控件类消息

    ctrl+w -- 左边选择要处理的控件ID,右边双击要处理的消息--然后点击Edit Code 

MFC原创教程:从不会开始(对话框2)_第3张图片

void CDialogDlg::OnChangeEdit1() //实现在文本框输入什么内容,标题就变成什么内容。
{
 CString csText;
 m_Edit1.GetWindowText(csText);//变量m_Edit1是刚创建的,变量要子类化的样子。见(三)。将获取的文本框Edit1的内容存到csText
 SetWindowText(csText);
}

MFC原创教程:从不会开始(对话框2)_第4张图片

 PS:我使用Visual C++ 6.0处理时,虽然编译没错,但无法运行。换了Visual Studio 2010就可以了~弄了很久也不知道是怎么回事。。。

 

编辑框文本改变时的消息

六:系统消息对话框

    MFC的MessageBox封装在CWnd类中,原型
int CWnd::MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK );

MFC原创教程:从不会开始(对话框2)_第5张图片

 

MFC原创教程:从不会开始(对话框2)_第6张图片

 

操作和VB一样。

void CDialogDlg::OnButton3()
{
 MessageBox("你好吗?","提示",MB_OK|MB_ICONEXCLAMATION);
}

②关闭对话框时提示用户是否关闭。
就不说怎么添加函数了,直接贴代码。
void CDialogDlg::OnCancel(void)
{
 if((MessageBox("确定要关闭吗?","提示",MB_YESNO))==IDYES)
 {
  //CDialogDlg::OnCancel();//一开始我先成了这样,结果。。。关闭-确认--关闭?--确认…死循环了
  CDialog::OnCancel();//CDialog是所有对话框的基类,oncancle是其一个成员函数,其作用就是关闭对话框。 
 }
}
在这里,我是这样理解的,CDialogDlg 继承了 CDialog,OnCancel()是CDialog的成员函数。
最后,还有一个AFxMessageBox函数,效果和MessageBox差不多,就不说了。

你可能感兴趣的:(mfc,mfc,vc++,vc++)