20万火急 SetWindowText

来源:百度知道 编辑:UC知道 时间:2024/05/20 12:12:04
VC++ MFC 对话框模式下,其中p1为一个对话框类:

void CKillerDlg::OnB1()
{
P1* p1=new P1;
p1->DoModal();
p1->GetDlgItem(IDC_E1)->CWnd::SetWindowText("NNNNNN");
}

为什么这么做了之后,仍然无法改变动态文本框IDC_E1的值,应该怎么做,谢谢。

我想改变弹出的p1对话框中的IDC_E1控件的值
-----------------
而且我在关闭对话框p1的时候,会弹出一个非法操作的提示
-----------------
去掉CWnd::还是老样子
问题不在这里,你们这么做还是不行,
是DoModal()的问题DoModal()之前cp1不存在,IDC_E1当然也不存在,DoModal()之后,cp1消失了,IDC_E1不存在

如果说,我改用非模态对话框来做

P1 *p1=new P1; //非模态对话框
p1->Create(IDD_1,this);
p1->GetDlgItem(IDC_E1)->CWnd::SetWindowText("123");
p1->ShowWindow(SW_SHOW);

一切正常

到底要怎么改啊,模态对话框才能实现,cp1类的构造函数中实现吗?

我重载了,结果一启动就是一个错误操作

BOOL P1::OnInitDialog()
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here
m_e1.SetWindowText("123");
return TRUE; //

你可以为IDC_E1定义一个Control类型的变量c1,使用c1.SetWindowText("")来操作就好了

大哥,我不知道你怎么能这么搞,呵呵,我的意思是P1是一个对话框的类吧,那么在这个类的实现文件,也就是CPP文件里你重载OnInitDialog()函数,里面加一句c1.SetWindowText("123")不就好了啊,管你是模态还是非模态对话框啊

你可以这样的实现嘛!!!

CEdit *pwd = (CEdit *)GetDlgItem(编辑框ID号);
pwd->SetWindowText("成功啦!");