摘要: 使用过MSN的人应该知道,目前有针对MSN的外壳程序MSNShell。使用Skype4Com API你也可以轻松的开发一个SKYPEShell程序。Skype也是世界上最开放,最具创新意识的IM工具,他提供了Skype API, Skype4COM, Skype4Java几种形式的开发接口给Skype爱好者编写Skype的交互程序或者Skype的插件。Skype中文官网:http://skype.tom.com/Skype全球官网:http://www.skype.com/Skype全球开发者社区:http://developer.skype.com/SkypeShell下载链接:http:/ 阅读全文
posted @ 2011-04-15 16:18 山河 阅读(653) 评论(0) 推荐(0) 编辑
摘要: 早在两年前我就已经能很熟练的运用完成端口这种技术了,只是一直没有机会将它用在什么项目中,这段时间见到这种技术被过分炒作,过分的神秘化,就想写一篇解释它如何工作的文章.想告诉大家它没有传说中的那么高深难懂!有什么错误的地方还请高人指正.转载请注明出处及作者,谢谢!以一个文件传输服务端为例,在我的机器上它只起两个线程就可以为很多个个客户端同时提供文件下载服务,程序的性能会随机器内CPU个数的增加而线性增长,我尽可能做到使它清晰易懂,虽然程序很小却用到了NT 5的一些新特性,重叠IO,完成端口以及线程池,基于这种模型的服务端程序应该是NT系统上性能最好的了.首先.做为完成端口的基础,我们应该理解重叠 阅读全文
posted @ 2011-04-15 16:17 山河 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 1、Qt提供了多类操作系统平台下的SDK,SDK中的Qt库提供相同的接口,同时提供了一个跨平台的IDE Qt Creator.如此,只要使用Qt Creator编写一套代码于不同的装有相应SDK的操作系统上编译即可实现软件的跨平台。2、他具有一次编码到处编译的特点和java的一次编译到处运行不同。3、使用signal/slots 代替callback协调各个元件之间的工作。4、qt的信号槽机制相当于windows消息机制的消息与消息响应函数,所以说qt使用连接完成了信号与槽的关联进而支持完成了回调。5、 阅读全文
posted @ 2011-04-15 16:16 山河 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 1. 引言Windows 在操作系统平台占有绝对统治地位,基于Windows 的编程和开发越来越广泛。Dos 是过程驱动的,而Windows 是事件驱动的[6],这种差别的存在使得很多Dos 程序员不能习惯Windows 的程序开发。而很多Windows 程序开发人员也只是对消息运行机制一知半解,想要掌握Windows 编程的核心,必须深刻理解消息机制。事件驱动围绕着消息的产生与处理展开,事件驱动是靠消息循环机制来实现的。也可以理解为消息是一种报告有关事件发生的通知,消息是Windows 操作系统的灵魂,掌握了消息运行机制就掌握了Windows 编程的神兵利器。本文将首先阐述Windows 的 阅读全文
posted @ 2011-04-15 16:15 山河 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 1、Windows事件驱动机制 我们当中不少使用VC、Delphi等作为开发语言的程序员是一步步从DOS下的Basic、C++中走过来的,而且大多在刚开始学习编程时也是先从DOS下的编程环境入手的,因此在习惯了DOS下的过程驱动形式的顺序程序设计方法后,往往在向Windows下的开发环境转型的过程中会对Windows所采取的事件驱动方式感到无法适应。因为DOS和Windows这两种操作系统的运行机制是截然不同的,DOS下的任何程序都是使用顺序的、过程驱动的程序设计方法。这种程序都有一个明显的开始、明显的过程以及一个明显的结束,因此通过程序就能直接控制程序事件或过程的全部顺序。即使是在处理异常时 阅读全文
posted @ 2011-04-15 16:11 山河 阅读(673) 评论(0) 推荐(0) 编辑
摘要: 1. 所有变量定义位于函数开始处。2. 尽量避免全局变量,全局变量需于实现文件中定义,头文件中extern声明。3.浮点零值比较采用区间值。4.保证正确的前提下尽量使用移位运算。5.If语句、switch语句优先处理出现概率大的情况。6. 指针与NULL比较反写如:NULL==p。7. 循环嵌套时最长的循环放内层短的放外层。8.尽量不在循环体内修改循环变量。9.凡是无返回值、无参数、任意类型指针参数的函数均使用void或void指针。10.适当使用const,使用目的限于节省空间、提高效率、不允许修改或可能产生的函数参数修改。11.对于可变、多变的寄存器变量、多线程共享变量,在经过代码优化处理 阅读全文
posted @ 2011-04-15 16:10 山河 阅读(395) 评论(0) 推荐(0) 编辑
摘要: 回调函数是一个很有用,也很重要的概念。当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数(简单如一按钮的事件相应函数)。回调函数在windows编程使用的场合很多,比如Hook回调函数:MouseProc,GetMsgProc以及EnumWindows,DrawState的回调函数等等,还有很多系统级的回调过程。之所以产生使用回调函数这个想法,用VC写的一个DLL程序进行一些时间比较长的异步工作,工作完成之后,需要通知使用DLL的应用程序:某些事件已经完成,请处理事件的后续部分。开始想过使用同步对象,文件影射,消息等实现DLL函数到应用程序的通知,后来突然想到可不可以在应用程序端先写 阅读全文
posted @ 2011-04-15 16:10 山河 阅读(338) 评论(0) 推荐(1) 编辑
摘要: c++语言本身是不能删除文件或文件夹的,他们是windows操作系统里的东西,所以得借助其api函数。其一:使用shell 接口:void FileDelete(CString directory){SHFILEOPSTRUCT shFileOp;char strCurrentPath[MAX_PATH];memset(&shFileOp,0,sizeof(shFileOp)); GetCurrentDirectory(MAX_PATH,strCurrentPath);strcat_s(strCurrentPath,sizeof(strCurrentPath),directory);s 阅读全文
posted @ 2011-04-15 16:09 山河 阅读(3383) 评论(0) 推荐(0) 编辑
摘要: 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin, isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是 SendMessage。该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对方处理完毕以后,该函数才把消息处理函数所返回的 LRESULT值返回给调用者。 异步 异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。以 CAsyc 阅读全文
posted @ 2011-04-15 16:08 山河 阅读(152) 评论(0) 推荐(0) 编辑
摘要: winsocket的同步阻塞结合多线程方便简单设计节点服务器,但是真要弄出个高效并发的服务器还得考虑下异步阻塞或非阻塞机制。winsocket引入了几个套接字I/O模型,分别如下:1.select模型:避免了异步机制实时返回WSAEWOULDBLOCK 的错误(无功而返),该方法通过定义套接字、套接字集合变量,循环清除套接字集合变量、将套接字添加至集合,使用 select函数选择符合参数规定条件的套接字,保留符合条件的套接字删除不符合条件的,依据其返回值判断所定义的套接字是否还在套接字集合里边,如果在则说明选到了符合条件的套接字,可对该套接字进行操作。2.WSAAsyncSelect异步I/O 阅读全文
posted @ 2011-04-15 16:07 山河 阅读(420) 评论(0) 推荐(0) 编辑