http://www.cnblogs.com/hocylan/archive/2008/03/13/1103624.html
一.概述
http://www.cnblogs.com/hocylan/archive/2008/03/13/1103624.html
一.概述
[来源]
首先,在对话框中创建通信控件,若Control工具栏中缺少该控件,可通过菜单Project –> Add to Project –> Components and Control插入即可,再将该控件从工具箱中拉到对话框中。此时,你只需要关心控件提供的对 Windows 通讯驱动程序的 API 函数的接口。换句话说,只需要设置和监视MSComm控件的属性和事件。
打开所需串口后,需要考虑串口通信的时机。在接收或发送数据过程中,可能需要监视并响应一些事件和错误,所以事件驱动是 处理串行端口交互作用的一种非常有效的方法。使用 OnComm 事件和 CommEvent 属性捕捉并检查通讯事件和错误的值。发生通讯事件或错误时,将触发 OnComm 事件,CommEvent 属性的值将被改变,应用程序检查 CommEvent 属性值并作出相应的反应。
[来源]
MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数, 而且在VC、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过 串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。
1.MSComm控件两种处理通讯的方式
MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。
1.1 事件驱动方式
事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm 控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。
1.2 查询方式 继续阅读通信控件MSComm使用详解
设计一个PC游戏,键盘鼠标的输入是绝不能少。 Windows也提供了诸如WM_LBUTTONDOWN、WM_RBUTTONUP等鼠标消息以及WM_KEYDOWN、WM_KEYUP等键盘输入消息。但是DirectInput中仍然提供了对鼠标键盘的支持,其原因就是DirectInput提供一个更直接更快捷的对输入设备的访问方法。就象我们在DOS下直接接管键盘中断,而不是去用什么讨厌的INT16来处理键盘输入一样(用INT16来处理键盘输入其弊端在《金庸群侠传》中显得尤为明显,人物在走路之前总要顿那么一下,就是这一下让我觉得非常之不爽!其原因我想我也不用罗嗦了)。
【来源】
游戏编程可不仅仅是图形程序的开发工作,实际上包含了许多方面,本文所要讲述的就是关于如何使用 DirectInput 来对键盘编程的问题。 继续阅读DirectInput键盘输入(2)
【来源】
对于DirectInput来说,键盘是作为一个高效的游戏控制器来处理的。如果你要输入文本,那么你可以使用Windows提供的标准服务。在独占模式中,我们是不能获取键盘数据的,我们所能获得的是WM_KEYDOWN、 WM_KEYUP和WM_CHAR消息以及由GetDeviceState和GetDeviceData所返回的输入值。在DInput例子程序中,应用 程序通过对Ctrl-F的响应就说明了这一点。 继续阅读DirectInput键盘输入(1)
http://topic.csdn.net/u/20070929/11/1376eb28-ca67-48cf-b1dc-374b9b9a8bf3.html
虚继承是为了在多继承的时候避免引发歧义,比如类A有个就是a,B继承了A,C也继承了A,当D多继承B,C时,就会有歧义产生了,所以要使用虚拟继承避免重复拷贝。
虚函数继承是解决多态性的,当用基类指针指向派生类对象的时候,基类指针调用虚函数的时候会自动调用派生类的虚函数,这就是多态性,也叫动态编联。
通俗的讲,虚继承就是为了节约内存的,他是多重继承中的特有的概念。适用与菱形继承形式。
如:类B、C都继承类A,D继承类B和C。为了节省内存空间,可以将B、C对A的继承定义为虚拟继承,此时A就成了虚拟基类。
[cce_cpp]
class A;
class B:public vitual A;
class C:public vitual A;
class D:public B,public C;
[/cce_cpp]
虚函数继承就是覆盖。即基类中的虚函数被派生类中的同名函数所覆盖。
[cce_cpp]
class parent
{
public:
vitual void foo(){cout<<“foo from parent”;};
void foo1(){cout<<“foo1 from parent”;};
};
class son:public parent
{
void foo(){cout<<“foo from son”;};
void foo1(){cout<<“foo1 from son”;};
};
int main()
{
parent *p=new son();
p->foo();
p->foo1();
return 0;
}
[/cce_cpp]
其输出结果是:
foo from son,foo1 from parent
【来源】http://scudong.blogbus.com/logs/46868663.html & 作者声明
友元函数(friend function)
1. 什么是友元函数?
一个类的私有数据成员通常只能由类的函数成员来访问,而友元函数可以访问类的私有数据成员,也能访问其保护成员
2. 友元函数的用处体现在哪里?
2.1 使用友元函数可提高性能,如:用友元函数重载操作符和生成迭代器类
2.2 用友元函数可以访问两个或多个类的私有数据,较其它方法使人们更容易理解程序的逻辑关系
3. 使用友元函数前应注意:
3.1 类的友元函数在类作用域之外定义,但可以访问类的私有和保护成员
3.2 尽管类定义中有友元函数原型,友元函数仍然不是成员函数
3.3 由于友元函数不是任何类的成员函数,所以不能用句柄(对象)加点操作符来调用
3.4 public, private, protected成员访问符与友员关系的声明无关,因此友元关系声明可在类定义的任何位置,习惯上在类定义的开始位置
3.5 友元关系是指定的,不是获取的,如果让类B成为类A的友元类,类A必须显式声明类B为自己的友元类
3.6 友元关系不满足对称性和传递性
3.7 如果一个友元函数想与两个或更多类成为友元关系,在每个类中都必须声明为友元函数
4. 注:由于C++属于混合语言,常在同一个程序中采用两种函数调用且这两种函数调用往往是相反的。类C语言的调用将
基本数据或对象传递给函数,C++调用则是将函数(或信息)传递给对象 继续阅读友元函数、友元类、访问私有数据成员、友元关系[C++]