MFC对话框的一个疑问

小_汪 2019-05-31 10:22:12
本人刚学mfc没多久,今天洗碗的时候想着白天遇到的一个问题,虽然百度后解决了。但是深思的时候还是有一个疑问。这个疑问和早上的问题不是很相关,但也有一点关联。问题比较抽象,我不知道我能不能描述的清楚,我尽量吧。是这样的 学mfc之前我看了一下C++的基础知识。我们一般都是在c++看到的函数形式都是这样的 class A{ ···//成员函数和成员数据 }; int main(){ A a; return 1; } 一般都是这种形式,我们在创建一个类时,并不会占用内存空间。只有类在实例化之后才会占用内存空间。也就是A a有了这句话对象a才会占用内存空间。 但是在mfc中,我新建了一个工程,然后一步一步设置好,中间有一步骤我勾选的是基于对话框。设置完后,系统就自动生成了一个主对话框。然后左边就是一个app.cpp和一个dlg.cpp,还有各种的.h文件和一些资源文件。我编写程序都是在***dlg.cpp上添加各种代码。也就是说我只是在***dlg这个类里面进行各种操作。 我的疑问时系统生成的这个对话框是谁创建的。我觉得总该有个类似于上面这样***dlg a;代码才能创建对话框吧。不然怎么生成对话框。这样就引申出我早上的一个问题。我在类中的一个静态函数里访问一个非静态函数,我就需要用对象名.函数这样访问。但是这个主对话框我都不知道是谁创建的,我怎么用对象名去访问。用专业术语讲就是获得父窗口指针的意思。 说了这么多,不知道有没有讲明白。还望大神不吝赐教,尽量讲的详细些
...全文
97 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinling4388 2019-06-06
  • 打赏
  • 举报
回复
这个对话框是MFC框架自动创建的,在App类里的 InitInstance函数里有调用的代码。

同时,静态函数不能调用非静态的函数或者变量
vcf_reader 2019-06-06
  • 打赏
  • 举报
回复
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
Eleven 2019-06-03
  • 打赏
  • 举报
回复
SetDlgItemText(AfxGetMainWnd()->GetSafeHwnd(), IDC_XXXX, TEXT(""));
小_汪 2019-06-03
  • 打赏
  • 举报
回复
引用 4 楼 sichuanwww 的回复:
“我觉得总该有个类似于上面这样***dlg a;”你的理解是正确的,只是没找到地方看见而已。
这个东东在 App类里的 InitInstance函数里有代码体现
谢谢,我看到了。但是还有一个疑问。在app.cpp里的initInstance里看到这个代码。***Dlg dlg;也就是说这个主对话框是由dlg这个对象创建的。可是这个创建的也是局部对象,不是全局对象。我想在dlg.cpp里的一个静态函数下面访问非静态函数,比如我想dlg.SetDlgItemText()就不行,因为不是全局对象
Eleven 2019-06-03
  • 打赏
  • 举报
回复
看你的App类的InitInstance函数~
hrtem 2019-06-03
  • 打赏
  • 举报
回复
系统向导帮你创建的
sichuanwww 2019-06-02
  • 打赏
  • 举报
回复
“我觉得总该有个类似于上面这样***dlg a;”你的理解是正确的,只是没找到地方看见而已。
这个东东在 App类里的 InitInstance函数里有代码体现
smwhotjay 2019-06-02
  • 打赏
  • 举报
回复
仔细看mfc 自动创建的app dlg那几个类
zgl7903 2019-06-01
  • 打赏
  • 举报
回复
基于对话框的App, 留意一下 App类里的 InitInstance
schlafenhamster 2019-06-01
  • 打赏
  • 举报
回复

CxxxDlg* pDlg=(CxxxDlg* )AfxGetMainWnd();
schlafenhamster 2019-06-01
  • 打赏
  • 举报
回复
“系统生成的这个对话框是谁创建的。” 对话框工程 里 主对话框 是MFC 创建的。用 CWnd* AfxGetMainWnd( );

得到

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧