扩展windows的打开文件的对话框

本文介绍如何使用Windows API函数GetOpenFileName创建文件对话框。通过设置参数,可以定制对话框的功能,如文件过滤、初始目录等。文中提供了一个示例代码,展示了如何实现这些功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版权声明

请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正。

效果如下图:

调用打开文件对话框只需要调用windows API函数GetOpenFileName就可以了,上面的效果需要设置GetOpenFileName函数的参数LPOPENFILENAME lpofn

lpfnHook 指向一个钩子程序。在Flags成员中必须包含OFN_ENABLEHOOK

如果在Flags成员中OFN_EXPLORER标记没有被设置,lpfnHook指向一个OFNHookProcOldStyle钩子程序,这个程序有意的从对话框接收消息。钩子程序返回FALSE传递一个消息到默认的对话框程序或返回TRUE丢弃消息。

如果OFN_EXPLORER被设置,lpfnHook指向一个OFNHookProc钩子程序。这个钩子程序接收从对话框发出的通知消息。这个钩子程序也接收你通过一个子对话框模板定义的附加控件的消息。钩子程序不有意接收默认对话框的标准控件的消息。

lpTemplateName 指向一个以空字符结束的字符串,字符串是对话框模板资源的名字,资源保存在能被hInstance成员识别的模块中。对于有限的对话框资源,这可以是通过MAKEINTRESOURCE返回的值。除非在Flags成员中设置了OFN_ENABLETEMPLATE标记,要么这个成员被忽略。

如果OFN_EXPLORER标记被设置,系统使用指定的模板去建立一个对话框,是默认Explorer风格对话框的子窗口。如果OFN_EXPLORER标记没有被设置,系统使用模板去建立一个旧风格的对话框来替代默认对话框。

这事MSDN中的解释。

下面的代码实例是通过GetOpenFileName创建一个简单的打开文件对话框。

void TestGetOpenFileName(void) { // OPENFILENAME ofn; // 公共对话框结构。 TCHAR szFile[MAX_PATH]; // 保存获取文件名称的缓冲区。 // 初始化选择文件对话框。 ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = m_hWnd; ofn.lpstrFile = szFile; ofn.lpstrFile[0] = _T('\0'); ofn.nMaxFile = sizeof(szFile); ofn.lpstrFilter = _T("All\0*.*\0Text\0*.TXT\0"); ofn.nFilterIndex = 1; ofn.lpstrFileTitle = NULL; ofn.nMaxFileTitle = 0; ofn.lpstrInitialDir = NULL; ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; ofn.lpTemplateName = MAKEINTRESOURCE(ID_TEMP_DIALOG); // 显示打开选择文件对话框。 if ( GetOpenFileName(&ofn) ) { //显示选择的文件。 OutputDebugString(szFile); OutputDebugString(_T("\r\n")); } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值