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

2024-11-09 02:27:12
推荐回答(3个)
回答1:

可以用构造函数传递字符串。
改写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();

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

回答2:

dlg的hWnd为0x00000000,所以你的程序会崩溃,这样创建的这个对象只是一个对象,并不是你所需要找的窗口。如果你是子窗口访问父窗口的控件,可以使用 (GetParent()->GetDlgItem(IDC_BUTTON1))->SetDlgItemText(_T("hh"));

回答3:

用无模式对话框,在CreateWindow、ShowWindow之后SetDlgItemText