我写了一个类A,这个类里面有个成员函数fun(),他很耗费大量的时间,
有个窗口的类B中声明了一个这个类的对象a
然后在B中调用这个耗时的成员函数,出现的情况是类B的窗口再也不响应任何鼠标消息了,
请问该如何处理,
让fun()运行的同时B窗口也可以相应消息。

解决方案 »

  1.   

      简单点;
         DWORD dwThreadID;
         HANDLE hThread=CreateThread(NULL,0,ThreadProc,(LPVOID)需要的参数,可以为结构或对象的指针,0,&dwThreadID);
         CloseHandle(hThread);
      
     将你的函数写在线程函数中,线程函数原型如下:   DWORD WINAPI ThreadProc(LPVOID lParameter)
       {
           fun();
           return 0L;
       }
       
       注意全局资源的保护.
         
     
      

  2.   

    是不是可以在A类主循环中中添加上相应消息转发的函数
    类似于这样,记不大清了
    MSG message;
    if(::PeekMessage(&message,NULL,0,0,PM_REMOVE)){
        ::TranslateMessage(&message);
        ::DispatchMessage(&message);
    }