线程:
DWORD WINAPI ChannelThread(LPVOID pParam)
{
     AfxMessageBox("照片存储服务器失败!");
}我想把"照片存储服务器失败!"错误信息在单文档视图中显示出来,代替这里的消息框。该如何解决。
最好能有代码,多谢。

解决方案 »

  1.   

    线程中使用AfxGetMainWnd()->GetActiveView()获得View的指针,然后就可以调用view中的函数了,你在View中添加一个函数用于输出线程的信息!
      

  2.   

    把视图指针做参数传递进去
    CYourView *pview = (CYourView *)AfxGetMainWnd()->GetActiveView();
    AfxBeginThread(ChannelThread,(LPVOID*)pview,THREAD_PRIORITY_NORMAL);DWORD WINAPI ChannelThread(LPVOID pParam)
    {
         CYourView *view = (CYourView *)pParam;
         view->.....///这里就可以操作试图里的函数啦
    }
      

  3.   

    跨线程传递CWnd*会带来一些问题,最好是向UI消息发送自定义消息来处理。
      

  4.   

    得到单文档视图指针->pDC
             CFont font;
    font.CreateFont(
    12,                        // nHeight
    0,                         // nWidth
    0,                         // nEscapement
    0,                         // nOrientation
    FW_THIN,    // nWeight
    FALSE,                     // bItalic
    FALSE,                     // bUnderline
    0,                         // cStrikeOut
    ANSI_CHARSET,              // nCharSet
    OUT_DEFAULT_PRECIS,        // nOutPrecision
    CLIP_DEFAULT_PRECIS,       // nClipPrecision
    DEFAULT_QUALITY,           // nQuality
    DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily
    "Arial");                 // lpszFacename

    CFont* def_font = pDC->SelectObject(&font);
    pDC->SetTextAlign(TA_RIGHT);
             pDC->SetTextColor (RGB(0,0,0));
    pDC->TextOut (x,y,"照片存储服务器失败");

    font.DeleteObject();
      

  5.   

    直接发送消息
    PostMessage(hWnd,WM_yourMsg,(wParam)buff,0);
    消息内容放到buff中,类型转换一下