三种消息的分类及其对应的响应类
理解类和资源的关系,通常类中会有一个成员变量作为指向资源的句柄,这样可作为参数传给类的成员函数
通常类对象不能定义为局部变量,否则对象作用的作用域结束后(通常为右花括号)对象会被析构,相应资源也会被销毁
就看不到应该具有的显示效果
声明为类的成员变量,也可以在局部变量的情况下调用Detach函数解除对象与资源的绑定
菜单 子菜单 菜单项 的对应关系,掌握用ID和Position两种方式访问菜单项的方法
CMainFrame为CView的父类,其覆盖在前者的客户区上,标准菜单是属于CMainFrame的资源,创建时在其客户区上显示
可以自定义菜单(静态或者动态),并且定义其属于的类,有时候需要将其分配给Cview类(如右键弹出菜单)
更换显示菜单的方式是先将菜单赋空,然后再调用LoadMenu函数
让菜单栏重绘调用cwnd::DrawMenuBar
CDC类中封装了与绘图相关的操作,一般绘图的基本逻辑先是创建一个“工具”给一个窗口,根据相应设置执行绘图操作,而无须关注绘图
操作底层的细节
CFrame::GetActiveView()获得当前视图对象的指针,CFrame中打开的多个view都是他的子对象,掌握MFC中Doc APP View是通过框架类三个实例对象关联在一起的
消息路由路径为:首先根据消息为命令或者通告消息进行分流
然后 在后面onCmdMessage()函数中会调用一个基类的版本OnCommand,在这个函数中就会根据预定义的顺序进行消息路获得相应,这样响应优先顺序是确定的,要在此优先权中的窗口类中捕获消息,可以给类申明一个虚函数OnCommand,在里面捕获消息并进行相应处理(如CMainFrame拦截CView),在这个函数内部可以考虑是否再调用基类的版本(调用的话,消息路由会重新按顺序进行,不调用其他类被屏蔽,无法捕获到消息)
构建DC绘图一般要在CView窗口上,CMainFrame被覆盖,绘图显示不了