写了一个工具,向USB设备写东西,窗口上有一个进度条,显示写入进度。。
我在win 2000下测试完全正常,但是在XP下测试是,当向USB写文件时,点击这个工具的窗口空白处是,回出现假死现象,而且进度条也不动了,可是如果我把窗口的标题栏去掉后,就正常了,但是这样就不能拖动窗口了,请问这是怎么回事,要增样解决???

解决方案 »

  1.   

    把处理usb写入的丢到新线程里去吧不要放界面线程里
    另外,也可以去掉标题栏,如果不影响效果的话。没有标题栏的窗体也可以拖动,处理WM_NCHITTEST消息:UINT CMyDialog::OnNcHitTest(CPoint pt)
    {
      CRect rc;
      GetClientRect(&rc);
      ClientToScreen(&rc);
      return rc.PtInRect(pt) ? HTCAPTION : CDialog::OnNcHitTest(pt);
    }
      

  2.   

    我是在按下一个按钮后,才开始向USB写文件的,如何才能在按下按钮后创建新的线程去向USB写文件呢。。
      

  3.   

    看msdn的AfxBeginThread吧
    有例子的
      

  4.   

    CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, 
                                LPVOID pParam,
                                int nPriority = THREAD_PRIORITY_NORMAL,
                                UINT nStackSize = 0,
                                DWORD dwCreateFlags = 0,
                                LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);UINT Proc1(LPVOID param)//按第一个参数要求格式创建一个函数。 
    {  
        int i;  
        for(i=0;i<1000;i++)//因为i=1000,所以本程序将死循环。  
        {   
            ::MessageBeep(0);  
        }  
        return 0; 
    } void COiDUsbDlg::OnCC() 
    {
        HWND hWnd=GetSafeHwnd();//取得当前窗口的句柄供函数使用。  
        AfxBeginThread(Proc1,hWnd,0);//以正常优先级调用。 
    // TODO: Add your control notification handler code here
    }
    这样对吗,
    CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, 
                                LPVOID pParam,
                                int nPriority = THREAD_PRIORITY_NORMAL,
                                UINT nStackSize = 0,
                                DWORD dwCreateFlags = 0,
                                LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
    应该放在哪啊??
      

  5.   

    这是我从网上找到的,我的腰肢行的代码是不是放在
    UINT Proc1(LPVOID param)//按第一个参数要求格式创建一个函数。 
    {  
    }
    就可以了,如果不对,请帮忙指正。。