多谢

解决方案 »

  1.   

    CString str = (LPTSTR)lParam
      

  2.   

    这是一个消息参数类型,因为它不知道你要传送那种类型,所以定义成lpvoid类型。
    要将它转换为CString类型。首先你要确认发送过来的是CString类型数据,然后接收:
    CString str = *(CString*)lParam;
      

  3.   

    不行吧,转成CString* 还可以的
      

  4.   

    看你lParam 是如何传进来的
      

  5.   

    if(!DownLoadFiles(&str_Filename))
    ......
    BOOL CFtpListDialog::DownLoadFiles(LPVOID lParam)
    {
    CString temp_ftp_name = (LPTSTR)lParam;
    AfxMessageBox(temp_ftp_name);
    ........
    显示为乱码
      

  6.   

    lParam好象只能传递一个字符~~~~~~
      

  7.   

    CString str = *(CString*)lParam;
      

  8.   

    不行啊,非法错误
    void CFtpListDialog::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    // TODO: Add your control notification handler code here
    int i;
    CString str_Filename;
    if (( i =m_SerListFile.GetSelectedCount()) == 0)
    return;
    POSITION iPos = m_SerListFile.GetFirstSelectedItemPosition();
    for (int j = 0 ;j< i; j++)
    {
    int nItem=m_SerListFile.GetNextSelectedItem(iPos);
    str_Filename = m_SerListFile.GetItemText(nItem,0);         AfxMessageBox(str_Filename);
    }

    //CWinThread * dl_thread = AfxBeginThread(::DownLoadFunction, this);
    if(!DownLoadFiles(str_Filename))
    AfxMessageBox("建立文件发送线程出错");
    *pResult = 0;
    }BOOL CFtpListDialog::DownLoadFiles(CString sz_filename)
    {
    //CString *temp_ftp_name = (CString *)lParam;
    //AfxMessageBox(*temp_ftp_name);
    if (m_pReceiveFileThread)
    {
    ::WaitForSingleObject(m_pReceiveFileThread->m_hThread,100);
    //AfxMessageBox("Thread end");
        delete m_pReceiveFileThread;
    m_pReceiveFileThread=NULL;
    }
    if (m_pReceiveFileThread = AfxBeginThread(::DownLoadFunction,  sz_filename,THREAD_PRIORITY_ABOVE_NORMAL,
    0,CREATE_SUSPENDED,NULL))
    {
    m_pReceiveFileThread->m_bAutoDelete=FALSE;
    m_pReceiveFileThread->ResumeThread();
    //AfxMessageBox("Thread start");
    return TRUE;
    }
    else
    return FALSE;}UINT DownLoadFunction(LPVOID lParam)
    {
    CString temp_ftp_name = *(CString*)lParam;
    AfxMessageBox(temp_ftp_name);
    /*CInternetSession Cis;
    CFtpConnection* m_Ftp_Conn;
    try {
    m_Ftp_Conn = Cis.GetFtpConnection(szFtpName,szFtpUser,szFtpPassword);
    m_Ftp_Conn->SetCurrentDirectory(sz_Path);
    CInternetFile*  ifp = m_Ftp_Conn->OpenFile(temp_ftp_name);
    }
    catch (CInternetException* pEx)
    {

    }*/
    return 0;
    }
      

  9.   

    如果lParam是个字符串地址,消息不是WM_SETTEXT,WM_GETTEXT而发送消息方又不在同一地址空间的话,.....,阿门!
    传递全局内存的句柄吧.
      

  10.   

    兄弟。我是新手。不过你用MSDN查找一下CString 的用法。或者查找关键字为String这样或许你能找到些有用的东西!!
      

  11.   

    AfxBeginThread(::DownLoadFunction,  (LPCTSTR)sz_filename,THREAD_PRIORITY_ABOVE_NORMAL,
    0,CREATE_SUSPENDED,NULL))UINT DownLoadFunction(LPVOID lParam)
    {
    CString temp_ftp_name = (LPCTSTR)lParam;
      

  12.   

    你传给DownLoadFunction(LPVOID lParam)根本就不是CString指针啊。
    AfxBeginThread(::DownLoadFunction, this);--->你的DownLoadFunction函数的传递的内容是那个啊???》》
      

  13.   

    改成AfxBeginThread(::DownLoadFunction,  (LPCTSTR)sz_filename,THREAD_PRIORITY_ABOVE_NORMAL,
    0,CREATE_SUSPENDED,NULL))
    不行,编译报错
      

  14.   

    AfxBeginThread(::DownLoadFunction,  &sz_filename,THREAD_PRIORITY_ABOVE_NORMAL,
    0,CREATE_SUSPENDED,NULL))
    要不就
    AfxBeginThread(::DownLoadFunction,  (lparam)(&sz_filename),THREAD_PRIORITY_ABOVE_NORMAL,
    0,CREATE_SUSPENDED,NULL))
      

  15.   

    cannot convert from 'class CString' to 'void *'
      

  16.   

    void CFtpListDialog::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    // TODO: Add your control notification handler code here
    int i;
    CString str_Filename;
    if (( i =m_SerListFile.GetSelectedCount()) == 0)
    return;
    POSITION iPos = m_SerListFile.GetFirstSelectedItemPosition();
    for (int j = 0 ;j< i; j++)
    {
    int nItem=m_SerListFile.GetNextSelectedItem(iPos);
    str_Filename = m_SerListFile.GetItemText(nItem,0);         AfxMessageBox(str_Filename);
    }

    //CWinThread * dl_thread = AfxBeginThread(::DownLoadFunction, this);
    if(!DownLoadFiles(str_Filename))
    AfxMessageBox("建立文件发送线程出错");
    *pResult = 0;
    }BOOL CFtpListDialog::DownLoadFiles(CString sz_filename)
    {
    //CString *temp_ftp_name = (CString *)lParam;
    AfxMessageBox(sz_filename);
    if (m_pReceiveFileThread)
    {
    ::WaitForSingleObject(m_pReceiveFileThread->m_hThread,100);
    //AfxMessageBox("Thread end");
        delete m_pReceiveFileThread;
    m_pReceiveFileThread=NULL;
    }
    //if (m_pReceiveFileThread = AfxBeginThread(::DownLoadFunction,(LPCTSTR)sz_filename,THREAD_PRIORITY_ABOVE_NORMAL,
    //0,CREATE_SUSPENDED,NULL))
    if (AfxBeginThread(::DownLoadFunction, (LPVOID)(&sz_filename), THREAD_PRIORITY_ABOVE_NORMAL,
    0,CREATE_SUSPENDED,NULL))
    {
    m_pReceiveFileThread->m_bAutoDelete=FALSE;
    m_pReceiveFileThread->ResumeThread();
    //AfxMessageBox("Thread start");
    return TRUE;
    }
    else
    return FALSE;}UINT DownLoadFunction(LPVOID lParam)
    {

    CString temp_ftp_name = (LPCTSTR)lParam; AfxMessageBox(temp_ftp_name); return 0;
    }