博文
第二十章 DLL高级技巧(2010-10-21 17:12:00)
摘要:第二十章 DLL高级技巧
1.概览
1.1动态加载DLL文件 LoadLibraryEx
HMODULE LoadLibraryEx(
PCTSTR pszDLLPathName,
HANDLE hFile,
DWORD dwFlags);
返回DLL加载到进程空间原首地址。
dwFlags 可以有以下几个值
(1) DONT_RESOLVE_DLL_REFERENCES
建议永远不要使有这个值,它的存在仅仅是为了向后兼容、
更多内容请访问:http://blogs.msdn.com/oldnewthing/archive/2005/02/14/372266.aspx
......
使用前向和反向迭代器遍历list(2010-10-19 17:37:00)
摘要:
#include <iostream>
#include <list>
using namespace std;
int main(int argc, char* argv[])
{
int iArr[] = { 1,2,3,4,5,6,7,8,9 };
list<int> myList(iArr,iArr+9);
list<int>::iterator it = myList.begin();
int iTemp = 0;
// 前向iterator
cout << "Normal data: \n";
for (it=myList.begin(); it!=myList.end(); it++)
{
cout << *it << " ";
}
cout << "\n";
// 反向iterator
list <int>::reverse_iterator rIt;
&n......
VC获取应用程序版本关键代码(2010-09-30 15:55:00)
摘要:Requirements
Windows NT/2000/XP: Included in Windows NT 3.1 and later.
Windows 95/98/Me: Included in Windows 95 and later.
Header: Declared in Winver.h; include Windows.h.
Library: Use Version.lib.
TCHAR szApp[MAX_PATH] = {0};
GetModuleFileName(NULL,szApp,MAX_PATH);
DWORD dwVerInfoSize = GetFileVersionInfoSize(szApp,0);
ASSERT(dwVerInfoSize>0);
BYTE *pVerInfor = new BYTE[dwVerInfoSize];
if(!pVerInfor)
{
ASSERT(pVerInfor);
return;
}
VERIFY(GetFileVersionInfo(szApp,0,dwVerInfoSize,pVerInfor));
VS_FIXEDFILEINFO *pVsInfo = NULL;
UINT uVerSize = 0;
CString strWinText,strVer;
if(VerQueryValue(pVerInfor,_T("......
【转】英语达人告诉你,如何用美剧真正提升你的英语水平(2010-09-20 19:13:00)
摘要:没想到这篇日志会这么火,看到很多童鞋讨论有关美剧学习英语到底有没有用,以及用哪部美剧练习,我在这里想说这只是一个参考,世界上没有绝对的事情,究竟有没有用看个人,想必在校内上至少是高中生,大部分是大学生吧,如果你到现在还无法衡量自己的英语水平或者依旧被英语牵着鼻子走,我只能说我很抱歉,我觉得这不仅是个人的悲哀更是中国教育的悲哀。如果你到现在连自己基本的评判标准的话,即使存在完美无缺的日志,你依旧照搬照抄,不适合自己的实际情况,那一切皆为徒劳。就算这是学习英语的一条途径,有几个人能真的照着做呢?
1. 不是所有的美剧都适合学英语
如果喜欢看如《24小 时》这样的动作片, 那你基本会讲一口流利的"呯""轰""啊"之类的开枪爆炸声英语.如果你喜欢看如《豪斯医生》这种专业性很强的片子,那你基本会讲一些如 MRI,CT,Tumor之类的连自己都不明白的江湖郎中英语.如果看的是《越狱》,基本不用举手,别人就知道你是黑手党的了.不是所有剧都合适的,用来学习的美剧,是要有一定对话量,生活化的,平民化的片子.
2. 开着字幕看是没有前途的
很 多人喜欢开着字幕看,觉得会有参照更有帮助,其实这是在拖你的后腿.就像很多人结婚,喜欢找个比自己丑的伴娘,以为这样自己就进步了,事实上是被拖下水 了.中文是母语,对我们的眼球来说有无比强大的吸引力,只要在那里,你一定会看,就像放个美女在眼前,男人一定会看,不看的可能是老婆在一边,或是他爱人 也是个男人.一般人永远会不自觉通过中文字幕理解英语,而不是通过听懂-理解-记忆-重复,这样的过程学到英语.
3.看一遍是不够的
看 一遍根本不能叫学英语,充其量只能叫娱乐.如果是抱着学习的目的,必须反复看,精听,理解句子词语的意思,为我所用才行.如果看一遍,基本你就被情节彻底 打败了,或哭或笑,反复思考自己该拥有<HEROES>里的哪种超能力,担心下集可以下载前的日子该怎么过,哪还有心思管学英语这码事,哪怕讲 的是柬埔寨语都无所谓.所以通过看个几遍,基本到了对剧情已经免疫的程度,如看老友记看到已经笑不出来了,那差不多可以洗干净耳朵仔细听了.
What’s New In Python 3.0(2010-09-18 14:23:00)
摘要:Table Of Contents
What’s New In Python 3.0
Common Stumbling Blocks
Print Is A Function
Views And Iterators Instead Of Lists
Ordering Comparisons
Integers
Text Vs. Data Instead Of Unicode Vs. 8-bit
Overview Of Syntax Changes
New Syntax
Changed Syntax
Removed Syntax
Changes Already Present In Python 2.6
Library Changes
PEP 3101: A New Approach To String Formatting
Changes To Exceptions
Miscellaneous Other Changes
Operators And Special Methods
Builtins
Build and C API Changes
Performance
Porting To Python 3.0
Previous topic
What’s New in Python
Next topic
What’s New in Python 2.7
This Page
Show Source
......
Python3.x和Python2.x的区别(2010-09-18 14:18:00)
摘要:Python3.x和Python2.x的区别
这个星期开始学习Python了,因为看的书都是基于Python2.x,而且我安装的是Python3.1,所以书上写的地方好多都不适用于Python3.1,特意在Google上search了一下3.x和2.x的区别。特此在自己的空间中记录一下,以备以后查找方便,也可以分享给想学习Python的friends.
1.性能
Py3.0运行 pystone benchmark的速度比Py2.5慢30%。Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可
以取得很好的优化结果。
Py3.1性能比Py2.5慢15%,还有很大的提升空间。
2.编码
Py3.X源码文件默认使用utf-8编码,这就使得以下代码是合法的:
>>> 中国 = 'china'
>>>print(中国)
china
3. 语法
1)去除了<>,全部改用!=
2)去除``,全部改用repr()
3)关键词加入as 和with,还有True,False,None
4)整型除法返回浮点数,要得到整型结果,请使用//
5)加入nonlocal语句。使用noclocal x可以直接指派外围(非全局)变量
6)去除print语句,加入print()函数实现相同的功能。同样的还有 exec语句,已经改为exec()函数
例如:
2.X: print "The answer is", 2*2
3.X: print("The answer is", 2*2)
2.X: print x,  ......
VC 链接器工具错误和警告(2010-09-14 18:17:00)
摘要:LINK、LIB、DUMPBIN 和 EDITBIN 产生这些错误和警告。若要获得特定错误信息的相关帮助,请在“输出”窗口中的错误号上单击鼠标并按 F1,在“索引”的“查找”框中键入错误号,或单击下面的链接。
链接器工具错误 LNK1000
链接器工具错误 LNK1101
链接器工具错误 LNK1102
链接器工具错误 LNK1103
链接器工具错误 LNK1104
链接器工具错误 LNK1105
链接器工具错误 LNK1106
链接器工具错误 LNK1107
链接器工具错误 LNK1108
链接器工具错误 LNK1109
链接器工具错误 LNK1110
链接器工具错误 LNK1111
链接器工具错误 LNK1112
链接器工具错误 LNK1113
链接器工具错误 LNK1115
链接器工具错误 LNK1117
链接器工具错误 LNK1118
链接器工具错误 LNK1119
链接器工具错误 LNK1120
链接器工具错误 LNK1121
链接器工具错误 LNK1123
链接器工具错误 LNK1127
链接器工具错误 LNK1129
链接器工具错误 LNK1130
链接器工具错误 LNK1131
链接器工具错误 LNK1132
链接器工具错误 LNK1136
链接器工具错误 LNK1137
链接器工具错误 LNK1140
链接器工具错误 LNK1141
链接器工具错误 LNK1143
链接器工具错误 LNK1145
链接器工具错误 LNK1146
链接器工具错误 LNK1147
链接器工具错误 LNK1148
链接器工具错误 LNK1149
链接器工具错误 LNK1152
链接器工具错误 LNK1154
链接器工具错误 LNK1155
链接器工具错误 LNK1156
链接器工具错误 LNK1158
链接器工具错误 LNK1159
链接器工具错误 LNK1160
链接器工具错误 LNK1161
链接器工具错误 LNK1162
链接器工具错误 LNK1163
链接器工具错误 LNK1164
链接器工具错误 LNK1165
链接器工具错误 LNK1166
链接器工具错误 LNK1167
链接器工具错误 LNK1168
链接器工具错误 LNK1169
链接器工具错误 LN......
GDI+在内存中绘制,并保存为BMP、PNG、JPEG格式的图片关键代码(2010-09-11 12:02:00)
摘要:// 获取指定图片格式CLSID
int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
{
UINT num= 0;
UINT size= 0;
ImageCodecInfo* pImageCodecInfo= NULL;
GetImageEncodersSize(&num, &size);
if(size== 0)
{
return -1;
}
pImageCodecInfo= (ImageCodecInfo*)(malloc(size));
if(pImageCodecInfo== NULL)
{
return -1;
}
GetImageEncoders(num, size, pImageCodecInfo);
for(UINT j=0; j< num; ++j)
{
if(wcscmp(pImageCodecInfo[j].MimeType, format)== 0)
{
*pClsid= pImageCodecInfo[j].Clsid;
free(pImageCodecInfo);
pImageCodecInfo= NULL;
return j;
}
}
free(pImageCodecInfo);
pImageCodecInfo= NULL;
return -1;
}
&......
GDI+双缓冲绘制步骤(2010-09-11 11:56:00)
摘要:双缓冲的具体步骤:1、在内存中建立一块“虚拟画布”:
Bitmap bmp = new Bitmap(600, 600);
2、获取这块内存画布的Graphics引用:
Graphics g = Graphics.FromImage(bmp);
3、在这块内存画布上绘图:
g.FillEllipse(brush, i * 10, j * 10, 10, 10);
4、将内存画布画到窗口中
this.CreateGraphics().DrawImage(bmp, 0, 0);
......
GDI+ 文本输出(2010-09-06 22:17:00)
摘要:需要GDI+环境支持
Graphics graphics(pDC->m_hDC);
FontFamily fontFamily(L"Times New Roman"); //字体设置
Font font(&fontFamily, 24, FontStyleRegular, UnitPixel); // 文本大小、显示方式设置 更详细的请参考MSDN
PointF pointF(30.0f, 10.0f); // 输出起始点
SolidBrush solidBrush(Color(255, 0, 0, 255)); // 刷子
graphics.DrawString(L"Hello", -1, &font, pointF, &solidBrush);......