从ComboBox项获取完整的目录路径?

时间:2014-01-06 20:21:07

标签: c++ dialog

我目前正在尝试限制“GetOpenFileName()”对话框的目录浏览,并试图弄清楚如何获取ComboBox项的完整路径。具体来说,我如何获得项目的完整路径?

例如,如果我有一个“Images”文件夹,完整路径为“D:/ MyFolder / MyStuff / Images”,我该如何获得整个路径?就目前而言,我只能获取文件夹本身的名称 - 在本例中,我只能提取“图像”,而没有关于文件夹完整路径的信息。

到目前为止,我已经对对话框进行了分类,并且能够拦截发送给它的所有Windows消息。我已经能够通过查找项目的HWND,然后将其传递给GetWindowText()来提取ComboBox中每个项目的文本名称。但是,这只给了我可见的名称,而不是完整的文件路径。

有没有办法检索列出项目的完整文件路径?

//Callback function for OPENFILENAME struct    (the lpfnHook property points to this)
static UINT_PTR CALLBACK checkIfValidDirectory(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
    if( msg == WM_INITDIALOG)
    {
        SetWindowSubclass(GetParent(hDlg), MyCallback, wParam, lParam);
    }
}


LRESULT CALLBACK MyCallback(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData)
{

    switch (msg) 
    {
        case WM_COMMAND:
            char buf[128];
            DWORD controlCode =  HIWORD (wParam);
            int controlIdentifier = (int) LOWORD (wParam);
            HWND childHandle = (HWND) lParam;

            GetWindowText(childHandle , buf, 128);
            MessageBox(NULL, buf, "Alert", MB_YESNO);
            break;  
    }
}

上面的代码会提醒comboBox中给定项目的文本名称,但是如何获取该项目的FULL-PATH?

重要编辑:啊,我应该提一下,我的意思是在实际导航内部对话框的同时获得完整路径!不是在选择文件之后。我选择它后可以得到文件的全名(也就是说,在对话框中点击“打开”),但是我无法在对话框中获得我当前正在查看的目录的完整路径。

0 个答案:

没有答案