WIN32一些文件及窗口操作
0,获取指定的系统路径:
#include <shlobj.h>
#pragma comment(lib, "shell32.lib")
TCHAR szPath[MAX_PATH];
::SHGetSpecialFolderPath(NULL, szPath, CSIDL_PERSONAL, FALSE);
1,打开文件或选中文件:
BOOL OpenDownFile(const TCHAR* pFilePath, BOOL bOpenCatalogue)
{
std::wstring wstrPath;
if (bOpenCatalogue)
{
wstrPath.append(L"/n,/select,");
//打开文件所在目录,选中指定文件
}
wstrPath.append(pFilePath);//没有/n,/select,参数的话是直接打开指定文件或目录
ShellExecute(NULL, L"open", L"Explorer.exe", wstrPath.c_str(), NULL, SW_SHOWDEFAULT);
return TRUE;
}
2,文件另存为:
BOOL SaveFileAs(const
HWND hWnd, const
TCHAR* pDefaultFileName)
{
std::wstring
FileSavePath;
std::wstring
fileNameAll;
std::wstring
wstrPostfix;
fileNameAll = pDefaultFileName;
size_t
ipoint = fileNameAll.rfind(L".");
if(ipoint == fileNameAll.npos)//无后缀名
{
wstrPostfix.clear();
}
else
{
wstrPostfix = fileNameAll.substr(ipoint+1);
}
TCHAR
filename[MAX_PATH] = {0};
TCHAR
pstrFilter[MAX_PATH] = {0};
wsprintf(pstrFilter,L"%s Files(*.%s)|*.%s|All Files(*.*)|*.*||",wstrPostfix.c_str(),wstrPostfix.c_str(),wstrPostfix.c_str());
OPENFILENAME
ofn;
ZeroMemory(&ofn, sizeof(ofn));
wcscpy_s(filename,_countof(filename),fileNameAll.c_str());
ofn.lpstrFile = filename;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFilter = L"*.*";
ofn.lpstrDefExt = wstrPostfix.c_str();
ofn.lpstrTitle = L"另存为";
ofn.Flags = OFN_HIDEREADONLY | OFN_PATHMUSTEXIST;
ofn.FlagsEx = OFN_EX_NOPLACESBAR;
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hWnd;
ofn.hInstance = NULL;
if (::GetSaveFileName(&ofn))
{
FileSavePath = filename;
}
else
{
return
FALSE;
}
return
TRUE;
}
3,选择文件
#include
<commdlg.h>
BOOL
SelectFile(std::wstring& strSelectFile )
{
OPENFILENAME
opfn;
TCHAR
strFilename[MAX_PATH];
ZeroMemory(&opfn, sizeof(OPENFILENAME));
opfn.lStructSize = sizeof(OPENFILENAME);
opfn.lpstrFilter = L"pdf Files(*.pdf)\0 *.pdf\0";//设置过滤
opfn.nFilterIndex = 1;
opfn.lpstrFile = strFilename;
opfn.lpstrFile[0] = '\0';
opfn.nMaxFile = sizeof(strFilename);
opfn.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST;
if (::GetOpenFileName(&opfn))
{
strSelectFile = strFilename;
}
return
TRUE;
}
4,文件拖拽
DragAcceptFiles(hWnd, TRUE);
case
WM_DROPFILES:
{
HDROP
hDrop = (HDROP)wParam;
TCHAR
szFileName[MAX_PATH];
int
count = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0);
if(count)
{
for(int
i=0; i<count;i++)
{
int
pathLen = DragQueryFile(hDrop, i, szFileName,MAX_PATH);
//Do(szFileName);
}
}
}
break;
5,透明窗口
SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(m_hwnd, GWL_EXSTYLE) ^ 0x80000);
HINSTANCE
hInst = LoadLibrary(L"User32.DLL");
if (hInst)
{
typedef
BOOL(WINAPI *MYFUNC)(HWND, COLORREF, BYTE, DWORD);
MYFUNC
fun = NULL;
fun = (MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
if (fun)
fun(hWnd, 0, 255 / 2, LWA_ALPHA); //半透明
FreeLibrary(hInst);
}
WIN32一些文件及窗口操作的更多相关文章
- C# System.IO和对文件的读写操作
System.IO命名空间中常用的非抽象类 BinaryReader 从二进制流中读取原始数据 BinaryWriter 从二进制格式中写入原始数据 BufferedStream 字节流的临时存储 ...
- C#对文件/目录的操作:Path、File、Directory、FileStream、StreamReader、StreamWriter等类的浅析
以下类的命名空间都是:System.I/0; 一.Path:主要对文件路径的操作! 常用方法: String path=@"C:\a\b\c\123.txt"; 1-1.Path. ...
- C++学习48 对ASCII文件的读写操作
如果文件的每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件(或称字符文件).程序可以从ASCII文件中读入若干个字符,也可以向它输出一些字符. 对ASCI ...
- python-web自动化-文件上传操作(非input标签的上传,需要借助第三方工具)
文件上传操作 一.文件上传分两种情况:1. 如果是input可以直接输入路径的,可以直接调send_keys输入路径 2. 非input标签的上传,需要借助第三方工具: 2.1 Autolt 需 ...
- win32程序之子窗口编程
win32程序之子窗口编程 一丶简介.什么是子窗口 在前边我们已经讲解了窗口的本质.以及如何注册窗口类跟创建窗口. 还讲了消息循环. 那么有很多窗口其实Windows已经帮我们创建出来了.我们直接使用 ...
- 使用cmd命令行窗口操作SqlServer
本文主要介绍使用windows下的使用cmd命令行窗口操作Sqlserver, 首先我们可以运行 osql ?/ ,这样就把所有可以通过CMD命令行操作sqlserver的命令显示出来 (有图有 ...
- 项目总结03:window.open()方法用于子窗口数据回调至父窗口,即子窗口操作父窗口
window.open()方法用于子窗口数据回调至父窗口,即子窗口操作父窗口 项目中经常遇到一个业务逻辑:在A窗口中打开B窗口,在B窗口中操作完以后关闭B窗口,同时自动刷新A窗口(或局部更新A窗口)( ...
- vim 窗口操作:多tab|窗口拆分
转 我是一个vimer,还在用着这个上古时代的编辑器,但我并不是守旧派,因为即使是 现在,vim也在不断的创新.我用vim也有一两年的光景了,但是我还是不敢我自己 精通vim,当然我使用vim基本是两 ...
- WPF文件和文件夹的操作
1.对文件的操作 private void button_chose_Click(object sender, RoutedEventArgs e) { var openFileDialog = ne ...
随机推荐
- JS来推断文本框内容改变事件
oninput,onpropertychange,onchange的使用方法 onchange触发事件必须满足两个条件: a)当前对象属性改变,而且是由键盘或鼠标事件激发的(脚本触发无效) b) ...
- [原创,分享]DbHelper 续
一直在想怎么样才能让dbHelper更简单,更灵活,更僵化.终于我发布了第一个开源版本的dbhelper.此helper将使用System.Data.DbHelper作为命名空间.采用内部驱动与内容S ...
- auto_ptr解析
auto_ptr是当前C++标准库中提供的一种智能指针,或许相对于boost库提供的一系列眼花缭乱的智能指针, 或许相对于Loki中那个无所不包的智能指针,这个不怎么智能的智能指针难免会黯然失色.诚然 ...
- Spring 的微内核与FactoryBean扩展机制--转载
作者:江南白衣 原文地址: http://www.blogjava.net/calvin/archive/2005/08/30/11099.html http://www.blogjava.net/c ...
- Fedora下载地址
http://fedoraproject.org/zh_CN/get-fedora-all
- Miaomiao's Geometry
HDU 4932 Bestcoder Problem Description There are N point on X-axis . Miaomiao would like to cover t ...
- Balanced Lineup(最简单的线段树题目)
Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 33389 Accepted: 15665 Case Time Limit ...
- SQL中空值与NULL区别
很多人都有过这样的问题吧 在SQL中填充空值与NULL有什么区别 现在我以一个实例给大家分享一下自己的想法 恳请大家给予批评也指正 谢谢 创建一个监时表 CREATE TABLE #temp ( ...
- C语言宏定义相关
写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等.下面列举一些成熟软件中常用得宏定义......1,防止一个头文件被重复包含#ifndef COMDEF_H# ...
- Guava: 事件总线EventBus
EventBus 直译过来就是事件总线,它使用发布订阅模式支持组件之间的通信,不需要显式地注册回调,比观察者模式更灵活,可用于替换Java中传统的事件监听模式,EventBus的作用就是解耦,它不是通 ...