gpt4 book ai didi

windows - 使用 GetSaveFileName。我指定了 OFN_EXPLORER 标志,但总是得到旧的对话框外观,除非我避免同时使用 Hook 和模板

转载 作者:可可西里 更新时间:2023-11-01 10:40:54 24 4
gpt4 key购买 nike

使用 GetSaveFileName。我指定了 OFN_EXPLORER 标志,但我总是得到旧的对话框外观,除非我避免同时使用 Hook 和模板。 (OPENFILENAME 结构中的 lpfnHook 和 lpfnTemplate(以及它们各自的“启用”标志))

如果我避免只使用一个或另一个,我仍然会得到旧的对话框外观。我也没有尝试使用模板,但使用了钩子(Hook)......但总是从它返回 TRUE(我看到提到从钩子(Hook)中“总是返回 false”作为获取旧接口(interface)的一种方式)。不过,它似乎没有任何效果。

编辑:添加相关代码:

ofn.lStructSize=sizeof(OPENFILENAME);
ofn.hInstance=RhInst;
ofn.hwndOwner=MainWh;
ofn.lpstrFilter=s;
ofn.lpstrCustomFilter=null;
ofn.nMaxCustFilter=0;
ofn.nFilterIndex=sel;

ofn.lpstrFile=fname;
ofn.nMaxFile=lstrl;
ofn.lpstrFileTitle=tfile;
ofn.nMaxFileTitle=lstrl;

if (path && lstrlen(path)) ofn.lpstrInitialDir=path;
else ofn.lpstrInitialDir=drive;

lstrcpy(SE_DefExt,ext);
ofn.lpstrDefExt=SE_DefExt;
if (titleid) ofn.lpstrTitle=title;
else ofn.lpstrTitle=null;

ofn.lpfnHook=(CommHookProc)MakeProcInstance((FARPROC)SEOpen32Hook,hInst);
ofn.lpTemplateName=NULL;
ofn.Flags=OFN_SHOWHELP | OFN_OVERWRITEPROMPT | OFN_ENABLEHOOK | OFN_EXPLORER
| OFN_PATHMUSTEXIST | OFN_HIDEREADONLY;

if(allowfit)
{
ofn.lpTemplateName = MAKEINTRESOURCE(SAVETOFIT);
ofn.Flags |= OFN_ENABLETEMPLATE;
}

if (GetSaveFileName(&ofn))
{
// <snip>
}

请注意,在这种情况下,“allowfit”是非零/真值。如果我注释掉 OFN_ENABLEHOOK 和 OFN_ENABLETEMPLATE 的标志设置,我将获得"new"对话框外观。

**编辑2:
现在看来我对我所看到的感到困惑。我相信在这两种情况下,我都会得到“新的”OFN_EXPLORER 行为和外观。当我删除 OFN_EXPLORER 标志时,我得到一个非常老式的对话框。

我想要达到的是保存文件对话框的样式,右上角有后退和前进按钮,以及(最重要的)我可以输入的地址框。我以前的所有评论和代码描述(以上)仍然适用;当我删除模板和 Hook 时,我得到了我的“后退和前进”按钮,以及我的可输入地址框(加上左侧浏览树)......当我离开模板和 Hook 时 - 我没有(取而代之的是顶部有“保存在”选项列表,左侧有“标准位置”(“最近的位置”、“桌面”、...)。

最佳答案

您是否定义了 _WIN32_WINNT >= 0x0500?将 lStructSize 设置为 win2000 大小可能有助于对话框决定(如果您需要支持 < NT5,则必须进行一些版本检查并使用 OPENFILENAME_SIZE_VERSION_400 作为下层系统的大小)

关于windows - 使用 GetSaveFileName。我指定了 OFN_EXPLORER 标志,但总是得到旧的对话框外观,除非我避免同时使用 Hook 和模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/603790/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com