090912(星期六):MFC
来源:互联网 发布:网易的for mac 版战网 编辑:程序博客网 时间:2024/04/28 17:19
一、 MFC中的Callback函数
1 如果类的成员函数是个Callback函数,必须将其置成static型以去掉隐藏的this指针。凡是由程序员设计而由Windows系统呼叫的函数,统称为Callback函数。某些Windows系统函数需要一个Callback函数作为它的一个参数,如SetTimer,LineDDA,EnumObjects。通常API在做完某种活动后或满足一定状态时调用Callback函数。
2 EnumObjects发现某个Device Context的GDI object符合指定的Type时,调用Callback函数。Callback函数必须是全局的函数或是类的一个static函数。
二、 对Idle的处理
鉴于CThread::Run()中已经把MessageGet、Dispatch和Idle都包容了,要使程序在Idle时做些事情,简单的做法就是重新实现virture函数OnIdle():
BOOL CMyWinApp::OnIdle(LONG lCount)
{
CMyFrameWnd* pWnd = (CMyFrameWnd*)m_pMainWnd;
pWnd->IdleTimeHandler(lCount);
return TRUE;
}
三、 Document Template的意义
Document一般是放置程序的Data Structure,View是显示Document的内容,Data有体有面,View就是Document的面。在Document中数值的处理用各种设计结构,链表,树,图等等,而数值在表现时就必须使用绘图工具:坐标,画刷颜色,画弧线,字体等,这些都在View中完成。其次View还负责对UI Message的收集处理。
view的表现舞台时Frame,这样的切割是为了让View独立于各种视窗,比如对MDI,SDI和OLE Document Frame,view都不需要变化,只要有Frame的变化就可以了,提高了View的独立性。使Document/View结构更稳定得处理数据。
pDocTemplate = new CMultiDocTemplate( //w6 CMultiDocTemplate规划Doc,
//View,DocFrame三者的关系
IDR_SCRIBTYPE,
RUNTIME_CLASS(CScribbleDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CScribbleView));
AddDocTemplate(pDocTemplate);
如果需要支持多种文件格式,如text和bitmap,就需要多个CMultiDocTemplate对象和多个这样的链接操作。
View就是观看Document的镜头。
- 090912(星期六):MFC
- 090926(星期六):MFC消息处理机制
- 星期六
- 星期六
- 090919(星期六):MFC消息路由4, Frame8代码分析3CWinApp的聚合情况
- 2006-3-18(星期六)
- 第十周--星期六(加班)
- 2004年2月28日,星期六(1)
- 2004年2月28日,星期六(2)
- 2004年2月28日,星期六(3)
- 2004年2月28日,星期六(4)
- 2004年2月28日,星期六(6)
- 2004年2月28日,星期六(5)
- 2004年2月28日,星期六(7)
- 今天星期六了。..( 喜德中学 )我的母校
- 实习开始的第一个星期六(实习第三天)
- 091010(星期六)基于Frame8模拟OnButtonSearch的调用过程
- 091024(星期六)CDialog和CWinApp的msdn描述
- 求已知集合中某两个或三个元素之和等于确定值问题 收藏
- 并归排序法求逆序数 收藏
- 每周四十小时,你有多少是在为自己干活?
- Facebook应吸取谷歌经验避免重蹈雅虎覆辙
- HashTable和HashMap的区别 收藏
- 090912(星期六):MFC
- JS判断浏览器是否是关闭
- MonoDevelop正式迈入跨平台时代
- 虚拟机 VMware iso系统安装 图解教程 【转】
- 开发人员一定要加入收藏夹的网站[持续更新]
- 移植QtEmbedded-4.5.2 tslib1.4 到 S3C2440
- 090913(星期天):MFC
- 解析 MFC 中的 FromHandle
- 两个变量交换的扩展思考