BuildFilePath 及打开文件对话框
也许以后就主要在这里发SOUI的介绍了。
贴一段文件相关的helper, 测试一下贴代码是不是方便。
/**
* Copyright (C) 2014-2050
* All rights reserved.
*
* @file FileHelper.h
* @brief
* @version v1.0
* @author SOUI group
* @date 2014/08/03
*
* Describe 实现两个文件相关的helper
*/ #pragma once /**
* BuildFilePath
* @brief 递归创建子目录
* @param LPCTSTR pszCurPath -- 创建路径的起始位置
* @param LPCTSTR pszNewPath -- 新路径
* @param BOOL bPath -- pszNewPath是一个路径标识
* @return BOOL -- true创建成功
* Describe pszNewPath指向一个文件名时,只创建文件路径部分
*/
inline BOOL BuildFilePath(LPCTSTR pszCurPath,LPCTSTR pszNewPath,BOOL bPath=TRUE)
{
TCHAR szCurDir[MAX_PATH+];
GetCurrentDirectory(MAX_PATH,szCurDir);
if(!SetCurrentDirectory(pszCurPath)) return FALSE;
TCHAR szNewPath[MAX_PATH+];
_tcscpy_s(szNewPath,_countof(szNewPath),pszNewPath);
if(bPath)
{
int nLen=_tcslen(szNewPath);
if(szNewPath[nLen-]!=_T('\\'))
_tcscat(szNewPath,_T("\\"));
}
LPTSTR pszPath=_tcschr(szNewPath,_T('\\'));
while(pszPath)
{
*pszPath=;
if(!CreateDirectory(szNewPath,NULL)) return FALSE;
*pszPath=_T('\\');
pszPath=_tcschr(pszPath+,_T('\\'));
}
SetCurrentDirectory(szCurDir);
return TRUE;
} class CFileDialogEx
{
public: OPENFILENAME m_ofn;
BOOL m_bOpenFileDialog; // TRUE for file open, FALSE for file save
TCHAR m_szFileTitle[_MAX_FNAME]; // contains file title after return
TCHAR m_szFileName[_MAX_PATH]; // contains full path name after return CFileDialogEx(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
HWND hWndParent = NULL)
{
memset(&m_ofn, , sizeof(m_ofn)); // initialize structure to 0/NULL
m_szFileName[] = _T('\0');
m_szFileTitle[] = _T('\0'); m_bOpenFileDialog = bOpenFileDialog;
m_ofn.lStructSize = sizeof(m_ofn);
m_ofn.lpstrFile = m_szFileName;
m_ofn.nMaxFile = _MAX_PATH;
m_ofn.lpstrDefExt = lpszDefExt;
m_ofn.lpstrFileTitle = (LPTSTR)m_szFileTitle;
m_ofn.nMaxFileTitle = _MAX_FNAME;
m_ofn.Flags = dwFlags | OFN_EXPLORER | OFN_ENABLEHOOK | OFN_ENABLESIZING;
m_ofn.lpstrFilter = lpszFilter;
m_ofn.hwndOwner = hWndParent; // setup initial file name
if(lpszFileName != NULL)
_tcscpy_s(m_szFileName, _countof(m_szFileName), lpszFileName);
} INT_PTR DoModal(HWND hWndParent = ::GetActiveWindow())
{
if(m_ofn.hwndOwner == NULL) // set only if not specified before
m_ofn.hwndOwner = hWndParent; if(m_bOpenFileDialog)
return ::GetOpenFileName(&m_ofn);
else
return ::GetSaveFileName(&m_ofn);
}
};
看上去还不错。
BuildFilePath 及打开文件对话框的更多相关文章
- java中文件保存、打开文件对话框
package com.soft.test; //AWT: FileDialog类 + FilenameFilter类 可以实现本功能 //Swing: JFileChooser类 + FileFil ...
- QT 打开文件对话框汇总
Qstring fileName = QFileDialog::getOpenFileName(this, tr("open file"), " ", tr( ...
- C# OpenFileDialog打开文件对话框(详解)
一.打开文件对话框(OpenFileDialog) 1. OpenFileDialog控件的基本属性 InitialDirectory:对话框的初始目录 Filter: 获取或设置当前文件名筛选器字符 ...
- [javaSE] GUI(打开文件对话框)
使用FileDialog可以打开文件对话框,根据模式不同,可以分为打开文件和保存文件对话框 获取FileDialog对象,new出来,参数:所属Frame对象,String的标题,FileDialog ...
- Qt打开文件对话框
项目中需要打开文件对话框,就查了一下,不得不说Qt的帮助文档做的真好,非常详细.要实现这个功能有两种方式,使用QFileDialog的静态方法,实例化QFileDialog对象. 基本算是照抄帮助文档 ...
- WebBrowser自动填充打开文件对话框
WebBrowser自动填充打开文件对话框 在使用WebBrowser编写自动表单填写软件的时候,不知道大家是否遇到国填写文件选择表单的情况.遇到这种情况的时候,无法直接队Html元素赋值,必须模 ...
- win10 只要打开文件对话框就卡死解决方法
我电脑的问题是:win10系统,只要打开 文件对话框就卡死,假死,cpu100% 一直没有解决,但是只要把缩略图关了,就ok. 但是又想要留着缩略图,还是得显示,于是乎一直在找解决办法. 此方法好像可 ...
- MFC程序打开文件对话框出错的问题解决
前几天从网上下了个图像分析的mfc小程序,是VC6的 用VC6在本地编译生成都没问题.执行起来弹出一个未处理的错误,程序崩溃退出. 想起来原来遇到过打开文件对话框方面的问题,当时项目时间紧张未能深究. ...
- 打开文件对话框在xp和win7上的实现文件任意多选
作者:朱金灿 来源:http://blog.csdn.net/clever101 在xp系统上进行文件多选,实际上其文件字符串数组的缓冲区是有限,并不能支持选择任意多个文件,为此以前我还写过一篇文章: ...
随机推荐
- zaqar项目介绍
Zaqar is a multi-tenant cloud messaging and notification service for web and mobile developers. It c ...
- 五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程
在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入Android浪潮的朋友们,为了确保大家能顺利完成开发环境的搭 ...
- 常见概率组合题目总结quickstart
[本文链接] http://www.cnblogs.com/hellogiser/p/interview-questions-quickstart-for-combination-permutatio ...
- VS2010工程文件减肥
由于VS2010中新增加了sdf和ipch文件等浏览数据库来支持智能浏览感知编辑.显示类视图等,使得随便一个小工程就上百兆,很占用空间也不方便工程项目的打包备份.为了不使用数据库以减小VS2010中的 ...
- ffmpeg-20160526-git-bin
ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...
- ItemsSource绑定后ScrollViewer不复位
ItemsSource绑定后ScrollViewer不复位 ItemsSource绑定后ScrollViewer不复位,有的时候我们需要这一效果,但大多数情况下我们是想让它复位的. 在WPF中也有这个 ...
- iOS9 UI Tests探索笔记
UI Tests是什么? UI Tests是一个自动测试UI与交互的Testing组件 UI Tests有什么用? 它可以通过编写代码.或者是记录开发者的操作过程并代码化,来实现自动点击某个按钮.视图 ...
- LeetCode 171 Excel Sheet Column Number
Problem: Given a column title as appear in an Excel sheet, return its corresponding column number. F ...
- ios 上下拉刷新
UITableView:下拉刷新和上拉加载更多 - cDigger 时间 2013-11-24 02:00:00 博客园精华区 原文 http://www.cnblogs.com/lexingyu ...
- Stanford大学机器学习公开课(三):局部加权回归、最小二乘的概率解释、逻辑回归、感知器算法
(一)局部加权回归 通常情况下的线性拟合不能很好地预测所有的值,因为它容易导致欠拟合(under fitting).如下图的左图.而多项式拟合能拟合所有数据,但是在预测新样本的时候又会变得很糟糕,因为 ...