-
Notifications
You must be signed in to change notification settings - Fork 151
/
ReadMe.txt
192 lines (108 loc) · 3.68 KB
/
ReadMe.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
CPPHelper 是一个C++基础辅助类库,目的在于更加高效、安全的进行开发。
使用方法:
1:将CPPHelper复制到工程目录
比如D:\Visual Studio 2015\Projects\MySln\CPPHelper (MySln是我需要编译的工程)
2:在 VC++目录 -- 包含路径 添加 $(SolutionDir)CPPHelper\
3:在 VC++目录 -- 库目录 添加 $(SolutionDir)CPPHelper\$(PlatformShortName)\
4:在stdafx.h 中添加 #include <BaseFunction.h>
5:在stdafx.cpp 中添加 #include <BaseFunction.cpp>
至此,基础类库已经可以正常使用,另外其他Thread等类,请自行在使用时 include
温馨提示:编译器必须支持C++ 0X,并且编码需要设置宽字符!!!!!!
目前该类库有以下几个功能:
///////////////////////////////////////////////rapidxml//////////////////////////////////////////////////////
这是我修改后的一个rapidxml库,所有规范与原版的rapidxml一样,但是此版本完整支持UTF8以及UTF16。并且在执行print时提供了更佳性能。
rapidxml::XMLDocument Document;
//从一个文件路径打开xml,自动进行编码判断
XMLCreateXMLDocumentByFile(L"D:\test.xml",&Document);
//从二进制数据打开XML,自动进行编码判断
XMLCreateXMLDocumentByData(pBinary,cbBinary,&Document);
//从字符串打开XML
XMLCreateXMLDocumentByString(L"<Root></Root>",&Document)
//打开Root/Files节点
auto pFiles= XMLOpenNote(&Document,L"Root/Files");
<Root>
<Files/>
</Root>
……
///////////////////////////////////////////MsIsoReader////////////////////////////////////////////////////////
这是一个微软的一个ISO读取库,原本它是C#版,我将其移植到了C++上,一般用用过的去。Dism++的直接释放ISO功能也是此库支持
////////////////////////////////////////////Thread类////////////////////////////////////////////////////////
Thread:
异步类,用于执行异步任务。
头文件:Thread.h
使用方法:
Thread([]()
{
/*你需要异步执行的命令,Thread类自动会完成句柄释放。
这里是一个Lambda表达式,你可以参考Lambda表达式的使用。
*/
});
Task:
异步函数,用于执行异步任务,但是其线程创建于线程池,减少程序创建销毁线程的开销。
头文件:Thread.h
使用方法:
Task([]()
{
/*你需要异步执行的命令。
这里是一个Lambda表达式,你可以参考Lambda表达式的使用。
*/
});
ThreadPool:
制定线程池,用于执行大批量任务,合适计算密集型并行计算。
头文件:Thread.h
使用方法:
ThreadPool WorkPool;
//最大十个线程并发,默认值500(微软规定的)
WorkPool.SetThreadMaximum(10);
int Datas[100];
WorkPool.For(Data,100,[](int& Data)
{
//10线程并发输出Datas中的内容
wprinf(L"%d\r\n",Data);
});
////////////////////////////////////////////hanlde智能句柄////////////////////////////////////////////////
hanlde:
智能句柄,用于自动关闭各种句柄。
头文件:handle.h
使用方法:
CHKEY - 注册表智能句柄
//自动初始化为NULL
CHKEY Test;
RegOpenKey(HKEY_LOCAL_MACHINE,L"SOFTWARE",&Test);
//你无需特意关闭Test,Test在析构时自动关闭HKEY
CHFile - 文件智能句柄
//自动初始化为INVALID_HANDLE_VALUE
CHFile Test;
Test=CreateFile(……);
//你无需特意关闭Test,Test在析构时自动关闭HANDLE
等等……
/////////////////////////////////////////////////资源守卫///////////////////////////////////////////////
头文件:Guard.h
int Test()
{
auto pData=new int;
//RunOnExit中的代码在退出时执行
RunOnExit([pData]()
{
//Test函数结束时,将自动执行此代码
delete pData;
});
//RunOnCrash中的会在程序崩溃时执行
RunOnCrash([]()
{
MessageBox(NULL,L"我的程序崩溃啦",L"Sorry",0);
});
return 0;
}
//////////////////////////////////////////////其他/////////////////////////////////////////
1:ComHelper用于辅助编写com接口
2:CabinetHelper用于打开以及创建cab文件
3:DiskHelper用于修改磁盘MBR
4:FileHelper提供基础文件操作,比如文件删除、属性修改、大小计算
5:IniHelper,提供基础的ini读写
6:RegHelper,提供基础的注册表操作
7:StringHelper,提供基础的字符串操作
8:VirtDiskHelper,此库已经弃用,没啥功能
9:WinInetHelper,提供网络下载
10:WinnlsHelper,没什么功能,可以无视
11:StreamEx,没什么功能,通用层数据流交换使用,可以无视