为什么对话框不能操作?(送分)

caicai 2000-02-23 10:13:00
在vc中创建了一个标准的demo.
其中有的一段对aboutdlg的调用,程序运行的时候可以正常执行,显示出对话框
void CMyApp::OnMenuitemAbout()
{
// TODO: Add your command handler code here
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}

如果对他进行修改如下,在新加的这一句执行的时候dlgAbout总是0x00000000
程序出错,为什么是这样呢?
跟踪的时候发现dlgAbout已经调用过构造函数了,可为什么还是0
void CMyApp::OnMenuitemAbout()
{
// TODO: Add your command handler code here
CAboutDlg dlgAbout;
dlgAbout.SetWindowText("程序说明");
dlgAbout.DoModal();
}

...全文
192 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
caicai 2000-02-23
  • 打赏
  • 举报
回复
明白,那么0x00000000的意思是不是这个对象还没有创建呢?

谢谢。我用成员变量先负值,然后在OnInitDialog方法中设置。
caicai 2000-02-23
  • 打赏
  • 举报
回复
因为希望同样样子的对话框有不同的地方要用到,
希望得到不同的title,内部的label 和注释也都不同。
以前没注意过,没做过这方面的尝试。
qiujoe 2000-02-23
  • 打赏
  • 举报
回复
LITTLETAO说得对,只要在CAboutDlg中重载OnInitDialog
加入一行
SetWindowText("程序说明");
成员变量是可以先付值的,但你用的是SetWindowText()函数,必须在窗口创建之后使用
cym 2000-02-23
  • 打赏
  • 举报
回复
因为SetWindowText()函数是窗口的操作函数
而对话框的构造函数中还没有创建对话框窗体
caicai 2000-02-23
  • 打赏
  • 举报
回复
Re:为什么对话框不能操作? Sniper 2000-2-23 10:47:06
我看了你前面问的问题。
为什么不修改CAboutDlg的实现呢?
比如在CAboutDlg::OnInitUpdate()方法中调用SetWindowText("程序说明")。


caicai 2000-02-23
  • 打赏
  • 举报
回复
domodal执行完后,是不是dlg对象就被释放了呢?
如何取回这些值呢?
是不是可以这样在CAboutDlg的构造函数中加入传入参数
在构造的时候负值,这样好不好?

可是还是不能解释这个问题,为什么已经执行过构造函数了,调试的时候却发现
dlg还是0x00000000,window可能没有创建,但是dlg不应该是null呀.

谢谢
SoftDIY 2000-02-23
  • 打赏
  • 举报
回复
在domodal里面修改
littletao 2000-02-23
  • 打赏
  • 举报
回复
你可以设置添加CAboutDlg的成员变量,把
你的字符串赋给它,然后在对话框的OnInitDialog里
SetWindowText(你的成员变量)
caicai 2000-02-23
  • 打赏
  • 举报
回复
谢谢。
哪如何在显示模式对话框的时候修改它的标题或者对他的控件成员进行操作呢?
不能再domodal()前做,也不能再domodal()后做,
是不是有其他的构造方法?

但是记得“vc内幕”书中ex06a的例子里就是在domodal前修改对话框的成员变量的呀。
littletao 2000-02-23
  • 打赏
  • 举报
回复
DoModal后才产生window的,你这样window还没产生,当然不对了。
建议看看source code
in Dlgcore.cpp

16,471

社区成员

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

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

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