用MFC对话框模式建立一个多线程演示程序,比如线程thread1计算2的n次方,如何在线程中向Edit Box写入结果。我的部分程序如下,请讨论。
CDxcMfc01Dlg dialog;   // 声明对话框类的对象
...
result=pow2n(result,n);  // 调用pow2n 计算2的n次方 结果放于char* result
dialog.UpdateData(true);
dialog.m_edit1.Format("%s",result);
dialog.UpdateData(false);
与大家共勉!!!

解决方案 »

  1.   

    有弊端~~
    CDxcMfc01Dlg dialog;   // 声明对话框类的对象
    ...
    while(1){
    result=pow2n(result,n);  // 调用pow2n 计算2的n次方 结果放于char* result
    dialog.UpdateData(true);
    dialog.m_edit1.Format("%s",result);
    dialog.UpdateData(false);
    }//这样写你的主程序就“死掉啦“。。
      

  2.   

    我的界面本来就没有死掉, 我控制了循环100次 ,别的没问题 ,就是不知道在非类的函数中如何写入edit box
      

  3.   

    100次当然没问题,可是如果while(1)肯定会出现问题
    你的非类的函数是指的什么?
      

  4.   

    我的线程函数不在类中 ,类的ondraw方法调用了线程函数,我可以在这个函数中生成对象 ,可是我不会向edit中写入东西,如果我在类的方法中向edit写东西,我可以解决。
      

  5.   

    #define WM_WRITETEXT WM_USER+100
    用SendMessage(WM_WRITETEXT,0,0);//计算完毕发送消息到你的类中另外你在OnDraw中调用你的线程函数的时候应该把当前的this指针传递给线程,这样你就可以使用(CYourDlg *)this->SendMessage(WM_WRITETEXT,0,0)向你的类发送消息
    在你的类中可以响应这个消息,处理现实数据了
      

  6.   

    更正,在你的线程中计算完毕后这样用:
    (CYourDlg *)lParam->SendMessage(WM_WRITETEXT,0,0);//向你的类发送消息
      

  7.   

    我在ondraw中已经把this指针传给线程,我可以向类发送消息,请问我是不是还要把字符串也要返回呢,仅仅发个消息,能干什么呢,在类中如何响应
      

  8.   

    str.Format("%d",num);
    SendMessage(WM_WRITETEXT,(WPARAM)str,0);
      

  9.   

    再请问 , str 是什么类型的,我在主函数中如何接收信息,并如何处理?
      

  10.   

    str是MFC中的CString 类型;你的类接收到信息以后这样处理
    str.Format("%s",wParam);//wParam是从线程发过来的消息参数,里头是你的计算结果的字 符表示
    m_edit.Format("%s",str);
    update(false);
      

  11.   

    to Joners,如果在窗口响应消息之前工作线程把str修改了咋办?