在对话框1里用用
dlg.DoModal();
打开了对话框2,
如何在对话框2里操作对话框1里的listctrl控件呢?我用
FindWindow(NULL,L"4位舵机控制系统")->GetDlgItem(IDC_LIST1)->m_ctlListData.GetItemText(0,0)
语句,系统报错如下:1>c:\documents and settings\lenovo\my documents\visual studio 2005\projects\24channel2.06071407\24channel2\offsetdlg.cpp(446) : error C2228: left of '.m_ctlListData' must have class/struct/union
1>        type is 'CWnd *'
1>        did you intend to use '->' instead?
1>c:\documents and settings\lenovo\my documents\visual studio 2005\projects\24channel2.06071407\24channel2\offsetdlg.cpp(446) : error C2228: left of '.GetItemText' must have class/struct/union操作原理应该是获得对话框1的句柄,然后再用。
那具体应该怎么做呢?
盼赐教!!

解决方案 »

  1.   

    创建 对话框1 的时候, 就可以拿到它的Handle啊
      

  2.   

    findwindow和getdlgitem得到的都是hwnd句柄,不能这么直接用
    我提供两个其它方法你试试
    1)domodal之前,把dlg1的指针先传给dlg2,然后在dlg2里使用指针控制dlg1中的控件
    2)从dlg2中发消息给dlg1,dlg1在消息中进行处理
      

  3.   

    CListCtrl* list = (CListCtrl*)FindWindow(NULL,L"4位舵机控制系统")->GetDlgItem(IDC_LIST1);
    CString text = list->GetItemText(0,0);
      

  4.   

    直接用GetParent()就好了
    GetParent()->GetDlgItem(IDC_LIST1)->m_ctlListData.GetItemText(0,0)
      

  5.   

    错了((CListCtrl*)(GetParent()->GetDlgItem(IDC_LIST1)))->GetItemText(0,0)
      

  6.   

    问题解决!
    我在对话框2里需要引用对话框1的IDC_LIST1的时候:
    CListCtrl* list = (CListCtrl*)(GetParent()->GetDlgItem(IDC_LIST1));
    CString text = list->GetItemText(theApp.g_selID.GetAt(i),0);感谢各位,回帖给分!