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

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

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

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

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);//个人见解:窗口有大小,改变其大小后,就会响应触发这个(消息处理函数)。形参intcx是窗口宽度,这一行代码将cx转换为字符串格式。
SetWindowText("窗口宽度为:"+csWidth);//在标题栏中显示。(需改变窗口大小后才会显示)
}

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

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

②处理控件类消息

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

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

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

编辑框文本改变时的消息

六:系统消息对话框

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

操作和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差不多,就不说了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值