DWORD WINAPI ThreadProc(void* p)
/*线程控制函数*/
{
  初始化并建立数据库连接;
  MSG msg;
  while (::GetMessage(&msg, NULL, 0, 0))
  {
    switch(msg.message)
    {
        case MYMESSAGE:
            dosomething();
            /*在这里完成主程序传来的任务*/
              busy[*(int*)p]=false;
            /*工作完成,设置为不忙*/
            break;
          case WM_QUIT:
              return 5;
        default:
              break;
    }
  }
  return 10;
}return 5,return 10 是什么意思?(声明:抄的)

解决方案 »

  1.   

    LRESULT MessageProc(MSG &msg)
    /*向线程池发送消息*/
    {
        for(int i=0;i<8;i++)
        {
            if(!busy[i])
              /*寻找一个空闲的线程*/ 
    {
                busy[i]=true;
                 /*设置为忙*/
                ::PostThreadMessage(dw[i],msg.message,msg.wParam,msg.lParam);
                /*向线程ID为dw[i]的线程发送消息*/
            }
        }
        return (0L);
    }return (0L);是什么意思?
      

  2.   

    while(::GetMessage(&msg, NULL, 0, 0))
    {
    }遇到WM_QUIT是不是直接返回了?
      
      

  3.   

    ::GetMessage(&msg, NULL, 0, 0)得到WM_QUIT的返回值是不是0?