自定义 Win32 的保存文件对话框

2023-12-14

我正在尝试使用保存文件GetSaveFileName并希望在我的保存文件对话框的底部有几个额外的弹出窗口,以允许用户指定更多选项。我正在尝试遵循MSDN 文档(具体来说资源管理器式定制)关于这个主题,但似乎无法让我的自定义项目出现。我相信我设置了OPENFILENAME当我接到电话时,结构正确OFNHookProc。据我所知,是在WM_INITDIALOG我应该创建子控件的消息,这就是我正在做的事情:

HWND settings_popup =
    ::CreateWindowExW(WS_EX_CLIENTEDGE | WS_EX_NOPARENTNOTIFY,
                      L"COMBOBOX",
                      L"Settings:",
                      WS_CHILD | WS_CLIPSIBLINGS | WS_VSCROLL | WS_BORDER | CBS_DROPDOWNLIST,
                      10,
                      10,
                      150,
                      30,
                      dialog, // the window parameter from the OFNHookProc
                      NULL,
                      ::GetModuleHandle(NULL),
                      NULL);

if (settings_popup)
{
    HWND parent = ::GetParent(settings_popup); // for verification
    ::ShowWindow(settings_popup, SW_SHOW);
    ::EnableWindow(settings_popup, true);
}

我也从我的返回 1OFNHookProc为了WM_INITDIALOG消息和 0 为其他一切。

在我所有让组合框显示在对话框中的尝试中,它都没有出现。为了使组合框成为我的保存文件对话框自定义的一部分,我的代码中缺少什么?


当调用 CreateWindowEx() 创建子窗口时,需要使用 GetParent() 获取对话框的父窗口,然后使用该 HWND 作为父窗口。不要使用对话框本身作为父对话框。换句话说:

HWND settings_popup =
    ::CreateWindowExW(WS_EX_CLIENTEDGE | WS_EX_NOPARENTNOTIFY,
                      L"COMBOBOX",
                      L"Settings:",
                      WS_CHILD | WS_CLIPSIBLINGS | WS_VSCROLL | WS_BORDER | CBS_DROPDOWNLIST,
                      10,
                      10,
                      150,
                      30,
                      ::GetParent(dialog),
                      NULL,
                      ::GetModuleHandle(NULL),
                      NULL);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义 Win32 的保存文件对话框 的相关文章

随机推荐

  • 阻止 Adob​​e Edge preload.js 文件加载 jquery

    首先我必须说 我不是一个专业的程序员 而是一个从实践中学习的设计师 因此 如果可能的话 恐怕我需要简单的解释 我在特定脚本的帮助下使用 Edge animate 作为网站的一部分 由 Andrew Trice 编写 请参见此处 http w
  • AngularJS:重用具有不同父级的组件

    假设我有 A 和 B 可重用组件 我希望 B 调用 A 上的方法 当然只有当 B 是 A 的子级时 此外 我希望 B 用作独立组件 没有 A 作为父级 在这种情况下 不应调用不存在的 A 中的方法 我的第一次尝试是在链接功能中获取控制器 与
  • Flask-Admin针对不同角色的不同表单和column_list

    跟进这个问题Flask Admin Role Based Access 根据角色修改访问权限我不明白如何实现基于角色的视图 特别是关于表单和列列表 说我想要MyModelView如果用户是普通用户或超级用户 则显示不同的列 覆盖is acc
  • Spring security AntMatcher 不工作

    这是我配置 spring security 的方式 在控制器中我获得 ROLE ANONYMOUS 作为权限 看起来安全性并没有拦截请求并检查 JWT 如何配置antmatcher Configuration EnableResourceS
  • 如何添加、编辑和删除数据库的逗号分隔值。?

    我创建了一个名为角色的表 字段类似于 角色ID 角色 禁止进程 禁止端口 这里角色ID是唯一的 我有一个逗号分隔的 prohibitedprocess 字段值 例如 prohibitedprocess gt skype teamviwer
  • Foundation 中的 Google 地图 API 显示模式无法正确显示 [重复]

    这个问题在这里已经有答案了 可能的重复 Reveal Modal 内的 Google Map API 未完全显示 我有一个位于 Reveal Modal 中的 Google Map API 对于那些不知道那是什么的人来说 它基本上是一个隐藏
  • spring-boot 基本 JSP 404 未找到

    无法使用 spring boot 加载非常简单的 JSP 页面 出现 404 Not Found src main java SampleWebJspApplication java Configuration EnableAutoConf
  • 在类中实现 Spinner 类型对象作为子进程

    我是一个完全的初学者 今天才开始上课 我试图制作一种 旋转器 对象 我可以称之为这样的东西 我感到困惑的一件事是是否使用 线程 线程 或 过程 我刚刚在某处读到 一个线程实例的成本为 8meg 因为这是一个简单的文本旋转器 它不保证使用大量
  • 使用 C 的 Beaglebone 黑色 PWM

    我用 C 语言为 beaglebone black 编写了一个示例 pwm 函数 每当我在其他模块或 main 中进行函数调用时 我都会遇到分段错误 请帮助我在哪里犯了错误以及如何处理这个问题 下面是代码 int trigger pwm o
  • 在渲染视图之前测量视图

    我需要找出将视图附加到其父视图后会有多大 我已经重写了这个方法 onMeasure int int 但看起来只有当我实际使用以下方法将自定义视图添加到其容器时才会调用此方法 addView myView 您认为有没有办法在渲染视图本身之前获
  • 编译OpenSSL时.rodata和-fPIC是什么意思?

    我正在尝试编译 openssl 但遇到错误 使用的 CFLAGS 是 O2 fPIC fno strict overflow 有人可以向我解释一下是什么吗 rodata下面这句话是什么意思 usr bin ld libcrypto a wp
  • 查找最近的观察结果 - R

    我有两组 已排序的 POSIXct 时间序列 如下所示 set seed 123 ll sort strptime 16 07 2015 format d m Y 10 3600 1 3600 round rnorm 3600 digits
  • 使用 OwnerDrawText 模式定位和突出显示 TreeView 节点文本

    我的问题 我正在尝试创建一个TreeView这会将与搜索词匹配的节点文本部分加粗 我的代码被采用于这个问题 我有相同 类似的问题 有或没有ImageList使用过 但我会在这里发布未使用的版本 当我渲染文本时 我得到类似这样的结果 其中文本
  • php合并json数组

    array 1 PlayerID 17794204 userName Vandiel castleCount 9 NotUpd 1476253231000 PlayerID 21532584 userName Mayland castleC
  • ASP.NET MVC 中的 jQuery AJAX 响应

    甚至不确定这是否是标题问题的正确方式 我知道我的 AJAX 调用都是错误的 这就是我现在正在做的事情 顺便说一句 我正在使用 ASP NET MVC 后端 I use jQuery ajax将一些数据发布到操作 该操作将加载我在响应中捕获的
  • 我可以使用 Box::from_raw 从 Vec::into_boxed_slice 释放内存吗?

    I saw以下代码用于将字节数组返回给 C repr C struct Buffer data mut u8 len usize extern C fn generate data gt Buffer let mut buf vec 0 5
  • 如何用Delphi 5创建Telnet客户端

    如何在 Delphi 5 应用程序中创建 Telnet 客户端 ICSFrancois Piette 的 Internet Component Suite 有一些有用的组件 http www overbyte be eng products
  • MySQL 查询返回重复行

    我有一张桌子mytable像下面这样 product tag lot 1111 101 2 1111 102 5 2222 103 6 3333 104 2 4444 101 2 5555 101 2 5555 102 5 6666 102
  • XPath 中的逻辑或?为什么不是|在职的?

    我有一个 XSLT 模板 它对所有级别的主题进行计数 用于在我拥有的 DITA 项目中用编号来标记这些主题
  • 自定义 Win32 的保存文件对话框

    我正在尝试使用保存文件GetSaveFileName并希望在我的保存文件对话框的底部有几个额外的弹出窗口 以允许用户指定更多选项 我正在尝试遵循MSDN 文档 具体来说资源管理器式定制 关于这个主题 但似乎无法让我的自定义项目出现 我相信我