BuildFilePath 及打开文件对话框

本文介绍了SOUI项目中用于文件操作的辅助类,包括递归创建子目录的函数BuildFilePath及扩展文件对话框类CFileDialogEx。这些工具简化了Windows平台上的文件管理任务。

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

也许以后就主要在这里发SOUI的介绍了。

贴一段文件相关的helper, 测试一下贴代码是不是方便。

 1 /**
 2 * Copyright (C) 2014-2050 
 3 * All rights reserved.
 4 * 
 5 * @file       FileHelper.h
 6 * @brief      
 7 * @version    v1.0      
 8 * @author     SOUI group   
 9 * @date       2014/08/03
10 * 
11 * Describe    实现两个文件相关的helper
12 */
13 
14 #pragma once
15 
16 
17 /**
18 * BuildFilePath
19 * @brief    递归创建子目录
20 * @param    LPCTSTR pszCurPath --  创建路径的起始位置
21 * @param    LPCTSTR pszNewPath --  新路径
22 * @param    BOOL bPath --  pszNewPath是一个路径标识
23 * @return   BOOL -- true创建成功
24 * Describe  pszNewPath指向一个文件名时,只创建文件路径部分
25 */    
26 inline BOOL BuildFilePath(LPCTSTR pszCurPath,LPCTSTR pszNewPath,BOOL bPath=TRUE)
27 {
28     TCHAR szCurDir[MAX_PATH+1];
29     GetCurrentDirectory(MAX_PATH,szCurDir);
30     if(!SetCurrentDirectory(pszCurPath)) return FALSE;
31     TCHAR szNewPath[MAX_PATH+1];
32     _tcscpy_s(szNewPath,_countof(szNewPath),pszNewPath);
33     if(bPath)
34     {
35         int nLen=_tcslen(szNewPath);
36         if(szNewPath[nLen-1]!=_T('\\'))
37             _tcscat(szNewPath,_T("\\"));
38     }
39     LPTSTR pszPath=_tcschr(szNewPath,_T('\\'));
40     while(pszPath)
41     {
42         *pszPath=0;
43         if(!CreateDirectory(szNewPath,NULL)) return FALSE;
44         *pszPath=_T('\\');
45         pszPath=_tcschr(pszPath+1,_T('\\'));
46     }
47     SetCurrentDirectory(szCurDir);
48     return TRUE;
49 }
50 
51 class CFileDialogEx
52 {
53 public:
54 
55     OPENFILENAME m_ofn;
56     BOOL m_bOpenFileDialog;            // TRUE for file open, FALSE for file save
57     TCHAR m_szFileTitle[_MAX_FNAME];   // contains file title after return
58     TCHAR m_szFileName[_MAX_PATH];     // contains full path name after return
59 
60     CFileDialogEx(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
61         LPCTSTR lpszDefExt = NULL,
62         LPCTSTR lpszFileName = NULL,
63         DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
64         LPCTSTR lpszFilter = NULL,
65         HWND hWndParent = NULL)
66     {
67         memset(&m_ofn, 0, sizeof(m_ofn)); // initialize structure to 0/NULL
68         m_szFileName[0] = _T('\0');
69         m_szFileTitle[0] = _T('\0');
70 
71         m_bOpenFileDialog = bOpenFileDialog;
72         m_ofn.lStructSize = sizeof(m_ofn);
73         m_ofn.lpstrFile = m_szFileName;
74         m_ofn.nMaxFile = _MAX_PATH;
75         m_ofn.lpstrDefExt = lpszDefExt;
76         m_ofn.lpstrFileTitle = (LPTSTR)m_szFileTitle;
77         m_ofn.nMaxFileTitle = _MAX_FNAME;
78         m_ofn.Flags = dwFlags | OFN_EXPLORER | OFN_ENABLEHOOK | OFN_ENABLESIZING;
79         m_ofn.lpstrFilter = lpszFilter;
80         m_ofn.hwndOwner = hWndParent;
81 
82         // setup initial file name
83         if(lpszFileName != NULL)
84             _tcscpy_s(m_szFileName, _countof(m_szFileName), lpszFileName);
85     }
86 
87     INT_PTR DoModal(HWND hWndParent = ::GetActiveWindow())
88     {
89         if(m_ofn.hwndOwner == NULL)   // set only if not specified before
90             m_ofn.hwndOwner = hWndParent;
91 
92         if(m_bOpenFileDialog)
93             return ::GetOpenFileName(&m_ofn);
94         else
95             return ::GetSaveFileName(&m_ofn);
96     }
97 };

看上去还不错。

转载于:https://www.cnblogs.com/setoutsoft/p/3888127.html

内容概要:本文深入解析了扣子COZE AI编程及其详细应用代码案例,旨在帮助读者理解新一代低门槛智能体开发范式。文章从五个维度展开:关键概念、核心技巧、典型应用场景、详细代码案例分析以及未来发展趋势。首先介绍了扣子COZE的核心概念,如Bot、Workflow、Plugin、Memory和Knowledge。接着分享了意图识别、函数调用链、动态Prompt、渐进式发布及监控可观测等核心技巧。然后列举了企业内部智能客服、电商导购助手、教育领域AI助教和金融行业合规质检等应用场景。最后,通过构建“会议纪要智能助手”的详细代码案例,展示了从需求描述、技术方案、Workflow节点拆解到调试与上线的全过程,并展望了多智能体协作、本地私有部署、Agent2Agent协议、边缘计算插件和实时RAG等未来发展方向。; 适合人群:对AI编程感兴趣的开发者,尤其是希望快速落地AI产品的技术人员。; 使用场景及目标:①学习如何使用扣子COZE构建生产级智能体;②掌握智能体实例、自动化流程、扩展能力和知识库的使用方法;③通过实际案例理解如何实现会议纪要智能助手的功能,包括触发器设置、下载节点、LLM节点Prompt设计、Code节点处理和邮件节点配置。; 阅读建议:本文不仅提供了理论知识,还包含了详细的代码案例,建议读者结合实际业务需求进行实践,逐步掌握扣子COZE的各项功能,并关注其未来的发展趋势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值