2009-01-22 132 views
1

問:GetOpenFileName更改目錄

有誰知道如何改變一個已經運行的打開文件對話框的當前目錄?

詳情:

我有一個自定義打開文件對話框(使用自定義模板添加額外的控件)也已全部確認,現有的檢查和創建測試關閉(通過OPENFILENAME標誌) 。

如果用戶在「文件名」組合框中輸入文件夾名稱並點擊回車鍵,則禁用對話框的內置行爲,使其更改當前顯示的文件夾。

我想再次添加該行爲。我可以通過鉤子程序檢測到這種情況。我隱藏了確定按鈕,關閉了它的加速器,並在控制器上放置了我自己的「選擇」按鈕。這意味着我唯一得到CDN_FILEOK消息的時間是用戶點擊後在文本框中輸入的時間。

但是,我不能弄清楚如何以編程方式告訴對話框更改當前目錄。

我在想,我可以通過向窗口中的SHELLDLL_DefView控件發送某種消息來完成此操作,但是我一直未能找到任何文檔。

回答

0

我能弄清楚工作情況。

事實證明,當驗證關閉時,輸入一個以「\」結尾的目錄名仍然會改變正在顯示的文件夾,但是輸入一個不以「\」結尾的目錄名將會不。

使用間諜++我能看到,進入當打WM_COMMAND消息將會被髮送到公共對話框控件與wParam參數,其喜序位字是BN_CLICKED,其低位字是ID_OK。

如果我繼承通用對話框,我可以攔截消息,更改文件名組合框中的文本,將消息轉發到原始子類過程,然後再更改文本。

這有點破解,但它使我能夠從對話中獲得我想要的行爲。

1

我不確定直接的答案,但是如果您有SPY ++或任何其他消息監聽程序,請嘗試檢查當您更改普通OpenFileName對話框的目錄時所發送的消息。你可能會在那裏發現答案(儘管這是艱難的出路)。

其他人也許可能知道答案,讓我們希望他們這樣做。