作者:admin 发布于:2012-8-10 15:28 Friday
分类:Windows
10Aug
Winapi
此成员实际上不是调用约定,而是使用了默认平台调用约定。
例如,在 Windows 上默认为 StdCall,在 Windows CE.NET 上默认为 Cdecl。
Cdecl
调用方清理堆栈。这使您能够调用具有 varargs 的函数(如 Printf),使之可用于接受可变数目的参数的方法。
StdCall
被调用方清理堆栈。这是使用平台 invoke 调用非托管函数的默认约定。
ThisCall
第一个参数是 this 指针,它存储在寄存器 ECX 中。其他参数被推送到堆栈上。此调用约定用于对从非托管 DLL 导出的类调用方法。
FastCall
不支持此调用约定。
阅读全文>>
标签: CallingConvention
评论(0)
引用(74)
浏览(31503)
作者:admin 发布于:2012-8-9 11:01 Thursday
分类:Windows
09Aug
附件有完整代码
test.cpp
#include "md5.h"
#include <iostream>
using namespace std;
void PrintMD5(const string& str, MD5& md5) {
cout << "MD5(\"" << str << "\") = " << md5.toString() << endl;
}
string FileDigest(const string& file) {
ifstream in(file.c_str(), ios::binary);
if (!in) {
return "";
}
MD5 md5;
std::streamsiz...
阅读全文>>
附件下载:
md5.rar 4.06KB
评论(0)
引用(19)
浏览(38362)
作者:admin 发布于:2012-8-9 10:47 Thursday
分类:Windows
09Aug
1 调用ifstream打开一个文件
2 调用seekg将get pointer置为文件末尾,seekg(0, ios_base::end)
3 调用tellg获取总字节数,实际上获取的是get pointer相对于文件头的偏移字节数
4 重置get pointer,使其指向文件头,以便执行其他操作
对于ifstream对象的每一次read过后,可以调用ifstream::gcount获取读取的字节数,
gcount的返回值为streamsize,而streamsize是个整型,signed int或signed long
#include <iostream>
#include <fstream>
using namespace std;
int main () {
int length;
char * buffer;
ifstre...
阅读全文>>
评论(0)
引用(15)
浏览(33488)
作者:admin 发布于:2012-8-9 10:06 Thursday
分类:Windows
09Aug
第一种方法:
DWORD WINAPI GetCurrentProcessId(void);
第二种方法:
#ifdef _WIN32
#include <process.h>
#else
#include <unistd.h>
#endif
int main()
{
int iPid = (int)getpid();
std::cout<<"The process id is: "<<iPid<<std::endl;
return 0;
}
阅读全文>>
标签: GetCurrentProcessId
评论(0)
引用(100)
浏览(33963)
作者:admin 发布于:2012-8-3 17:00 Friday
分类:Windows
03Aug
问题:error C2065: "IDC_HAND" : undeclared identifier
解决:查看IDC_HAND的定义
#if(WINVER >= 0x0500)
#define IDC_HAND MAKEINTRESOURCE(32649)
#endif
可在stdafx.h中加入如下代码:
#ifndef WINVER // 允许使用 Windows 95 和 Windows NT 4 或更高版本的特定功能。
#define WINVER 0x0500 //为 Windows98 和 Windows 2000 及更新版本改变为适当的值。
#endif
阅读全文>>
标签: IDC_HAND
评论(0)
引用(12)
浏览(22920)