问题描述:
新建了一个对话框程序,要实现的功能是点击开始时再弹出一个对话框,代码如下:
C/C++ code
1
2
3
4
5
6
7
8
9
void CModelDialogTestDlg::OnBnClickedOk()
{
    // TODO: 在此添加控件通知处理程序代码
     MyForm* form=new MyForm();
     form->DoModal();
        //Pages是CStatic类型的控件
    form->Pages.SetWindowTextA("da");
 
}


但是运行到 SetWindowTextA 时会报错,如图:
模态对话框上的静态文本控件的赋值问题


调换了下执行顺序,还是报同样的错误
C/C++ code
1
2
3
4
5
6
7
8
void CModelDialogTestDlg::OnBnClickedOk()
{
    // TODO: 在此添加控件通知处理程序代码
     MyForm* form=new MyForm();
         //Pages是CStatic类型的控件
     form->Pages.SetWindowTextA("da");
         form->DoModal();
}


如果用非模态对话框的话,就可以正常使用SetWindowTextA函数。这是什么原因?模态对话框的控件要怎么
 
 
 
//MyForm.h
public:
  CString szPageText;
 
//MyForm.cpp
BOOL MyForm::OnInitDialog()
{
  CDialog::OnInitDialog();
  SetDlgItemText(IDC_STATIC_PAGES, szPageText);
  return TRUE;
}
 
void CModelDialogTestDlg::OnBnClickedOk()
{
    // TODO: 在此添加控件通知处理程序代码
  MyForm form;
   form.szPageText = _T("Aa");
   form.DoModal();
}

相关文章: