- 博客(23)
- 收藏
- 关注
原创 Office嵌入工具栏的基本写法
VC++编写DLL,在Word 2003中临时地、流氓地加入工具栏一个。当用户单机按钮时,运行DLL中指定代码。本文没有讨论的技术:嵌入其他控件、创建安装程序。效果是这样的:程序文件在这里:http://webdisk.cech.com.cn/download/f
2011-09-13 21:46:57
614
原创 ARP, Address Resolution Protocol
http://www.networksorcery.com/enp/protocol/arp.htm
2011-06-21 21:16:00
424
原创 DNS, Domain Name System
http://www.networksorcery.com/enp/protocol/dns.htm
2011-06-21 21:16:00
441
原创 TCP, Transmission Control Protocol
http://www.networksorcery.com/enp/protocol/tcp.htm
2011-06-21 21:15:00
424
原创 UDP, User Datagram Protocol
http://www.networksorcery.com/enp/protocol/udp.htm
2011-06-21 21:14:00
833
原创 FTP, File Transfer Protocol
http://www.networksorcery.com/enp/protocol/ftp.htm
2011-06-21 21:13:00
438
原创 HTTP, HyperText Transfer Protocol
http://www.networksorcery.com/enp/protocol/http.htm
2011-06-21 21:11:00
484
原创 几个非常有用的文件操作
创建4K大小的空文件void CreateEmptyFile(){ char end=EOF; FILE *fp=fopen("empty.out", "wb"); fseek(fp, 4095, SEEK_SET); /*将文件位置指针移动到文件末尾,-1是为了给后面要写入的“结束标志”留空间*/ fwrite(&end, 1, 1, fp);
2011-06-12 11:02:00
442
原创 Libcurl 教程
<!--v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);}--> Normal 0 7.8 磅
2011-06-12 10:56:00
1018
原创 WideCharToMultiByte的第四个参数特写
<br />int WideCharToMultiByte( UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar);cchWideChar[in] Size, in WCHAR v
2011-01-25 23:51:00
455
原创 VC 获 取 当前程序运行路径的几种方法
1.使用APi函数GetModuleFileNamechar path[MAX_PATH];GetModuleFileName(NULL, path, MAX_PATH); //获取到完整路径如:E:/Tools/qq.exe*strrchr(path,//) = /0;
2010-05-25 13:21:00
1087
原创 Template Method模式与Strategy模式的总结
Template Method模式实现和使用起来都比较简单,但是不是很灵活。Strategy模式非常灵活但是必须得多创建一个类(接口)、多实例化一个对象(具体算法实现)并把这个额外对象配置到系统中。因此对于Template Method模式和Strategy模式的选择,要看是需要Strategy模式的灵活性还是需要Template Method模式的简单性。通常我会选择Template M
2010-05-24 23:31:00
429
原创 Template Method 模式
回想一下你编写过的所有程序。其中许多可能具有如下的基本循环结构。Initialize();while(!Done()){ Idle();}CleanUp(); 首先进行初始化应用程序。接着进入主循环完成需要做的工作,这些工作或许是处理GUI事件,或许是处理数据库记录。最后,一旦完成了工作,程序就推出主循环,并且在程序中之前做清除工作。 这
2010-05-24 23:00:00
501
原创 双缓冲的说明
双缓冲的原理可以这样形象的理解:把电脑屏幕看作一块黑板。首先我们在内存环境中建立一个“虚拟“的黑板,然后在这块黑板上绘制复杂的图形,等图形全部绘制完毕的时候,再一次性的把内存中绘制好的图形“拷贝”到另一块黑板(屏幕)上。采取这种方法可以提高绘图速度,极大的改善绘图效果。能理解到这一层,工作便变得简单了,只要四步就可以搞定了,看下面代码:例如在OnDraw()函数中可以如下所述
2010-04-08 12:26:00
458
原创 OnPaint和OnEraseBkgnd的区别
在MFC中 任何一个window组件的绘图 都是放在这两个member function中 在设定上 OnEraseBkgnd()是用来画底图的 而OnPaint()是用来画主要对象的 举例说明 一个按钮是灰色的 上面还有文字 则OnEraseBkgnd()所做的事就是把按钮画成灰色 而OnPaint()所做的事 就是画上文字 既然这两
2010-04-08 12:25:00
617
原创 MFC应用程序创建窗口的过程
1.PreCreateWindow() 该函数是一个重载函数,在窗口被创建前,可以在该重载函数中改变创建参数(可以设置窗口风格等等)2.PreSubclassWindow() 这也是一个重载函数,允许首先子分类一个窗口3.OnGetMinMaxInfo() 该函数为消息响应函数,响应的是WM_GETMINMAXINFO消息,允许设置窗口的最大或者最小尺寸4.OnNcCr
2010-04-08 12:25:00
487
原创 InvalidateRect说明
InvalidateRect是将窗口中的一块矩形区域标注为“无效”,系统会不断向窗口发送WM_PAINT消息令其重绘。在响应WM_PAINT消息时,需要调用BeginPaint获取DC来进行重绘。该函数会合并所有“无效”区域,对DC进行裁剪,将整个窗口标注为“有效”,清除WM_PAINT消息。DC经裁剪之后,在进行绘制时,超出DC范围的操作将不被处理,所以即使在响应W
2010-04-08 12:23:00
614
原创 窗口绘制小结
创建一个窗口,这个窗口区域就相当于一块画布,最终系统要在这块画布上绘制出窗口标题,客户区,控件等等,而窗口和控件绘制时的GetDC,BeginPaint等不过是获取到了跟自己相关的这块画布的一部分,在限定的区域内绘制,最终是画到这块画布上,系统最后显示窗口就是在桌面上显示这块画布,透明度也是认这块画布,因此上面的子窗口及控件也一起变得透明了。另建一个弹出式窗口,相当于创建了另一
2010-04-08 12:22:00
421
原创 绘制CBitmap的方法
如果是在重绘函数如OnPaint中CDC memDC;memDC.CreateCompatibleDC(pDC);CBitmap* pOldBmp = memDC.SelectObject(&bmp);pDC->BitBlt(rt.left, rt.top, rt.Width(), rt.Height(), &memDC, 0, 0, SRCCOPY);memDC.Sele
2009-03-07 12:34:00
1080
原创 COM组件设计与应用2 - GUID 和 接口
COM组件设计与应用(二) GUID 和 接口 作者:杨老师 一、前言 书接上回,话说在 doc(Word) 复合文件中,已经解决了保存 xls(Excel) 数据的问题了。那么,接下来又要解决另一个问题:当 WORD 程序读取复合文件,遇到了 xls 数据的时候,它该如何启动
2008-07-19 01:01:00
392
原创 COM 组件设计与应用1 - 起源及复合文件
一、前言 公元一九九五年某个夜黑风高的晚上,我的一位老师跟我说:“小杨呀,以后写程序就和搭积木一样啦。你赶快学习一些OLE的技术吧......”,当时我心里就寻思:“开什么玩笑?搭积木方式写程序?再过100年吧......”,但作为一名听话的好学生,我开始在书店里“踅摸”(注1)有关OLE的书籍(注2)。功夫不负有心人,终于买到了我的第一本COM书《OLE2高级编程技术》,这本8
2008-07-19 00:59:00
345
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人