MFC在一个对话框中调用另一个子对话框中列表控件的问题
你弄混了模态对话框和非模态对话框的建立方法 ,你现在要建立的子对话框应该为非模态对话框,按下面方法建立: Cdiodlog *dlg2=new Cdiodlog; dlg2->Create(IDD_DIALOG1); //子对话框ID号 dlg2->ShowWindow(SW_SHOW); UpdateData(true); dlg2->m_A=m_A; dlg2->UpdateData(false); 另外子对话框中静态文本ID需要由IDC_STATIC改为IDC_STATIC1或其他名字,以使其ID在对话框中唯一,这样就可以关联CString型变量m_A 若满意请及时采纳,谢谢
MFC线程中不能用UpdateData,怎么解决(详细).
获得句柄,通过GetWindowText( HWND, buffer, len );得到控件内容。可以把父窗口指针作为参数传到线程里来获取句柄。同理,可以通过SetWindowText设置内容。
比如传入的是对话框的指针pDlg,比如你已知ID,那么设置如下:pDlg->GetDlgItem( ID )->SetWindowText("你要设置的东西");
另一种方法是消息处理,自定义消息,然后线程内PostMessage和参数,在你的外部来处理该消息。
补充:
1、HWND hWnd = ( CWnd* )pWnd->GetDlgItem( ID );
2、线程函数定义如下UINT WINAPI WorkThread( LPVOID lpContext ); 应用时可以这样,
CYourDlg dlg;
CreateThread(...,(参数)(LPVOID) &dlg );
在函数里这样写:
CYourDlg* pDlg = ( CYourDlg* ) lpContext;
if ( pDLg )
{
HWND hWnd = pDlg->GetDlgItem( 控件ID );
PostMessage( hWnd, WM_YOURMSG, pstr, 0 );
}