急救!!如何在用dlg.DoModal()时动态的改变对话框标题栏中的文字!!!!谢谢!

yj_nj 2002-02-21 10:07:33
如何在用dlg.DoModal()时动态的改变对话框标题栏中的文字!
我是这样用的;
CDlg dlg; //此对话框原来是有标题的。
if(dlg.DoModal()==IDOK)
{
...
}
...全文
133 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yj_nj 2002-02-22
  • 打赏
  • 举报
回复
谢谢大家对我的支持!谢谢!
希望以后多多帮助我!谢谢!
lithe 2002-02-21
  • 打赏
  • 举报
回复
只能在CDlg类中用SetWindowText()来改
因为
在dlg.DoModal()之前,dlg只是被构造,但并没有创建窗口
所以在dlg.DoModal()之前调用dlg.SetWindowText()会错
而dlg.DoModal()只有在对话框关闭之后才返回,而此时,dlg虽然还没有被析构,但窗口已经被DestroyWindow了,所以再调用dlg.SetWindowText()也会错
BaoYu 2002-02-21
  • 打赏
  • 举报
回复
定时器+SetWindowText
Rose2000 2002-02-21
  • 打赏
  • 举报
回复
dlg.SetWindowText("fdsfdsf");
eion 2002-02-21
  • 打赏
  • 举报
回复
那你只能在CDlg类中来改变,因为
dlg.DoModal()
这一句已经将主线程挂起,转去执行dlg了(程序控制权交给了dlg);所以你要动态控制对话框标题栏的文字,只能预先设定
dlg.SetWindowText("你的标题");
dlg.????=????;
.......
dlg.DoModal();
还要注意你的dlg的OnInitDialog 不能有对你要设定的变量赋值(否则白费功夫)

还有就是你在你的对话框内设定:
CDlg::OnClick...()
{
SetWindowText("asdfasdf");
}
panda_w 2002-02-21
  • 打赏
  • 举报
回复
设置定时器,然后在里边修改
panda_w 2002-02-21
  • 打赏
  • 举报
回复
设置定时器,然后在里边修改
AttaBoy 2002-02-21
  • 打赏
  • 举报
回复
设置一成员变量
CString m_strTitle

在CDlg::OnInitDialog()里设置SetWindowText(m_strTitle)

在DoModal之前对dlg.m_strTitle赋值即可

16,471

社区成员

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

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

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