请问如何在线程中对主窗口中的可视化控件做编辑?我在一个窗口的OnInitDialog()中创建了一个线程,利用它来实现sock通信,现在想把接受到的消息添加到主窗口的combo box控件中去,请问怎么实现?谢谢!

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/3422/3422185.xml?temp=.8003046
      

  2.   

    看不懂。我的程序是这样的
    HANDLE threadhandle;//全局变量
    DWORD re;
    BOOL CClientnewDlg::OnInitDialog()
    {//其他初始函数
    threadhandle= CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)recv,NULL,0,&re);//创建线程
    MessageBox("线程创建!");
    return TRUE; 
    }
    void recv()
    {
    ::SetDlgItemText(AfxGetMainWnd()->m_hWnd,IDC_EDIT1,"hello");//这句没有效果
    MessageBox(AfxGetMainWnd()->m_hWnd,0,"线程内!",NULL);//这句也没有出现提示
    //其他语句}
    请问是什么原因啊?
      

  3.   

    你可以把对话框指针传到线程函数中去
    threadhandle= CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)recv,this,0,&re);//
    void recv(LPVOID pParam)
    {
             CClientnewDlg *pDlg = (CClientnewDlg *) pParam;        ASSERT(pDlg);
            doSomething.....;
            ......
    }
      

  4.   

    对话框指针传到线程函数中去?对话框只有生成该对象的线程才能访问,新创建的线程是不能访问该对象的,如果传递他的m_hwnd倒是有可能的。
      

  5.   

    传递到m_hwnd应该怎么实现啊?具体点好吗?谢谢。
      

  6.   

    CClientnewDlg *dlg = (CClientnewDlg *)AfxGetApp()->GetMainWnd();