1
函数名: fflush
功 能: 清除文件缓冲区,文件以写方式打开时将缓冲区内容写入文件
如果成功刷新,fflush返回0。指定的流没有缓冲区或者只读打开时也返回0值。返回EOF指出一个错误。
注意:如果fflush返回EOF,数据可能由于写错误已经丢失。当设置一个重要错误处理器时,最安全的是用setvbuf函数关闭缓冲或者使用低级I/0例程,如open、close和write来代替流I/O函数。
2
fseek:重定位流上的文件指针
int fseek(FILE *stream, long offset, int fromwhere); 函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
3
Seek 函数:返回一个 Long,在 Open 语句打开的文件中指定当前的读/写位置。
4
函数名: ftell
功 能: 返回当前文件指针
用 法: long ftell(FILE *stream);
ftell()函数用于获取文件位置指针
函数 ftell() 用于得到文件当前位置相对于文件首的偏移字节数。在随机方式存取文件时,由于文件位置频繁的前后移动,程序不容易确定文件的当前位置。调用函数ftell()就能非常容易地确定文件的当前位置。
函数 ftell() 的调用形式为:ftell(fp);利用函数 ftell() 也能方便地知道一个文件的长。如以下语句序列: fseek(fp, 0L,SEEK_END); len =ftell(fp); 首先将文件的当前位置移到文件的末尾,然后调用函数ftell()获得当前位置相对于文件首的位移,该位移值等于文件所含字节数。
5
fread: 从一个流中读数据
函数原型: int fread(void *ptr, int size, int nitems, FILE *stream);
参 数:用于接收数据的地址(指针)(ptr)
单个元素的大小(size) :单位是字节而不是位,例如读取一个整数值就是4
元素个数(nitems)
提供数据的文件指针(stream)
返回值:成功读取的元素个数
6
basic_string substr(size_type _Off = 0,size_type _Count = npos) const;
substr 功能:从一个字符串复制一个从指定位置开始,并具有指定长度的子字符串。
7
FindClose:关闭由FindFirstFile函数创建的一个搜索句柄 ,返回值Long,非零表示成功,零表示失败。会设置GetLastError
8
char szpath[MAX_PATH]
::GetModuleFileName(GetModuleHandle(NULL),szpath,MAX_PATH)
获取当前执行程序的全路径以及名字
::PathRemoveFileSpec(szpath) 当前路径(去掉'\名字')
::PathAppend(szpath,"game\\test.exe")加其他名字(前面不用加\)
9
dataType data
ZeroMemory(&data,sizeof(dataType))初始化内存
10
string path
File* file = fopen(path.c_str(),"rb")
index = fscanf(file,"%s",&value) 读到数据index 1 读不到 -1
fclose(file)
char* data
file = fopen(path.c_str(),"w")
fprintf(file,"%s",data)
11
char mac[10] cstring cs
cs.Format("s",mac)
cs.Remove("-")
cs.MakeReverse()逆序
char* data = cs.GetBuffer(cs.GetLength())
12
MEMORYSTATUS m
m.dwlength = sizeof(MEMORYSTATUS)
::GlobalMemoryStatus(&m) 获取系统内存
SYSTEM_INFO in
GetSystemInfo(&in)获取CPU
LPDIRECT3D9 d3d = Direct3DCreate9(D3D_SDK_VERSION)
D3DADAPTER_IDENTIFIER9 d
d3d->GetAdapterIdentifier(0,0,&d) 获取显卡信息
13
RegOpenKeyEx()
RegQueryValueEx()
RegClosedKey()
操作注册表
14
CInternerSession m_winet(NULL,1,INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0)
CHttpConnetion* pc
CHttpFile *file
INTERNET_PORT port = 80
cstring host_name = "play.lieguo.com"
cstring postData = "data"
pc = m_winet.GerHttpConnection((LPCTSTR)host_name,port)
file = pc->OpenRequest(CHttpConnection::HTTP_VERB_POST,"/pc/pc.php")
cstring header = _T("Contect-Type:application/x-www-form-urlencoded,Referer:http://play.lieguo.com/pc/pc.php")
file->SendRequest(header,(LPVOID)(LPCTSTR)postData,strlen(postData))
DWORD error = GetLastError()
向服务器post数据
15
tchar data[max]
SHGetFolderPath(NULL,CSIDL_PROGRAM_FILES,NULL,0,data)获取系统盘路径 例如 C:\Program Files
lstrcat(data1,data2) 连接字符串
16
限制两个同样的程序运行
HWND hwnd = FindWindow("#32770","游戏")
if(hwnd)
{
SendMessage(hwnd,WM_CLOSED,NULL,NULL)
while(FindWindow("#32770","游戏"))
{
延迟一段时间才往下执行
}
}
在程序里
HANDLE mutex = CreateMutex(NULL,true,"YX")
if(GetLastError() == ERROR_ALREADY_EXISTS)
{
HWND hwnd = FindWindow("#32770","YX")
ShowWindow(hwnd,SW_NORMAL)
SetForegroundWindow(hwnd) 将创建指定窗口的线程设置到前台,并且激活该窗口
ReleaseMutex(mutex)
CloseHandle(mutex)
return
}
重启程序
CreateMutex()可用来创建一个有名或无名的互斥量对象
HANDLE CreateMutex(
LPSECURITY_ATTRIBUTES lpMutexAttributes, // 指向安全属性的指针
BOOL bInitialOwner, // 初始化互斥对象的所有者
LPCTSTR lpName // 指向互斥对象名的指针
);
17
AfxMessageBox(data)
::MessageBox(NULL,_TEXT(data),_TEXT("提示"),MB_OK|MB_ICONERROR|MB_YESNO)
18
#define UPDATE_TIME 1000
继承MFC类:
SetTimer(UODATE_TIME,1500,0)1.5秒,0秒后开始执行
MFC类: OnTimer(UINT_PTR nIDEvent):
{ if(nIDEvent == UPDATE_TIME){} }
KillTimer( UPDATE_TIME)
19
CToolTipsCtrl m_tt
m_tt.create(this)
m_tt.Activate(true)
m_tt.SetMaxTipWidth(100)
m_tt.SetTipBkColor(RGB(0,0,0))
MFC类:PreTranslateMessage(MSG*p)
{
switch(p->message)
{
case WM_MOUSEMOVE:
m_tt.AddTool(CWND控件,显示信息)
m_tt.SetTipTextColor(RGB(0,0,0))
m_tt.RelayEvent(p)
}
}
20
ShellExecute的功能是运行一个外部程序:打开一个已注册的文件、打开一个目录、打印一个文件等
ShellExecute(NULL,"open",filename,NULL,NULL,SW_SHOWNORMAL)
ShellExecute(
hWnd: HWND; {指定父窗口句柄}
Operation: PChar; {指定动作, 譬如: open、print}
FileName: PChar; {指定要打开的文件或程序}
Parameters: PChar; {给要打开的程序指定参数; 如果打开的是文件这里应该是NULL}
Directory: PChar; {缺省目录}
ShowCmd: Integer {打开选项}
): HINST; {执行成功会返回应用程序句柄; 如果这个值 <= 32, 表示执行错误}
21
Rect r
Cpoint p
GetWindowRect(&r)
r.PtInRect(p) 判断一个点是否在矩形里面
ShowWindow(SW_MINIMIZE) 最小化
Sleep(100)
exit(0) 关闭窗口
#include <time.h>
srand((unsiged)time(0))
rand()随机数
22
showErrorMsgDlg(data) 带参数 ("招募 %s",data)
va_list: C/C++ 中函数的可变参数列表
showErrorMsgDlg(char* format,.....)
{
cstring d
char* b = d.GetBuffer(1024)
va_list args
va_start(args, format); //开始解析。args指向format后面的参数
//TYPE var = va_arg(args, TYPE); 取下一个参数并返回。args指向下一个参数
vsprintf_s(b,1024,format,args) //("招募 data",1024,"招募 %s",args)
va_end(args); //结束解析
d.ReleaseBuffer()
MessageBox(d,"程序",MB_OK)//d = "招募 data"
23
STARTUPINFO info
memset(&info,0,sizeof(STARTUPINFO))
info.cb = sizeof(STARTUPINFO)
PROCESS_INFORMATION pro
bool su=CreateProcess(NULL,LPSTR(可执行文件:可加参数),NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&info,&pro)
if(!su)
WinExec(可执行文件,SW_SHOWNORMAL)
24
BROWSEINFO bi
ITEMIDLIST *pidl
char szDir[MAX_PATH]
bi.hwndOwner = this->m_hWnd
bi.pszDisplayName = szDir
bi.lpszTitle = "请选择目录"
pidl = SHBrowseForFolder(&bi) 弹出目录选择界面
SHGetPathFromIDList(pidl,szDir) 获取选中的目录路径 szDir
25
ExitThread(0)
26
获取指定地址的URL文件大小(字节)
__int64 GetUrlFileSize(cstring url)
{
CInternetSession session
CHttpFile* fileGet
TRY
{
fileGet=(CHttpFile*)session.openURL(url)
cstring strlen
BOOL bSucceed = fileGet->QueryInfo(HTTP_QUERY_CONTENT_LENGTH,strlen)
fileGet->Close()
delete fileGet
session.Close()
return _atoi64(strlen)
}
CATCH(CException, e)
{
char szMsg[256]
e->GetErrorMessage(szMsg,256)
cout<<szMsg<<endl
}
}
27
判断线程是否结束
DWORD dwCode
GetExitCodeThread(m_thread,dwCode)
if dwCode == STILL_ACTIVE:
return false
return true
28
判断文件是否存在
isExist(const string& name)
{
WIN32_FILE_ATTRIBUTE_DATA attrData
BOOL ok = GetFileAttributesExA(name.c_str(),GetFileExInfoStandard,&attrData)
return ok
}
29
Cstring a
string b(a.GetBuffer())
a.Format("%s",b.c_str())
30
CInternetSession::OpenURL
CStdioFile* OpenURL( // CHttpFile 继承于CInternetFile 继承于 CStdioFile
LPCTSTR pstrURL, //文件URL地址
DWORD dwContext = 1, //上下文ID
DWORD dwFlags = INTERNET_FLAG_TRANSFER_ASCII, //标记
LPCTSTR pstrHeaders = NULL, //发送到服务器的数据头
DWORD dwHeadersLength = 0 );//发送到服务器的数据头长度
dwFlags :
INTERNET_FLAG_RELOAD 强制重读数据
INTERNET_FLAG_DONT_CACHE 不保存到缓存
INTERNET_FLAG_TRANSFER_ASCII 使用文本数据
INTERNET_FLAG_TRANSFER_BINARY 使用二进制数据
31
string filepath
size_t index = filepath.find_last_of("/") #find_first_of()
string filename = file.substr( index + 1)
char path[2048]
GetCurrentDirectory(2048,path)
32
#include <string.h>
int memcmp(void *buf1, void *buf2, unsigned int count) 比较内存区域buf1和buf2的前count个字节。
buf1<buf2,返回<0 // =0 // >0 按字节比较,出现不同立即返回
char buf[2048]
memset(buf,0,2048)
memcpy(src,dest,length)
与strcpy相比,src和dest所指内存区域不能重叠,函数返回指向dest的指针
memcpy并不是遇到'\0'就结束,而是一定会拷贝完n个字节
33
int _tmain(int argc,_TCHAR* argv[])
{
string exename = argv[0]
vector<string> arguments
if(argc>1)
{
for(int i=1;i>argc;++i)
{
arguments.push_back(argv[i])
}
}
}
34
__int64 64位整数类型
__int64 a
unsigned __int64 b
print("$I64d",a)
print("$I64u",b)
35
CWinApp类定义了WinMain函数的四个参数 m_hInstance,m_hPrevInstance,m_lpCmdLine,m_nCmdShow
36
TerminateThread( HANDLE hThread, DWORD dwExitCode); 在线程外终止一个线程,用于强制终止线程。
HANDLE htread:被终止的线程的句柄,为CWinThread指针,DWORD dwExitCode:退出码
函数执行成功则返回非零值,执行失败返回0。调用getlasterror获得返回的值。
37
char buf[1024*24]
string file = "c:/file.ini"
GetPrivateProfileSectionNames(buf,1024*24,file.c_str())
char *begin = buf
while(begin - buf < 1024*24)
{
cstring name(begin)
begin += name.GetLength() + 1
}
38
char buf[257]={0}
int value= GetPrivateProfileInt("Global","key",0,file.c_str())
GetPrivateProfileString("Global","key","",buf,256,file.c_str())
cstring a
a.Format("%s",buf)
int ver
char buf[256]
sprintf(buf,"%d",ver) 格式化数字字符串
WritePrivateProfileString("Global","key",buf,file.c_str())
39
BOOL AFXAPI AfxParseURL(
LPCTSTR pstrURL,
DWORD& dwServiceType,
CString& strServer,
CString& strObject,
INTERNET_PORT& nPort
);
成功解析URL,则返回非零值。URL为空或它不包含已知的Internet服务类型,则为0。
pstrURL 指向包含了要解析的URL的字符串的指针。
dwServiceType 指明了Internet服务的类型
· AFX_INET_SERVICE_HTTP 等
strServerURL 中服务类型后的第一个部分。
strObjectURL 涉及的对象(可能为空)。
nPort 如果存在,则从URL的服务器或对象部分搜索出来。
调用这个函数,要在项目中包含AFXINET.H
AfxParseURL("http://192.168.1.248/server.lst",dwServiceType,strServer,strObject,nPort)
则 3(AFX_INET_SERVICE_HTTP ),"192.168.1.248","/server.lst",80
40
cstring s
int end = s.find(';',0)
if(end!=-1)
{cstring a = s.mid(0,end-0)}
int atoi(const char *nptr); 把字符串转换成整型数
41
const char* strstr(unsignd char* str1 unsignd char* str2)
从str1中寻找str2,并返回str2所在位置到str1结尾的字符串。
如:
const char * str = strstr("asde","sd");
则str = "sde"
42
char dbuffer[9];
char tbuffer[9];
_strdate(dbuffer) ;//得到当前日期,格式为:11/26/08
_strtime(tbuffer) ;//得到当前时间,格式为:10:38:39
43 隐藏MFC主窗口:
SetWindowPos(&this->wndTopMost,0,0,0,0,SWP_HIDEWINDOW);
44 获取屏幕颜色位数
HDC screenDC;
BYTE numOfBits;
screenDC = CreateDC("DISPLAY",NULL,NULL,NULL);
numOfBits = GetDeviceCaps(screenDC,BITSPIXEL);
DeleteDC(screenDC)