OPENFILENAME的问题

北京的雾霾天 2009-12-21 12:20:15
我使用OPENFILENAME及GetOpenFileName打开一个打开文件的对话框,多数情况正常,可是有的时候弹出的对话框没有左边的那几个按钮,就是“我最近的文档、桌面、我的文档、我的电脑、网上邻居”这几个按钮,我的代码如下,各位看看是什么原因:

UINT_PTR CALLBACK OFNHookProc(HWND hdlg,UINT uiMsg,WPARAM wParam,LPARAM lParam)
{
hdlg=GetParent(hdlg);
if (uiMsg==WM_INITDIALOG)
{
RECT rect;
GetWindowRect(hdlg, &rect);
HMONITOR hMonitor=MonitorFromWindow(hdlg, MONITOR_DEFAULTTONEAREST);

MONITORINFOEX info;
info.cbSize=sizeof(info);
if (!GetMonitorInfo(hMonitor, &info))
{
return 0;
}
int x = info.rcWork.left + ((info.rcWork.right-info.rcWork.left)-(rect.right-rect.left)) / 2;
int y = info.rcWork.top + ((info.rcWork.bottom-info.rcWork.top)-(rect.bottom-rect.top)) / 3;
int flag=SWP_NOACTIVATE|SWP_NOZORDER|SWP_NOSIZE;
return SetWindowPos(hdlg, NULL, x, y, 0, 0, flag);
}
return 0;
}

void selectIcon(HWND dlg)
{
OPENFILENAME ofn;
ofn.hInstance=hInst;
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = dlg;
ofn.lpstrFile = szIcoFile;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFilter = _T("Ico文件\0*.ico\0所有文件\0*.*\0\0");
ofn.nFilterIndex = 0;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.lpstrTitle=NULL;
ofn.lpstrCustomFilter=NULL;
ofn.lpstrDefExt=NULL;
ofn.lpTemplateName=NULL;
ofn.pvReserved=NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER | OFN_ENABLEHOOK;
ofn.lpfnHook=OFNHookProc;

if (!GetOpenFileName(&ofn))
{
return;
}
}
...全文
119 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sandyandy 2009-12-21
  • 打赏
  • 举报
回复
OPENFILENAME ofn = {0}
都置0
aa3000 2009-12-21
  • 打赏
  • 举报
回复
什么情况下没有了?

不同机器上会出现这种情况。
sandyandy 2009-12-21
  • 打赏
  • 举报
回复
楼上的都置0 没有

OPENFILENAME ofn = {0};
北京的雾霾天 2009-12-21
  • 打赏
  • 举报
回复
同一个机器上,每次打开可能有,可能没有。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧