深入浅出话窗体(一)
——窗体事件模型(上)
作者:CSDN 刘铁猛
小序:
工作中最大的挑战并不是那些Mission Impossible,而是你需要一边保持安静、平衡的心态以专注于工作,一边对抗公司体制、社会经济和人际环境对这种心态的破坏——这是对儿永远也解不开的矛盾。
正文:
记得我在前面一篇文章里提到过:垒砖头垒多少年也成不了建筑师——仍然只会砌墙。同样,堆控件堆多少年也成不了程序员——仍然只会拼凑窗体。成为建筑师的关键在于学习建筑的结构,成为程序员的关键则在于了解程序的结构。今天,就让我们告别在窗体上堆控件,剖析一下窗体与窗体上控件关系——特别是事件的由来以及事件激发(Event Fire)与事件响应(Event Handling)之间的联系。
事件的由来
传统的面向对象概念中是没有事件(Event)这个东西的,有的只是值域(Field)和方法(Method)。那么事件又是怎么来的呢?在传统的面向对象编程中,如果一个类想调用另一个类的方法,程序员有两种方法:
1. 在一个类的方法里通过另一个类的方法名进行直接调用,看上去会是这样:
#include
<
iostream
>
class A
{
public :
void Method()
{
std::cout << " This is A. " << std::endl;
}
};
class B
{
public :
void Method(A arg)
{
arg.Method(); // B与A紧密耦合在一起
}
};
int main( int argc,
class A
{
public :
void Method()
{
std::cout << " This is A. " << std::endl;
}
};
class B
{
public :
void Method(A arg)
{
arg.Method(); // B与A紧密耦合在一起
}
};
int main( int argc,