`
tibaloga
  • 浏览: 865541 次
文章分类
社区版块
存档分类
最新评论

MFC学习笔记

 
阅读更多

1.Oncreate函数目前来看只运行了一次;


2.对于隐藏的this指针,不是类中的函数成员。当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行


3.而当类中有虚函数是系统自动增加一个虚函数指针成员;


4.消息大部分都是通过该类的基类进行处理;


5.MFC机制:首先由一个全局变量应用程序对象theApp启动--》构造函数的调用从基类开始初始化-分配内存空间--》AfxWinMain入口--》获取pAppAfxGetApp()--》开始初始化基类->InitApplication()<内部管理的>和基类->InitInstance()--》ProcessShellCommand((虚函数)调用子类InitInstance()--》开始注册窗口类AfxEndDeferRegisterClass()<之前系统事先设计了一些窗口类,有就直接注册即可>(单文档有特殊性,提前注册了)--》最终调用了RegisterClass()--》调用PreCreateWindow()<用来进行注册的>--》最终又调用RegisterClass()--》然后CreateWidow()--》其中又调用了PreCreateWindow()<用来改变窗口,他是一个虚函数,如果派生类改写了该函数则调用子类PreCreateWindow()>)窗口创建完毕--》ShowWindow()--》UpdateWindow()--》run()消息循环;子类到基类基类到子类基类中完成窗口的整个处理和消息的循环最终调用的还是SDK中的函数来产生和循环


6.一切的基本原理(设计注册创建显示更新消息循环都包含在基类当中)有没有变


7.消息映射:系统接收一个消息分析消息中的句柄--》然后将句柄映射到相对应的类对象中--》将该消息的响应通过该类传递到基类中--》再由基类中通过消息循环调用--》WindowProc再调用-》OnWndMsg进行真正的消息路由并判断有没有消息响应函数(声明,响应宏。。)-->有就调用相关的响应函数(孙鑫四18:11);


8.可以使用虚函数进行消息的响应,但因为虚函数表过于庞大。所以微软使用了消息响应的机制避免了空间上的浪费;

每一个窗口类中在它的

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics