一、CWind类
1.工具/提示支持
为用户提供简短帮助
a.EnableToolTips打开提示功能
OnToolHitTest判断是哪个字控件要显示Tooltip
b.UpdateData (DDV 对话框数据交换) 把MFC成员变量值给控件,或者控件的值交换给成员变量
c.UpdateDialogControls 比如对话框改变大小 刷新对话框控件
d.窗口居中
e.RunModalLoop ContinueModal EndModalLoop
暂时接管线程的消息循环,可以做消息过滤,比如你手动实现模态对话框
你打开对话框,你只有对这个窗口的消息才处理,其他所有的都过滤掉.
二、CFrameWnd类 框架窗口
1.活动框架视图文档支持
a.GetActiveDocument()获取活动激活的文档
GetActiveView()获得活动激活的视图 SetActiveView()设置活动激活视图
GetActiveFrame() 获得激活的框架
b.GetTitle() SetTitle() 设置框架标题
c.SetMessageText() 设置消息提示框的标题
d.BeginModalState() EndModalState() InModalState()
辅助对话框模态状态,模态对话框弹出来的时候,框架窗口是不激活的
但是,不激活的时候,你点击他会闪动,提示用户我是不激活的,
都需要上面的API来控制这些状态.
2.框架窗口和视图的关系
a.最外层是Frame Window Object 框架窗口对象,显示整个框架窗口.
b.View Object是一个子窗口,实际上就是客户区,被View视图类分配,
共享了框架窗口的DC,框架窗口包着视图.视图可以有各种显示的内容.
c.View视图负责和Document通讯,这就是一个典型的文档视图
应用框架.
3.更多的是在派生类里的支持,尤其是CMDIFrameWnd
他就是说对自己的客户区划分,有些客户区可工具条,给面板,
有些则要给子框架,还有一些客户区要分配给状态栏,菜单条.
三、CViwe类 视图类
1.派生类必须重载方法
a.virtual void OnDraw(CDC* pDC) = 0;
OnPaint里调用的子方法,OnPaint之前还要对DC做一个预处理
区分你是打印环境,还是打印预览,还是屏幕显示,OnDraw里面
你就不用再去区分现在是打印状态,我的做标书是什么样子等待.
OnDraw就是专心的进行绘制,图形绘制,信息显示.
绘制需要的参数,做标什么的,都在OnPrint里完成
OnPaint()方法在调用OnDraw方法向显示器输出之前需要做大量的准备工作,
其中之一就是准备一个跟显示器相关的DC对象,并把此对象传递给OnDraw方法,让其用此对象向显示器输出
OnPrint()方法在调用OnDraw方法向打印机输出之前同样作很多准备工作,
其中之一就是准备一个跟打印机相关的DC对象,并把此对象传递给OnDraw方法,让其用此对象向打印机输出。
b.virtual void OnUpdate(CView* psender,LPARAM lHint, CObject* pHint);
在文档内容发生变更的时候,他就通知视图改变你的显示,这个往往是用在
一个文档多个视图的时候.其中有个视图有个用户在这个视图操作了一个东西,
那就会接到OnUpdate消息,psender是谁发起改变的操作,如果是NULL就是改变
所有的视图,如果某个视图发现psender和自己的this是相等的,就表示是自己,
自己则是已经更新过了,则不需要再次更新. 频繁调用会较低效率.
2.其他重要方法
a.GetDocument()得到视图对应的文档
b.OnActivateView()View激活的时候
c.OnActivateFrame()视图所在框架激活的时候
d.其实这两个激活任选其一即可,不用再两个内都写代码
因为View实际就代表了框架窗口的客户区,你框架窗口激活,
你客户区也必须激活,你客户区激活框架窗口也激活
3.View种类特点和用途(可用的派生类)
a.CEditview 简单文本编辑视图 记事本
b.CFromView 带丰富控件的类对话框视图 数据库应用
c.CHtmlEditviw HTML编辑显示视图 HTML编辑器
d.CHtmlView HTML显示视图 电子邮件应用.浏览器
e.CListView 简单列表视图 类电子表格应用(需改进)
f.CRichEditview RTF文本编辑视图 写字板等
g.CScrollView 带滚动条的简单视图 绘图冉家,CAD画板
h.CTreeView 树形控件视图 显示树形信息的应用
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。