本帖最后由 xdelete 于 2012-08-11 14:00:17 编辑

解决方案 »

  1.   

    for (int Port = StartPort; Port <= EndPort; Port++)//扫描端口是否符合要求
    你这个StartPort不是CString的嘛,怎么这么玩?还有你的问题是啥呀?
      

  2.   


    CString  在传入工作线程之前已经转换为int型(在OnScanBtn()函数的前几行)。
    问题就是:工作者线程UINT ThreadProc(LPVOID pParam)函数有问题!请指教下!
      

  3.   

    int StartPort = ptp->sPort;
    int EndPort = ptp->ePort;
    HWND hWnd = ptp->hWnd;
    请问,你的ptp->hWnd是多少?你根本没给hWnd赋值啊!还有,你在线程中PostMessage(hWnd, WM_USER_THREAD_FINISHED, (WPARAM)Port, 0),由于PostMessage的滞后性,你发送的port值有可能不是同步的!
      

  4.   


    我重新修改了下,还是有问题,我把东西上传了。
    请帮忙修改下,谢谢了!
    http://download.csdn.net/download/xdelete/4496111
      

  5.   

    我重新修改了下,还是有问题,我把东西上传了。http://download.csdn.net/download/xdelete/4496111
      

  6.   

    什么问题也不说,就让别人给你改啊!是不是 int Currentlist = m_ListCtrl.InsertItem(0xffff, _T(" "));这句有问题?
      

  7.   


    我下午找了本看了下,但是介绍得太少。我又改动了下:for (UINT i = 0; i <= nThreadNum; i++)//nThreadNum 为最大线程数,默认200
    {
    AfxBeginThread((AFX_THREADPROC)ThreadProc, (LPVOID)ptp);//线程开始
    }将for 迭代注释后,并将结构体型ptp转换成LPVOID型传入线程即可运行起来,并得到正确结果! 
    但是我想控制线程的数量,该怎么办?
    我最开始想法的用这个for 迭代控制线程数量。
    请指教!