MFC新建对话框2020-08-05 02:21:32

( 还没有投票,继续加油! )
分享:
31.3K

点击按纽后,开启新的对话框。

对话框分为模态非模态,两者区别就是当对话框被打开时,是否允许用户进行其他对象的操作,也就是原来界面卡住了,必须关了模态对话框才能操作。

这两种都很有用,两者实现都很容易,非模一个create就行,实现不一样,一句话的事。


打开一个新的界面(对话框)只需要三步

1)建立界面资源

在解决方案里的=》资源文件上右击=》添加资源=》选择Dialog   或者

在资源视图里面随便右击=》 插入Dialog

都会生成一个名字为IDD_DIALOG1的对话框文件,双击打开,可以在工具箱里拖一些控件放里面。


2)为对话框建立类

在对话框的界面上右击=》添加类=》就起个名字就好,比如叫,NewDialog2,点完成!

//对话框上有按纽OK CANCEL啥的,双击按钮就会跳到该类,必建立一个该按纽的响应方法。


3)显示对话框

在需要的地方,比如主界面的一个按纽方法中

void MyFirstUI::OnBnClickedButtonNew()
{
  // TODO: 在此添加控件通知处理程序代码
  NewDialog2 dlg = new NewDialog2(this);
  dlg.DoModal();
}


这样就加载了另一个对话框界面,自由扩展吧。。。


很有用的小知识:

如何更改对话框上的文字内容呢,而且要把变量的值显示出来。

void MyFirstUI::TextOperation(CString str) {
  CWnd* pTxt = GetDlgItem(IDC_NOTICE);
  CString str1;
  str1.Format(_T("Num count:%s"), str);
  pTxt->SetWindowTextW(str1);
}

看好了,这是一个响应函数,调用该函数将修改对话框上的文本值。

【讲解】第一行的GetDlgItem是获取文本ID地址的,当然了IDC_NOTICE就是界面上的文本地址,得到一个对象指针,然后setWindowText就可以修改其内容了。

如果是变量的话就需要组合一下,用CString的Format很方便,有人不知道_T("")是什么,这是MFC特有的,专为应对操作系统位数变化的,套上更安全>.<~!,重点是这样转换组合变量你记住了吗,会经常用到的哦。。。

说错了吧,明明SetWindowTextW不是SetWindowText,其实还有一个SetWindowTextA 单字节char,这也是兼容系统位数造成的,W就是wide宽的,宽字符Unicode,否则就是ANSI占内存大小也是2倍吧,应对高系统,其实都是兼容性的问题。

到底什么是ANSI,什么是UNICODE呢?其实这是两种不同的编码方式标准,ANSI中的字符采用8bit,而UNICODE中的字符采用16bit。8bit的ANSI编码只能表示256种字符,表示26个英文字母是绰绰有余的,但是表示汉字,韩国语,日语等有着成千上万个字符的非西方字符肯定就不够了,正是如此才引入了UNICODE标准。

到这里知道控件之一的文本(static text)怎么修改吧,很常用的哦,把界面上的控件都统一规划提取出来,想怎么改就怎么改了,界面就活了。关于Picture label的修改,在我上一篇的上一篇文章里有,有点小麻烦的,主要用于显示图片包含视频。这些都是常用控件,以后会不时的更新其他的控件的操作,敬请期待哦。


MFC新建对话框

MFC新建对话框MFC新建对话框MFC新建对话框MFC新建对话框MFC新建对话框MFC新建对话框MFC新建对话框MFC新建对话框MFC新建对话框MFC新建对话框MFC新建对话框






头像

snowcoal
  • MFC
  • 对话框
  • 控件
  • 模态对话框

收藏到我的私密空间

标题:MFC新建对话框

作者:花花世界

你暂未登录,请登录后才可收藏至您的私密空间 确认取消
雪炭网

键盘操作 更便捷 -雪炭网雪中送炭-乐趣无限

如果本站的内容有幸帮助到了您,建议您了解一下当页的广告内容哦,我们的进步离不开您的支持,Thank you~