难道必须自己在一个TreeViewCtrl里面画么?

解决方案 »

  1.   

    靠! 我要改学VB了。可是我这个是一个服务器的程序,用VB可能不太好。
      

  2.   

    inline int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
    {
    _TCHAR szDir[_MAX_PATH]; switch(uMsg)
    {
    case BFFM_INITIALIZED: // 初始化
    break; case BFFM_SELCHANGED: // 路径改变
    if( SHGetPathFromIDList( (LPITEMIDLIST)lParam, szDir ) )
    SendMessage( hwnd, BFFM_SETSTATUSTEXT, 0, 
                               (LPARAM)szDir );
    break;

    default:
    break;
    }

    return 0;
    }void COptionCaptureDlg::OnSelPath() 
    {
    _TCHAR pszDisplayName[MAX_PATH];
    BROWSEINFO bi;
    LPITEMIDLIST lpID; // 设置参数
    bi.hwndOwner = GetSafeHwnd();        // Handle to the owner window
    bi.pidlRoot = NULL; // Location of root folder
    bi.pszDisplayName = pszDisplayName; // Folder name selected
    bi.lpszTitle = _T("选择路径"); // Title name
    bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT; // Option flags
    bi.lpfn = BrowseCallbackProc; // Callback function
    bi.lParam = 0; // LPARAM
    bi.iImage = NULL; // Image selected lpID = SHBrowseForFolder( &bi );
    if( lpID != NULL )
    {
    if( SHGetPathFromIDList( lpID, pszDisplayName ) )
    {
    m_strClipPath = pszDisplayName;
    if( m_strClipPath[m_strClipPath.GetLength() - 1] 
                                                  != '\\' )
    m_strClipPath += _T('\\'); UpdateData( FALSE ); // 更新显示
    }
    }
    }
      

  3.   

    m_strClipPath 即为获取的路径名