模态对话框上的静态文本控件的赋值有关问题

模态对话框上的静态文本控件的赋值问题
新建了一个对话框程序,要实现的功能是点击开始时再弹出一个对话框,代码如下:

void CModelDialogTestDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
 MyForm* form=new MyForm();
 form->DoModal();
        //Pages是CStatic类型的控件
form->Pages.SetWindowTextA("da");

}


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


调换了下执行顺序,还是报同样的错误

void CModelDialogTestDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
 MyForm* form=new MyForm();
         //Pages是CStatic类型的控件
 form->Pages.SetWindowTextA("da");
         form->DoModal();
}


如果用非模态对话框的话,就可以正常使用SetWindowTextA函数。这是什么原因?模态对话框的控件要怎么赋值?求解

P.S.项目一定要要用模态对话框来实现
------解决方案--------------------
引用:
Quote: 引用:


在类 MyForm里添加一个CString变量,并添加设置该变量的函数
 MyForm* form=new MyForm();之后,调用MyForm添加设置该变量的函数,之后form->DoModal();最重要的是在MyForm的OnInitDialog()里进行Pages.SetWindowTextA(CString变量);


试了,但问题依旧,貌似是句柄的问题


如果是句柄的问题,可以试试如下 代码:

HWND h_Page=::GetDlgItem(this->m_hWnd,IDD);//IDD是你控件的ID
CStatic* totalPages=(CStatic*)FromHandle(h_Page); 
totalPages->SetWindowTextW(“你的数据 ”);
------解决方案--------------------
//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();
}



------解决方案--------------------
为什么一定要在CModelDialogTestDlg里调用form->Pages.SetWindowTextA,这样设计是非常不好,应该要在MyForm类的里才调用OnInitDialog()调用Pages.SetWindowTextA的,先改成这样先,问题也少点,省得句柄什么乱七八糟的问题