本帖最后由 wasedasai 于 2011-09-06 10:40:15 编辑

解决方案 »

  1.   

    不要在线程里操作界面元素
    可以通过发消息的方式让主线程操作
    如果你需要返回值可以通过同步机制建立相互通信
    看看这篇文章会不会对你有帮助
    http://blog.csdn.net/xianglitian/article/details/6729851
      

  2.   

    你的线程函数是全局的,而不是属于对话框类的,自然不能调用cwnd成员函数IsDlgButtonChecked,更没有IDC_CHECK1这样的资源,当然你可以调用微软的API函数,格式如下:
    UINT IsDlgButtonChecked(
      HWND hDlg,     // handle to dialog box
      int nIDButton  // button identifier
    );解决的办法很简单,一个是你给线程函数传递一个参数,把对话框的指针传递过去,另一个方法就是把你的线程函数作为对话框的静态成员函数~~~
      

  3.   

    线程函数中不要直接操作UI对象,而是发送消息给主线程来操作UI 对象.
      

  4.   

    AfxBeginThread创建线程,你的线程函数的原型不对
    UINT __cdecl ThreadProc(LVPOID lParam);
      

  5.   

    传个句柄试试void SaveDate::OnBnClickedButton1()
    {CWinThread* mythread = AfxBeginThread(MakeFile,(LPVOID)&m_hWnd,THREAD_PRIORITY_NORMAL,0,0,NULL);}BOOL MakeFile( LPVOID pParam)
    {
    if( BST_CHECKED == ::IsDlgButtonChecked( *(HWND*)pParam, IDC_CHECK1 ) )
    read.ReadPlan();
    }
    QQ 2490152755
      

  6.   

    参数里面传递一个this指针就可以了。
      

  7.   

    在创建线程时,将This指针传入线程函数.然后在线程函数中this->sendmessage()不知道这样可以不,楼主可以试一下