随笔分类 - windows编程
GetQueuedCompletionStatus的返回值
摘要:完成端口GetQueuedCompletionStatus返回值的问题先看看GetQueuedCompletionStatus函数的完整声明:BOOL GetQueuedCompletionStatus(HANDLE CompletionPort, LPDWORD lpNumberOfBytes, ...
阅读全文
在完成端口中使用GetAcceptExSockaddrs
摘要:MSDN:When using AcceptEx, the GetAcceptExSockaddrs function must be called to parse the buffer into its three distinct parts (data, local socket addre...
阅读全文
AcceptEx编辑
摘要:Windows套接字AcceptEx函数接受一个新的连接,返回本地和远程地址,并接收由客户端应用程序发送的第一块数据。Windows 95/98不支持AcceptEx函数。平台SDK:Windows套接字AcceptEx注意:此函数是一个Microsoft特定的扩展,Windows Sockets规...
阅读全文
CreateWaitableTimer和SetWaitableTimer函数(定时器)
摘要:用户感觉到软件的好用,就是可以定时地做一些工作,而不需要人参与进去。比如每天定时地升级病毒库,定时地下载电影,定时地更新游戏里的人物。要想 实现这些功能,就可以使用定时器的API函数CreateWaitableTimer和SetWaitableTimer来实现了,这对API函数创建的 时钟是比较精确...
阅读全文
c++字符串机理
摘要:在windows编程中,由于编码方式的不同和c与c++的不同而造成了许多复杂的有关字符串之间的转换首先,windows编码方式有ANSCLL和UNICODE,前者是单字符的,后者是双字符的。然后,char*理所当然是单字符的,string也是单字符的,而CString是Tchar的。那么什么是TCH...
阅读全文
LPTSTR、LPCSTR、LPCTSTR、LPSTR的来源及意义
摘要:UNICODE:它是用两个字节表示一个字符的方法。比如字符'A'在ASCII下面是一个字符,可'A'在UNICODE下面是两个字符,高字符用0填充,而且汉字'程'在ASCII下面是两个字节,而在UNICODE下仍旧是两个字节。UNICODE的用处就是定长表示世界文字,据统计,用两个字节可以编码现存的...
阅读全文
c++,windows中的字符问题
摘要:string与char*的转换方法string a;char *b=a.c_str();string a=new String(b);a=b;LPCWSTR是unicode的字符串,LPCSTR是ascll字符串你可以使用Microsoft在ATL里面提供的宏来进行转换#includeUSES_CO...
阅读全文
线程句柄有什么用
摘要:非托管资 源:ApplicationContext,Brush,Component,ComponentDesigner,Container,Context,Cursor,FileStream,Font,Icon,Image,Matrix,Object,OdbcDataReader,OleDBData...
阅读全文
GlobalAlloc()和malloc()、HeapAlloc()
摘要:两者都是在堆上分配内存区。malloc()是C运行库中的动态内存分配函数,WINDOWS程序基本不使用了,因为它比WINDOWS内存分配函数少了一些特性,如,整理内存。GlobalAlloc()是16位WINDOWS程序使用的API,返回一个内存句柄,在实际需要使用时,用GlobalLock()...
阅读全文
win32的计数增减操作的原子操作--InterLockedIncrement和InterlockedDecrement
摘要:InterLockedIncrement and InterLockedDecrement实现数的原子性加减。什么是原子性的加减呢?举个例子:如果一个变量 Long value =0;首先说一下正常情况下的加减操作:value+=1;1:系统从Value的空间取出值,并动态生成一个空间来存储取出来的...
阅读全文
C语言中volatile关键字的作用
摘要:一.前言1.编译器优化介绍:由 于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一 定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软...
阅读全文
慎用WSACleanup()
摘要:中止Windows Sockets DLL的使用. #include int PASCAL FAR WSACleanup ( void );应用程序或DLL在使用Windows Sockets服务之前必须要进行一次成功的WSAStartup()调用.当它完成了Windows Socket...
阅读全文
WINAPI和APIENTRY是一样的
摘要:今天写线程函数时,发现msdn中对ThreadProc的定义有要求:DWORD WINAPI ThreadProc(LPVOID lpParameter);不解为什么要用WINAPI宏定义,查了后发现下面的定义。于是乎需要区别__stdcall和__cdecl两者的区别; #define CALLB...
阅读全文
WSAStartup函数
摘要:函数WSAStartup一、WSAStartup函数 int WSAStartup ( WORD wVersionRequested, LPWSADATA lpWSAData ); 使用Socket的程序在使用Socket之前必须调用WSAStartup函数。该函数的第一个参数指明程序请求使...
阅读全文
makeword()
摘要:MAKEWORD(学习之用,转载) MAKEWORD 宏 平台:SDK 这个宏创建一个被指定变量连接而成的WORD变量。返回一个WORD变量。 (注:typedef unsigned short WORD;) WORD MAKEWORD( BYTE bLow, //指定新变量的低字...
阅读全文
CreateEvent的用法
摘要:事件对象就像一个开关:它只有两种状态---开和关。当一个事件处于”开”状态,我们称其为”有信号”否则称为”无信号”。可以在一个线程的执行函数中创建一个事件对象,然后观察它的状态,如果是”无信号”就让该线程睡眠,这样该线程占用的CPU时间就比较少。产生事件对象的函数如下:HANDLE CreateEv...
阅读全文
VC中_T()的作用
摘要:Windows使用两种字符集ANSI和UNICODE,前者就是通常使用的单字节方式,但这种方式处理象中文这样的双字节字符不方便,容易出现半个汉字的情况。而后者是双字节方式,方便处理双字节字符。Windows NT的所有与字符有关的函数都提供两种方式的版本,而Windows 9x只支持ANSI方式。_...
阅读全文
ADO接口之_RecordsetPtr
摘要:转自:http://hi.baidu.com/%CE%D2%B6%CF%C1%CB%CB%BC%C4%EE/blog/item/e057c526c6af6c29c995596e.html_RecordsetPtr智能指针,它是专门为通过记录集操作数据库而设立的指针,通过该接口可以对数据库的表内的记录...
阅读全文
VC 调试技术与异常(错误)处理 VC 调试技术与异常(错误)处理
摘要:调试技术与异常(错误)处理(1)转载自52PK游戏论坛跟踪与中间过程输出也许一个开发人员一半以上的时间都是在面对错误,所以好的调试/查错方法(工具)会减轻我们工作的负担,也可以让枯燥的DEBUG过程得以缩短。VC开 发环境所提供的调试环境是很优秀的,我们可以运用单步运行,设置断点的方法来查找问题所在...
阅读全文
VC++中MessageBox的常见用法详解
摘要:消息框是个很常用的控件,属性比较多,本文列出了它的一些常用方法,及指出了它的一些应用场合。 1.MessageBox("这是一个最简单的消息框!"); 2.MessageBox("这是一个有标题的消息框!","这是标题"); 3.MessageBox("这是一个确定 取消的消息框!","这是标题",...
阅读全文