博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BuildFilePath 及打开文件对话框
阅读量:6610 次
发布时间:2019-06-24

本文共 3185 字,大约阅读时间需要 10 分钟。

也许以后就主要在这里发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/0310 * 11 * Describe    实现两个文件相关的helper12 */13 14 #pragma once15 16 17 /**18 * BuildFilePath19 * @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 CFileDialogEx52 {53 public:54 55     OPENFILENAME m_ofn;56     BOOL m_bOpenFileDialog;            // TRUE for file open, FALSE for file save57     TCHAR m_szFileTitle[_MAX_FNAME];   // contains file title after return58     TCHAR m_szFileName[_MAX_PATH];     // contains full path name after return59 60     CFileDialogEx(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs61         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/NULL68         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 name83         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 before90             m_ofn.hwndOwner = hWndParent;91 92         if(m_bOpenFileDialog)93             return ::GetOpenFileName(&m_ofn);94         else95             return ::GetSaveFileName(&m_ofn);96     }97 };

看上去还不错。

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

你可能感兴趣的文章
HDU-3787(字符串模拟)
查看>>
十四、oracle 数据库管理--管理表空间和数据文件
查看>>
[JLOI2011]飞行路线
查看>>
599. Minimum Index Sum of Two Lists(easy)
查看>>
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
查看>>
CBMC regrow can not do for one unit molecule
查看>>
[LeetCode] Convert Sorted List to Binary Search Tree, Solution
查看>>
element-UI动态的循环生成Popover弹出框的方法
查看>>
idea 配置Spring MVC
查看>>
Android ActionBar Home按钮返回事件处理的两种方式
查看>>
Socket编程
查看>>
非root用户使用命令增加
查看>>
UVA 1152 4 Values whose Sum is 0
查看>>
《Linux就该这么学》 - 必读的红帽系统与红帽linux认证自学手册
查看>>
SNS网站的用户流失率怎么会高得如此惊人?
查看>>
敏捷个人应用:开发环境搭建
查看>>
Android应用程序组件Content Provider的共享数据更新通知机制分析(3)
查看>>
敏友的【敏捷个人】有感(11): 敏捷个人线下活动有感
查看>>
演示:为思科25/26系列的路由器升级IOS镜像
查看>>
2014年5月软考用书推荐&3年真题精解与闯关密卷创新点
查看>>