cfiledialog对话框大小_XFileDialog-自定义的CFileDialog

cfiledialog对话框大小_XFileDialog-自定义的CFileDialogXFileDialog 自定义的 CFileDialog 简介被首次引入新的共同文件对话框时 我立刻喜欢他们期待的方式 但我也注意到 驱动器和目录下拉列表显得有点尴尬 特别是如果你想翻转两个不同的驱动器的目录 当我们从我们的客户开始听到同样的事情 我知道我们应尽量使其更容易选择一个文件夹 实现注意事项我最初的想法是 确定 这篇文章解释 将控件添加到 CFileDialog 的对话框 你要做的就是创建

XFileDialog-自定义的CFileDialog

简介

被首次引入新的共同文件对话框时,我立刻喜欢他们期待的方式。但我也注意到,驱动器和目录下拉列表显得有点尴尬,特别是如果你想翻转两个不同的驱动器的目录。当我们从我们的客户开始听到同样的事情,我知道我们应尽量使其更容易选择一个文件夹。实现注意事项

我最初的想法是,”确定”,。这篇文章解释,将控件添加到CFileDialog的对话框,你要做的就是创建一个只包含你要添加的控件的对话框模板。 IDD_XFILEDIALOG定义为:IDD_XFILEDIALOG DIALOG DISCARDABLE 0,0,360,20风格DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS字体8″的MS Sans Serifquot;动工 LTEXT”文件夹:”,IDC_MRU_CAPTION,13,3,51,8,

; SS_CENTERIMAGE |不WS_GROUP &

#160; COMBOBOX IDC_MRU_COMBO,85,1,260,102,CBS_DROPDOWN |

0; CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP完

注意:此对话框的风格 – 他们是必要的适当的整合与CFileDialog的的。对话框中定义一旦你有了这个,你可以添加在您的派生类构造函数的CFileDialog:SetTemplate(0,_T(“IDD_XFILEDIALOGquot;));

我设置对话框模板和rc文件根据指引我在我的文章描述。

有一次,我对话框模板,然后,我开始解开如何整合与CFileDialog的秘密。正如我以前说过,这是比CFontDialog完全不同。而与CFontDialog所有控制是一个定制CFileDialog的一个对话框,你有两个层次的对话:新IDD_XFILEDIALOG实际上是一种原始的CFileDialog的孩子。这是暗示在MSDN文章,但我没有完全明白这是什么意思,直到我看到它使用我最喜爱的工具之一,

{S0}

正如你在截图中所看到的,IDD_XFILEDIALOG突出显示在窗口的树,它是”打开”对话框的孩子。这意味着在实施CXFileDialog方面,您可以访问IDD_XFILEDIALOG就像你在任何其他对话框上的所有控制 – 使用GetDlgItem()或使用DDX_Control。但是,CFileDialog的所有控制都是同级IDD_XFILEDIALOG – 访问这些网站,你必须使用GetParent()- GT; GetDlgItem(XXX)。一旦我理解这部分代码,其余的是很容易实现 – ,其中大部分是很容易。仍然有一些事情,位我。

到更多细节之前,让我告诉你我试图做什么。我想添加历史组合框,最近使用的文件夹,这样每次用户点击打开当前文件夹将被添加到历史记录列表。每CXFileDialog开幕时,历史列表中的项目将恢复到组合框(如果他们仍然是有效的目录)。我决定使用保罗维克里的优良照顾我,让检查的有效性的文件夹的修改,加载和保存文件夹项目。这里是XFileDialog看起来像什么:

cfiledialog对话框大小_XFileDialog-自定义的CFileDialog

当然也有平常的细节照顾 – 在OnSize()处理程序,如定位和上浆IDD_XFILEDIALOG控制。但是,当我测试CXFileDialog与前WIN2K布局,我发现,”文件名”控件的ID竟然出现了两种不同的价值观 – 之一(1152)时,它像一个编辑框(前WIN2K),另一个值(1148 )当它像一个组合框(WIN2K及以后)。此外,文件名控制,也影响了注册表设置,可用于启用/禁用的文件名的控制MRU属性。我怎么算出这个吗?同样,我用:

{S2}

接下来的事情,我测试是只读复选框。当然,当我启用了它,复选框自身定位我最近的文件夹控制上的正确,因为我已经忘了在OnSize()复选框。

最后,我测试前WIN2K布局。有没有足够的空间,静态标签”最近的文件夹”前WIN2K布局,我感动了所有组合框的权利。这里是新的预WIN2K布局:

{S3}CXFileDialog特点

这里是新CXFileDialog的特点:最近的文件夹MRU组合框 – 最近使用的文件夹列表添加一个组合框。从列表中选择一个文件夹,将改变的文件,显示该文件夹。

SetTitle() – 提供了一个方便的方式来设置对话框的标题。SetOsVersion() – 允许您选择旧式和资源管理器样式对话框。GetPath() – 获取选定的文件的路径。如何使用

融入你的应用程序CXFileDialog,你首先需要添加下列文件到您的项目:XFileDialog.cppXFileDialog.hXFileDialog.rcXFileDialogRes.hXHistoryCombo.cppXHistoryCombo.h

,您还需要添加XFileDialog.rc项目rc文件 – 去查看|资源包括… …在底部的列表框,向下滚动到最后。插入#包括”; XFileDialog.rcquot;右#ENDIF之前:

接下来,包括在适当的项目文件中的头文件XFileDialog.h。现在,你准备好开始使用CXFileDialog。演示程序

XFileDialogTest.exe演示展示了如何使用CXFileDialog:

{五}致谢在代码中。感谢保罗维克里。得益于出色的工具。

修订历史版本1.1 – 2003年6月25日修正了一些重点的错误;增加了检查目录是否存在。版本1.0 – 2003年6月24日首次公开发行。使用

本软件发布到公共领域。你在任何你喜欢的方式自由地使用它。如果您对其进行修改或扩展,请考虑张贴新的代码,在这里,供大家分享。这个软件是按”现况”提供,没有明示或暗示保证。我接受业务,该软件可能导致的任何损害或损失不承担任何责任。|汉斯迪特里希

回答

×评论会员:游客 时间:2011/11/29定制CFileDialg非常有用的解释

Kyudos:​​|喜汉斯,

,我一直在阅读试图解决一个具体的问题的大文章,但我觉得我什至不知道到底是什么问题… …

我有一个应用程序MFC VC6和我试图让”新风格”的文件对话框左侧的快捷按钮..例如,最近的文档/桌面/我的电脑/网络。我认为这将只是一个设置一个标志的情况下… …但我不能弄明白…

如果我呼吁:

OPENFILENAME ofn;

char szFileName[MAX_PATH] = “”;

ZeroMemory(&ofn, sizeof(ofn));

ofn.lStructSize = sizeof(ofn); //SEE NOTE BELOWofn.hwndOwner = this->GetSafeHwnd();

ofn.lpstrFilter = “Text Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0”;

ofn.lpstrFile = szFileName;

ofn.nMaxFile = MAX_PATH;

ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;

ofn.lpstrDefExt = “txt”;

if (GetOpenFileName(&ofn))

{

}

我得到的捷径对话框。但如果我使用CFileDialog的:

{C}

我不明白的捷径。

我可能会尝试,我不能似乎找到一个简单的答案为什么是这种情况。

你似乎有一个更好地把握这个东西 – 的呢?任何指针

干杯

×评论会员:汉斯迪特里希 时间:2011/11/29我认为这将有助于您阅读作者简介Paul DiLascia的文章,我参考上面,这是我根据我的文章!

最美好的祝愿,

汉斯

[

cfiledialog对话框大小_XFileDialog-自定义的CFileDialog])

×评论会员:matt2000 时间:2011/11/29 1。最感兴趣的视图类型(详细)

2。排序顺序

3。对话框的大小

我已经到位的挂钩工作,只需要恢复其最后的状态。

它甚至有可能吗?

我一直在四处寻找,还没有找到一个解决方案。

最后,有一个库,将劫持的FileOpen对话框,并允许恢复?

感谢

×评论会员:vijayashree 时间:2011/11/29我有一个计算的结果(数据)和数据必须保存对话框CFileDialog的使用保存。如何做到这一点。我能够创建的文件和数据存储。但格式是不是我想要的。

iwanted数据要像

ABC的价值\ tabspace昂价值\换行

我给我的代码的下方。

浮动ABC;

INT昂;

– GT; UpdateData();

CString的STR;

CFile的F;

strFilter的char [] = {“Excel文件(*. TXT)| *. TXT |所有文件(*.*)|*.*||”}

CFileDialog的FileDlg(FALSE,NULL,0,strFilter”TXT”); 的CFileDialog::GetPathName; (FileDlg.DoModal()== IDOK)

{

f.Open(FileDlg.GetFileName()的CFile::modeCreate | CFile的:modeWrite);

CArchive的AR(放大器,F,CArchive的:存储);

(ANG = 0; anglt = 180; ANG)

{

ABC = 2昂

str.Format(“%F \ T%D”,ABC,ANG)

AR LT,LT; STR

} ar.Close()

f.Close()

}

ELSE

返回;

×评论会员:内维尔弗兰克斯 时间:2011/11/29 XFileDialog在Vista失败时使用VS2008。这是因为默认情况下,最新的MFC代码使用新的Vista(总管)风格的文件|打开的对话​​框,这是不符合SetTemplate(),将提出一个”企图不支持的操作”异常。

要继续使用旧的风格文件|打开的对话​​框和XFileDialog你需要设置新的CFileDialog(..,bVistaStyle)参数设置为FALSE。

相反,如果你要使用新的Vista风格的对话框中看到迈克尔邓恩的文章Vista的超值服务,在C:使用新的Vista文件对话框”{A}]

内维尔弗兰克斯,Surfulater

cfiledialog对话框大小_XFileDialog-自定义的CFileDialog

作者

×评论会员:汉斯迪特里希 时间:2011/11/29,本场比赛!

最美好的祝愿,

汉斯

cfiledialog对话框大小_XFileDialog-自定义的CFileDialog

×评论会员:dpackage 时间:2011/11/29我动态添加控件,所以我不使用模板

我也不能重写DoModal以同样的方式。我只是调用的CFileDialog:从我重写内部DoModal

现在,当我运行,没有扩展CFileDialog的事件后,对话框的初始负载的火,包括OnSize我真正需要的。

我是否需要手动执行DoModal的方式你吗?

修改,2009年2月10日,日(星期二)上午11时58分

×评论会员:爱芬 时间:2011/11/29这真的似乎是一个不错的东西。然而,当我下载,我已经做了一些工作,得到它的下编译的Visual Studio 2005亲。

它转换项目。然后尝试编译时,我得到:

1> C:\项目\ cxfiledialog \ xhistorycombo.cpp(260):错误C2065:’N’:未声明的标识符

这对我是有点古怪。这条线说:

(N = n最大,N CVTRES:致命错误CVT1100:重复的资源类型:MANIFEST,名称:1,语言:0X0409

1>链接:致命错误LNK1123:转换到COFF期间失败:文件无效或损坏的

这可以通过关闭增量链接的固定。

不知道是否有更好的解决方案。

在一个稍微相关的主题:

没有人知道一些示例代码,让我做多文件选择显示选定#文件时,显示一个计数器?

感谢,弗兰斯。

还有一件事:

当试图在我的项目我没有编辑的资源包括任何。

(如果我没有,我会得到重复的链接错误)。

另外,还要确保当您使用您正确地调用SetOsVersion

在创建您的对话。没有,我没有得到一个对话框。在XP中,我将值设置为1。不知道它确实应该

最后,当我在我自己的项目中包括的文件,我没有得到明显的错误,即使这样做增量链接

– 13:58周日第七年1月,2007年

修改

×评论会员:。nompel 时间:2011/11/29垃圾邮件删除

×评论会员:内维尔弗兰克斯 时间:2011/11/29目前处于起始目录可以被任意数量的directrories

如果OPENFILENAME.lpstrInitialDir是NULL的初始目录会有所不同的Windows版本而定,当前目录中是否有匹配指定的过滤器等,见

cfiledialog对话框大小_XFileDialog-自定义的CFileDialog lpstrInitialDir文件详情]文件。

在W2K和XP的初始目录,可以设置到由Windows保留上次使用的应用程序对话框时的值。

这可以被所有用户相当混乱和不匹配的MRU组合设置。

我已经更新了汉族的代码,并补充说:CXFileDialog:SetInitialDir()。这让您可以指定一个初始目录或使用目录选择对话框是最后一次。我已经更新CHistoryCombo代码以及添加CHistoryCombo:GetHistoryMRU()

您可以下载我的更新:

cfiledialog对话框大小_XFileDialog-自定义的CFileDialog

内维尔弗兰克斯,Surfulater

cfiledialog对话框大小_XFileDialog-自定义的CFileDialog

作者

×评论会员:BaliDawg 时间:2011/11/29这杀了我几个小时的时间,所以我张贴相关文章。返回值的CFileDialog::OnFileNameOK()向后:真=保持对话框打开,FALSE,=关闭(见MSDN库)。如果覆盖的CFileDialog:OnFileNameOK()来验证你的控制,做类似以下内容:

布尔CMySaveDialog:OnFileNameOK()

{

/ /使用的DDX来验证我们的控制。

BOOL bDDXResult = UpdateData(TRUE);

/ /调用基类并关闭对话框的DDX成功。 (bDDXResult == TRUE)

{

60; CFileDialog的:OnFileNameOK()

;返回FALSE;

}

/ /否则,保持对话框打开。

返回TRUE;}

曾经有一个固定本身的错误,?我讨厌那些!

×评论会员:桐子 时间:2011/11/29喜

它不完全有关XFileDialog,但我想我可能会得到一些相关信息。我有我自己的类,这是从CFileDialog派生。它底部的一个额外的检查中,除了文件名编辑框和文件类型组合框。我在OnInitDialog中创建检查”按钮,并给它一个ID。我也有这方面的检查按钮的点击功能。不幸的是,它得到完全忽略。

我有一个消息映射上按一下功能。我得到的数据交换。我有另一个对话框,类似的事情,一个工程。我比我的作品,看不出有任何区别的一个新的尝试。我已经错过了?任何帮助greately赞赏。

cfiledialog对话框大小_XFileDialog-自定义的CFileDialog

×评论会员:matt2000 时间:2011/11/29我在我们的应用程序中使用这个类,它的伟大的工作。几个客户要求能够保存/恢复列的宽度,视图,对话框的大小。目前,它复位。

任何想法?

马特

:

×评论会员:游客 时间:2011/11/291|zhou_wz。SetTemplate只能在同一进程中的EXE。当我谨XFileDialogDLL模块,我觉得SetTemplate不能正常工作。我该如何解决呢?2。我怎样才能赶上IDOK点击,我觉得我不能抓住这个消息,连我自己重写的OnOK…

matt2000

×评论会员:游客 时间:2011/11/29汉斯,展望保存附件”对话框使您能够做出新的左侧文件夹按钮。此链接显示我讲:imgsrc=我有2个问题:1。可以自定义的左侧按钮被添加到一个对话框2。工具栏按钮可以添加以及谢谢你-伟大的工作。马特-15时50分星期三第15届年2月,2006年修改

汉斯迪特里希

×评论会员:游客 时间:2011/11/29喜马特,关于地方栏(“左侧文件夹按钮”),它可以添加自定义按钮。这个MSDN文章解释了如何:http://msdn.microsoft.com/msdnmag/issues/03/03/CuttingEdge/我没有检查,但根据文章,有一个最大的5个按钮(总)允许。因此,它可能无法帮助您。我没有看过,添加自定义工具栏按钮。我没有任何计划,现在添加这些功能。最美好的祝愿,汉斯

拉尔夫

×评论会员:游客 时间:2011/11/29喂汉斯,首先感谢很多为您的大文章!这有助于我真的很多自定义我的打开文件对话框。我显示额外的信息,根据选定的文件,这是工作的罚款,当用户选择在列表控件中的新文件。但现在的问题:我怎样才能收到一条消息或通知,当用户选择一个新的文件名,通过最近的”文件名”组合框{BR​​}我试着钩程序和PreTranslateMesg,但没有成功!可能是你有一个想法。非常感谢拉尔夫

taphan

×评论会员:游客 时间:2011/11/29喜汉斯迪特里希,我很抱歉地问一个问题不属于此主题。我想子类的CFileDialog,抓住重点,当控件获得焦点。但我真的不知道如何实现你能帮助我吗?,抟

gabriel927

×评论会员:游客 时间:2011/11/29覆盖该文件的数据追加到现有的数据文件,而不是有没有办法呢?

gabriel927

×评论会员:游客 时间:2011/11/29有没有办法通过一个文件对话框覆盖目前现有的文件,而不是追加到它呢?

露西

×评论会员:游客 时间:2011/11/29只是一个意见,有关m_nIdFileNameCombo,你可以使用包括访问控制IDedt1,而不是硬编码的1148或1152。

Mihir戈尔

×评论会员:游客 时间:2011/11/29我能够在一个对话框中嵌入自己的对话框。但我怎么在我的对话框中嵌入文件对话框?

CoderPond

×评论会员:游客 时间:2011/11/29我花了相当长的时间试图做到这一点(嵌入在另一个打开/保存对话框)我和得出的结论,它不能很容易做到,如果在所有。文件对话框是不能这样做。我发现它可能与CPrintDialog,但在这篇文章中提到的打开/保存对话框是不同的。你可以找到一个有用的文章:如何自定义的CPrintDialoghttp://www.developer.com/net/cplus/article.php你可以找到一个有用的文章:如何嵌入对话框http://www.codeproject.com/dia​​log/stackdialog.asp”我的印象是,这将是更容易实现自己的文件对话框和嵌入,用同样的方式,您目前嵌入对话框。我希望这样可以节省其他人从waisting自己的时间,但我会感兴趣地听到,如果任何人有过这种成功。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227110.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午9:55
下一篇 2026年3月16日 下午9:55


相关推荐

  • 内存屏障 – MemoryBarrier[通俗易懂]

    内存屏障 – MemoryBarrier[通俗易懂]处理器的乱序和并发执行目前的高级处理器,为了提高内部逻辑元件的利用率以提高运行速度,通常会采用多指令发射、乱序执行等各种措施。现在普遍使用的一些超标量处理器通常能够在一个指令周期内并发执行多条指令。处理器从L1I-Cache预取了一批指令后,就会分析找出那些互相没有关联可以并发执行的指令,然后送到几个独立的执行单元进行并发执行。比如下面这样的代码(假定编译器不做优化):  z

    2022年7月12日
    22
  • Win10下loadrunner11激活成功教程安装与运行

    Win10下loadrunner11激活成功教程安装与运行一.安装1.      下载loadrunner11进行安装。打开安装安装程序进入如图界面(可能会出现提示,不受信任。出现这个情况尝试用此方法解决下“win+r”打开运行,输入gpedit.msc进入组策略,依次选择“计算机配置”、“windows设置”、“安全设置”、“本地策略”、“安全选项”,在右侧下拉选择“用户账户控制:以管理员批准模式运行所有管理员”,双击它,选择“已禁用”,重启即可关闭…

    2022年7月22日
    93
  • The server does not support version 3.0 of the J2EE Web module specification

    The server does not support version 3.0 of the J2EE Web module specification

    2021年8月11日
    61
  • LAMP配置相关

    LAMP配置相关为Ubuntu搭建LAMP(Apache+PHP+MYSQL)开发环境    由于LAMP大部分操作与/var/www目录相关,为了方便,修改该目录的权限为普通用户可访问     # chmod  777 /var/www配置phpMyAdmin http://blog.csdn.net/doupei2006/article/details/8005061

    2022年5月5日
    53
  • leetcode-41缺失的第一个正数

    leetcode-41缺失的第一个正数原题链接给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。进阶:你可以实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案吗?示例 1:输入:nums = [1,2,0]输出:3示例 2:输入:nums = [3,4,-1,1]输出:2示例 3:输入:nums = [7,8,9,11,12]输出:1 提示:0 <= nums.length <= 300-231 <= nums[i] <= 231 – 1题解

    2022年8月8日
    17
  • springboot 整合 clickhouse

    springboot 整合 clickhousespringboot 整合 clickhouse

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号