我现在有一个CFolderDialog类,采用的是我的CDocManagerEx类为处理文件的行动如下:

alt文本http://img268.yfrog.com/img268/9271/filedialog.png

我不知道如果我需要表现出的方法执行这类(我发现这个从一个项目,发布 在这里,),但这类定义,如果它有助于:

class CFolderDialog  
{
    friend static int CALLBACK BrowseDirectoryCallback(
        HWND hWnd, UINT uMsg, LPARAM lParam, LPARAM lpData);

public:
    CFolderDialog(  LPCTSTR lpszFolderName = NULL, 
        DWORD dwFlags = NULL/*BIF_RETURNONLYFSDIRS*/, 
        CWnd* pParentWnd = NULL);
    virtual ~CFolderDialog();
    virtual int DoModal();
    CString GetPathName() const;

protected:
    virtual void OnInitDialog();
    virtual void OnSelChanged(ITEMIDLIST* pIdl);
    virtual void CallbackFunction(HWND hWnd, UINT uMsg, LPARAM lParam);

    void EnableOK(BOOL bEnable = TRUE);
    void SetSelection(LPCTSTR pszSelection);
    void SetSelection(ITEMIDLIST* pIdl);
    void SetStatusText(LPCTSTR pszStatusText);
    CString ShortName(const CString& strName);

public:
    BROWSEINFO m_bi;

protected:
    CString m_strInitialFolderName;
    CString m_strFinalFolderName;

    TCHAR m_szDisplayName[MAX_PATH];
    TCHAR m_szPath[MAX_PATH];

    HWND m_hDialogBox;
};

class CMyFolderDialog : public CFolderDialog  
{
public:
    CMyFolderDialog(LPCTSTR lpszFolderName = NULL, 
        DWORD dwFlags = NULL, 
        CWnd* pParentWnd = NULL,
        LPCTSTR pszFileFilter = NULL);
    virtual ~CMyFolderDialog();
protected:
    virtual void OnSelChanged(ITEMIDLIST* pIdl);

protected:
    CString m_strFileFilter;
};

我的目标的这个问题添加一个编辑控制的窗口,只是下面的工作空间的目录来选择。什么会是最简单的方法来完成这个吗?

有帮助吗?

解决方案

如果你只是想要一个编辑控制,允许用户类型中的名称一个目录中的条目,这是可能的。C++类您使用的是一个包装圆Win32SHBrowseForFolder()方法,该方法支持具有一个编辑框通过设置BIF_EDITBOX(或者更好,BIF_USENEWUI)在ulFlags员BROWSEINFO结构。

看C++类,看来最简单的方式来实现这一将是通过BIF_USENEWUI为dwFlags件中所构造的呼吁。(虽然我会被诱惑到刚才叫SHBrowseForFolder直接和不用C++类。)

不注意的警告,这标志在MSDN,但:OleInitialize()或用coinitialize()必须被称之为前提的对话与这个标志。

更一般地说,如果你想要一个编辑控制,你可以用你自己的目的,允许用户输入的任何东西,这就是更多的一个问题:有没有办法延长对话中使用通过SHBrowseForFolder()定制的控制。如果你要这么做,你会最终具有重新实现整个对话,这不是一个好主意。

此外,作为一个最后要注意,如果你可以限制自己Vista(外)然后,还有另一个办法有一个目录,选择对话:使用新的IFileDialog COM接口,与FOS_PICKFOLDERS标志。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top