- 博客(8)
- 资源 (2)
- 收藏
- 关注
原创 IOCP日记
GetCompleteIOStatus如果返回true,代表一个包出列,所有返回参数都有效;如果返回false,且overlapped为空,代表失败,其它参数也无效;如果返回false,且overlapped不为空,代表一个包出列,但I/O操作失败,其它参数值有效,需要GetLastError进一步获取错误原因;WSARecv的lpFlags参数必须传入地址,否则返回WSAEFAU
2013-08-20 09:55:59 197
原创 动态数组
1、动态数组是一个指向数组的指针; 例如有这样一个动态数组: var bu: array of integer; begin SetLength(bu, 20); //ZeroMemory(@bu, 20*SizeOf(Int
2011-09-21 09:25:14 244
原创 关于GetGlyphOutline
1、使用GetGlyphOutline返回的字符位图数据中(使用GGO_BITMAP参数),行是以DWORD方式对齐的(Windows的限制),例如:字符的宽度为50,那么返回的数据中行是以8字节对齐的而在OpenGL的glBitmap函数中,数据的行是与字符的宽度对齐的
2011-09-21 09:23:23 407
原创 Delphi+COM+WideString
困扰了我好久的问题,终于弄明白了,TNND!Delphi+COM+WideString1、在COM中必须使用WideString,而不是AnsiString;2、如果接口样式是procedure GetStr(out ss: WideString)
2011-09-21 09:17:58 439
原创 Delphi中使用Interface的好处
1、实现多继承Delphi中的类是不能多继承的,我们可以通过Interface来间接实现:TComplexClass = class(TParentClass, Itest1, Itest2, Itest3)end; 2、生存期自管理Delphi中的Int
2011-08-12 10:18:33 873
转载 宏定义使用技巧:
宏定义使用技巧:1、把枚举值转换为字符串#define CaseEnum(e) case(e):printf(#e)2、利用二进制表达式得到编译期常量#define cat(a, b) a##bcat(1, 2) = 123、给标准断言添加描述性注释#define assertmsg(a,b) assert(a && b)void* p = NULL;assertmsg(p, "p is null
2008-09-25 16:03:00 260
原创 SOCKET无阻塞连接
SOCKET无阻塞连接下面的代码实现Socket 无阻塞 connect#include int APIENTRY shared_connect_nonb(int skt, const struct sockaddr* sa, int salen, int timeout){ int n, error, result = SOCKET_ERROR; long noblock = 1;
2008-09-25 11:18:00 327
原创 使用GDI+重画ListView
我们使用GDI+的画刷渐变效果重画ListView,使ListView看起来更好看一些(好不好看得依个人爱好了!)1、在Delphi中新建一个Win32 Form的工程,在mainform上放置一个ListView;2、设置ListView的ViewStyle属性为vsReport;3、为ListView添加几个列;4、为ListView的Items添加几个测试数据;5、
2008-09-25 11:06:00 1292
3D图形编程指南 变换
2011-08-23
GDIPlus 编程指南
2011-08-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人