【问题标题】:MFC extending CFileDialogMFC 扩展 CFileDialog
【发布时间】:2023-03-07 17:36:01
【问题描述】:


我需要在 MFC 中构建一个控件来显示某些文件的预览。这些文件是 3D 模型,因此我需要使用 OpenGL 来绘制它们并让用户与之交互(平移、缩放等)。

我想扩展 CFileDialog 类,因为再次在文件系统中进行导航会浪费时间,而且结果肯定会不一样。
我设法修改了 CFileDialog 资源,添加了我的子对话框:

SetTemplate( 0, MAKEINTRESOURCE( IDD_MYPREVIEWDLG ) )

但是孩子被附加在底部,而我想在右侧看到我的预览。

这可能吗?

【问题讨论】:

    标签: c++ visual-studio visual-c++ mfc cfiledialog


    【解决方案1】:

    来自MSDN(强调我的):

    为了为新控件腾出空间,系统将默认对话框扩展为自定义对话框的宽度和高度。 默认情况下,自定义对话框中的所有控件都位于默认对话框中控件的下方。但是,您可以通过在自定义对话框模板中包含一个静态文本控件并为其分配 stc32 的控件标识符值来覆盖此默认定位。 (该值在 Dlgs.h 头文件中定义。)在这种情况下,系统使用控件作为参考点来确定新控件的位置。 stc32 控件上方和左侧的所有新控件在默认对话框中控件上方和左侧的位置相同。 stc32 控件下方和右侧的新控件位于默认控件的下方和右侧。通常,每个新控件的位置都应使其相对于默认控件的位置与相对于 stc32 控件的位置相同。为了为这些新控件腾出空间,系统会根据需要在默认对话框的左侧、右侧、底部和顶部添加空间。

    【讨论】:

    • 给我一点时间检查一下。
    • 是的,这就是解决方案,即使安全放置并不容易。
    • 我怀疑其目的是您将stc32 放置为与默认控件相同的 size(而不是默认值),然后布置控件围绕那个。
    猜你喜欢
    • 2015-12-16
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 2013-02-01
    • 2020-07-23
    • 2010-10-17
    • 2011-10-25
    相关资源
    最近更新 更多