MFC新建对话框2020-08-05 02:21:32
点击按纽后,开启新的对话框。
对话框分为模态非模态,两者区别就是当对话框被打开时,是否允许用户进行其他对象的操作,也就是原来界面卡住了,必须关了模态对话框才能操作。
这两种都很有用,两者实现都很容易,非模一个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的修改,在我上一篇的上一篇文章里有,有点小麻烦的,主要用于显示图片包含视频。这些都是常用控件,以后会不时的更新其他的控件的操作,敬请期待哦。
原文链接(Hyperlink):https://snowcoal.com/article/75514.html
原创内容,尊重版权,转载需注明出处;商业及其他特殊用途转载需原作者同意。