我在一个工作者线程里处理数据
怎么把处理完的数据在界面控件显示呢
PostMessage
SendMessage
好像不好使啊
谁给我点简单的例子看看啊

解决方案 »

  1.   

    试一试GetActiveView获取视类的指针试一试。
      

  2.   

    SendMessage消息没有问题 
    或者简单点,用个定时器,定时刷新数据
      

  3.   

    当然最好还是发消息通知了。比如:弄个结构体指针,再自定义个消息。struct MyData
    {
      int data1;
      char data2[LEN];
    };......
    {
      MyData *data;
      ......
      (处理)
      SendMessage(hwnd, WM_MYUPDATE, (WPARAM)data, NULL);
    }WinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
      switch (message)
      {
        case WM_MYUPDATE:
        {
          MyData *p=(MyData *)wParam;
          m_data1=p->data1;
          memcpy(m_data2, p->data2, LEN*sizeof(char));
          UpdateData(TRUE);
        }
      }
    }不一定很明白啊,呵呵。
      

  4.   

    跨线程异步调用,需要一个底层框架。
    大致是这样:主线程创建一个队列和semaphore,然后用MsgWaitForMultipleObjects()等待该semaphore,有message就处理msg,否则就是有其他线程的请求到达。调用者把请求的函数指针和参数放到队列上,并release那个semaphore。如果把队列和semaphore封装到一起,并把请求封装成对象,就变成象ACE那样的面向对象的消息中间件。
    (要索取开发包请发邮件到[email protected],标题写上"索取OOMM",我会把.h,.lib和debug/release的dll,还有sample发过来。sample是MFC工程,含source code。没有任何限制,不含任何木马成分,可以用做任何用途,信不过我别用。)