您的位置:首页 > 其它

点击按钮打开选择文件对话框

2014-07-23 11:13 399 查看
1.创建回调函数
int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
switch (uMsg)
{
case BFFM_INITIALIZED: //初始化消息
::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData);//传递默认打开路径
break;
case BFFM_SELCHANGED: //选择路径变化,
{
char curr[MAX_PATH];
SHGetPathFromIDList((LPCITEMIDLIST)lParam, curr);
::SendMessage(hwnd, BFFM_SETSTATUSTEXT, 0, (LPARAM)curr);
}
break;
default:
break;
}
return 0;

}
2.按钮处理函数

TCHAR szDefaultDir[MAX_PATH];
CString strDef(_T("C://WINDOWS//"));
memcpy(szDefaultDir, strDef.GetBuffer(strDef.GetLength()), strDef.GetLength());
strDef.ReleaseBuffer();
TCHAR szPath[MAX_PATH];
BROWSEINFO br;
ITEMIDLIST* pItem;
br.hwndOwner = this->GetSafeHwnd();
br.pidlRoot = 0;
br.pszDisplayName = 0;
br.lpszTitle = "选择路径";
br.ulFlags = BIF_STATUSTEXT | BIF_USENEWUI;
br.lpfn = BrowseCallbackProc; //设置CALLBACK函数
br.iImage = 0;
br.lParam = long(&szDefaultDir); //设置默认路径
pItem = SHBrowseForFolder(&br);
if (pItem != NULL)
{
if (SHGetPathFromIDList(pItem, szPath) == TRUE)
{
CString strDir = szPath;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: