- 博客(8)
- 资源 (3)
- 收藏
- 关注
原创 在C++中实现多播委托(3)
这个代码生成器真的就那么好吗?带来的问题是,每次需要新的多播委托就要重新生成一个,这样无疑是比较麻烦的,不仅如此,而且还不能调用成员函数,这是非常失望的,所以代码的构架有必要再次去修改一下。想象一下,当一个成员函数需要作为回调函数时,怎么办?也许有人说改为static的,OK,那我想使用函数成员怎么办?声明一个全局this指针,好的,那如果这个类有多个实例呢?。。。没有办法了吗,有。举个例子:te
2012-01-07 17:19:58 498
原创 在C++中实现多播委托(2)
上回说到任意参数和成员函数的问题。我们先来看任意参数。在c#中可以声明这样的泛型委托:public delegate void Action(T t);public delegate void Action(T1 t1,T2 t2);public delegate void Action(T1 t1,T2 t2,T3 t3);...我们注意到,像c#是支持同名的泛型的,只要个数不一样就O
2012-01-07 02:05:38 572
原创 在C++中实现多播委托(1)
【引言】看了很多文章介绍多播委托的实现,始终无法令我满意,最近的框架需要这样的东西,才逼迫我写一个出来。如果熟悉.net的话,会发现使用委托是如此的简单,轻而易举的实现观察者模式,以c#为例,类似这样声明一个委托:public delegate void MyDelegate(char c); 看起来似乎像函数指针,但实际上不是这样,只能说是形似神不似,c#编译器编译这段代码的时候,为这个
2012-01-07 01:33:27 926
原创 使用c#创建windows窗口(基于api)
看到这个标题,你也许会惊讶:c#也能这样创建?是的,没错,大多数使用API来创建窗口的是c/c++,当然也有其他的语言,但是几乎没有看到使用c#来创建的(不包括.net框架的),因为.net有着非常高效的开发方式,所以大部分人选择了规避。传统的win32窗口程序入口点是 WinMain 函数,但是我们在使用c#开发程序的时候,无论是控制台还是窗口应用程序,入口点永远是 Main 函数,我们熟悉
2011-12-24 20:28:58 2918 2
原创 基于CS模式的聊天室(2)
那我们如何设计这个类呢?为了通知到使用者,我们必须设计为类似事件通知的方式,也就是相当于.net的委托。 我们新建一个类,叫“CTcpClient”,继承 CAsyncSocket。 然后我们在这个类的上面 声明2个函数指针,用来作为事件的通知。代码如下:class CTcpClient;typedefvoid (*pSocketEvent)(CTcpClien
2011-12-05 20:40:14 667
原创 基于CS模式的聊天室(1)
说起网络编程,大部分人使用的都是 winsocket,我觉得这样不利于初学者来学习,对于初学者来说,应该先学会使用更加方便的socket对象。那么封装了winsocket的有两个MFC类:CSocket、CAsyncSocket。我建议从CAsyncSocket开始学起。 CAsyncSocket,顾名思义,就是异步套接字。如果想做服务端,Listen和Accept 这两个函数是必不可少的。
2011-12-04 13:54:43 1934 2
基于TCP的聊天室(c++、MFC)
2011-12-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人