MFC 如何在一个对话框中修改另一个对话框里按钮的标题?

部分代码如下:gradedlg;//grade是被调用窗口的类名dlg.SetDlgItemTextA(IDC_BUTTON1,"hh");//IDC_BUTTON1是想... 部分代码如下:
grade dlg; //grade是被调用窗口的类名
dlg.SetDlgItemTextA(IDC_BUTTON1,"hh"); //IDC_BUTTON1是想要修改的按钮的ID
UpdateData(false);
dlg.DoModal();
执行时候报图中所示的错误:
展开
 我来答
龚炜林
2013-05-17 · TA获得超过1560个赞
知道大有可为答主
回答量:1102
采纳率:66%
帮助的人:570万
展开全部
可以用构造函数传递字符串。
改写grade的构造函数,曾加一个字符串指针参数
grade::grade(LPCTSTR btTitle, CWnd *pParent) : m_btTitle(btTitle)//
{
}
要记得修改类里面的声明
grade(LPCTSTR btTitle, CWnd *pParent = NULL) ;
并给grade类添加成员变量
LPCTSTR m_btTitle;(这里我任意取名)
然后给在grade的虚函数OnInitDialog里面判断
if(m_btTitle)
SetDlgItemTextA(IDC_BUTTON1, m_btTitle);

使用时
grade dlg("hh", this);
dlg.DoModal();
如果不修改文本可以
grade dlg(NULL, this);
dlg.DoModal();

如果要在对话框已经弹出后再修改,那就要用自定义消息或者需要获取对话框窗口对象指针了。
追问

非常感谢,但是照您说的方法做后报错了,系统提示:“error C2511: “grade::grade(LPCTSTR,CWnd *)”:“grade”中没有找到重载的成员函数”

这是改动之前

这是改动之后

追答
你类里面的声明对应着改没?
paradise300
2013-05-17 · TA获得超过3560个赞
知道大有可为答主
回答量:2589
采纳率:84%
帮助的人:495万
展开全部
dlg的hWnd为0x00000000,所以你的程序会崩溃,这样创建的这个对象只是一个对象,并不是你所需要找的窗口。如果你是子窗口访问父窗口的控件,可以使用 (GetParent()->GetDlgItem(IDC_BUTTON1))->SetDlgItemText(_T("hh"));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
何处淬吴钩
2013-05-17 · TA获得超过5043个赞
知道大有可为答主
回答量:2947
采纳率:50%
帮助的人:2393万
展开全部
用无模式对话框,在CreateWindow、ShowWindow之后SetDlgItemText
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式