CString s=time。Format(〃%H:%M:%S〃);//格式化时间显示格式
m_wndStatusBar。SetPaneText(m_wndStatusBar。mandToIndex(ID_INDICATOR_CLOCK);s);
CFrameWnd::OnTimer(nIDEvent);
}
void CMainFrame::OnClose()
{
// TODO: Add your message handler code here and/or call default
KillTimer(1); //删除定时器
CFrameWnd::OnClose();
}
在 CMainFrame::OnCreate 函数内调用了 CWnd::SetTimer 以设置一个计时器,SetTimer
的第一个参数指定计时器 ID 为 1,第二个参数则规定了计时器的时间间隔为 1000 毫秒即 1
秒,这样,每隔 1 秒 OnTimer 函数就会被调用一次。在 OnTimer 函数中,首先构建了一个
CTime 对象,接着调用 CTime 的静态成员函数 GetCurrentTime 以获得当前的系统时间,然后
利用 CTime::Format 函数返回一个按“时:分:秒”的格式表示的字符串,最后调用
CStatusBar::SetPaneText 来更新时间窗格显示的正文。SetPaneText 的第一个参数是窗格的索
引,对于某一个窗格 ID,可调用 CStatusBar::mandToIndex 来获得索引。在撤销主框架窗
口时应关闭计时器,因此在 CMainFrame::OnClose 函数内调用了 KillTimer 函数。
电子时钟运行结果如图 2…28 所示,在框架底部的状态栏的右方可以看到当前时间。
图 2…28 电子时钟示例程序运行结果
·38 ·
…………………………………………………………Page 48……………………………………………………………
第 2 章 应用程序基本框架
在调试程序的时候,可能常会碰到程序存在 bug 或运行错误的情况,下面将介绍处理错
误信息的一般方法。在电子时钟程序中,运行程序时可能提示如图 2…29 的错误信息。
图 2…29 电子时钟 Debug 错误信息
为了查明导致 Debug Assertion Failed 的错误代码,选择“Build|Debug|Go ”菜单命令进入
调试状态,这时通过运行时的异常可以判断出代码的大概错误位置,在 Debug 模式下的界面
如图 2…30 所示。也可以在对程序出错代码的大概估计的基础上在“可疑”代码附近设置断点
到进行调试,界面如图 2…31 所示。
图 2…30 电子时钟调试信息
图 2…31 电子时钟断点调试信息
·39 ·
…………………………………………………………Page 49……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
在断点附近处通过按键 F10 (Step Over)或 F11 (Step Into )键可以找到存在 bug 的代码。
通过观察和分析知道,在下面的这行代码中,由于 ID_INDICATOR_NUM 没有在 indicators
数组中被定义,才会导致错误。通过更改 ID_INDICATOR_NUM 为 ID_INDICATOR_CLOCK,
电子时钟运行便正常。
m_wndStatusBar。SetPaneText(m_wndStatusBar。mandToIndex(ID_INDICATOR_NUM);s);
2。6 应用程序框架中各类对象间的关系
通过从 2。1 节到 2。5 节的学习,相信读者对于利用 AppWizard 生成的应用程序框架有了
一定的了解。下面以单文档(SDI )应用程序 HelloMFC 为例对应用程序框架中各主要对象的
构造以及各对象之间的访问情况等方面进行介绍。
在 HelloMFC 应用程序中,AppWizard 生成了 4 个主要的类,这些类都是 MFC 类的派生
类,分别包含在对应的头文件以及实现文件中,这些类的对象构成了框架的核心。
1.框架窗口类及其相关的文件
框架窗口类对应应用程序的主窗口,明白这一点后就可以建立一个对这个类的感性认识
了,其定义是在头文件 MainFrm。h 中,而实现则是在 MainFrm。cpp 文件中。所有与框架窗口
向光的功能都是在这里定义和实现的。
2 .文档类及其相关的文件
文档类在应用程序中没有直观的对应关系,但是,应该明白的一点就是 MFC 框架的一
个特点就是文档视图结构 。这里可以抽象一点地来理解,比如说在 Word 中打开了一个文件,
其实,这个文件就是文档,而看到的只不过是这个文件一个视图,所以说文档提供了应用程
序显示的支持,但是真正看到的应用程序显示的则是一个视图,文档类的定义是在
“HelloMFCDoc。h ”中,而其实现则是在“HelloMFCDoc。cpp ”文件中。
3 .视图类及其相关的文件
视图类是用来显示文档对象内容的,在 Word 程序中所看到的界面就是一个视图,要修
改、画图,首先操作的对象就是视图,所以,视图类就如其名称所指出的那样,提供了从用
户角度能看到的东西。视图类的定义在“HelloMFCView。h ”中,实现是在文件“Hello
MFCView。h ”中。
4 .应用程序类及其相关的文件
MFC 应用程序的初始化,启动运行和结束都是由应用程序对象完成的 。他对应的文件是”
HelloMFC。cpp ”和”HelloMFC。h ”。
从上面的陈述中可以大致看出 MFC 应用程序对象之间的关系了。应用程序一开始生成
应用程序对象,然后,在 InitInstance 中将会创建文档模板对象(通过 CSingleDocTemplate 管
理),这样一来,应用程序就可以通过建立的模板对象来管理文档、视图、和框架窗口。
在基于文档视图结构的 Windows 程序在不同的调用环境常常需要得到各种对象的指针,
·40 ·
…………………………………………………………Page 50……………………………………………………………
第 2 章 应用程序基本框架
以实现对象间数据的交互。实现各对象之间的相互访问有如下几种方法:
o 全局函数 AfxGetApp 可以得到 CWinApp 应用类指针;
o AfxGetApp()…》m_pMainWnd 为框架窗口指针;
o 在框架窗口中 CFrameWnd::GetActiveDocument 得到当前活动文档指针;
o 在框架窗口中 CFrameWnd::GetActiveView 得到当前活动视指针;
o 在视图中 CView::GetDocument 得到对应的文档指针;
o 在文档中 CDocument::GetFirstViewPosition,CDocument::GetNextView 用来遍历所有和
文档关联的视;
o 在文档中 CDocument::GetDocTemplate 得到文档模板指针;
o 在多文档界面中:CMDIFrameWnd::MDIGetActive 得到当前活动的 MDI 子窗口。
2。7 本章小结
本章主要对通过 MFC 应用程序向导(AppWizard )创建的应用程序框架作了介绍。由于
读者是可能第一次接触到 MFC 编程,因此首先对工程及工作区的概念及创建方法进行了
小说推荐
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 其他
- 最新章:第4章
- oracle从入门到精通(PDF格式)
- -Page 1-Oracle 从入门到精通-Page 2-资源来自网络,仅供学习 Oracle 从入门到精通一、SQL 8
- 其他
- 最新章:第37章
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 其他
- 最新章:第31章
- VB2008从入门到精通(PDF格式英文版)
- -Page 1(R)The eXperT’s Voice inBeginningVB 2008From Novice to ProfessionalChristian Gross-Page 2-Page 3-Beginning VB 2008From Novice to Professional■C
- 其他
- 最新章:第214章
- C语言设计
- 作者:谭浩强1 C 语言概述1.1 C语言的发展过程1.2 当代最优秀的程序设计语言1.3 C语言版本1.4 C语言的特点1.5 面向对象的程序设计语言1.6 C和C+1.7 简单的C程序介绍1.8 输入和输出函数1.9 C源程序的结构特点1.10书写程序时应遵循的规则1.11C语言的字符集1.12
- 文学名著
- 最新章:第45章
- 设计成婚:不入豪门
- 作者:海未央《设计成婚2:名门新娘》作品介绍《名门新娘》介绍:她是骆家收养的孤女,性格因为受他的影响,变得有些古灵精怪,也懂得是非之分!他说他的一切只为他而努力,可是为什么要拒绝自己呢?什么?没有满十八岁?那今天生日,够十八岁了吧?什么,还太小?太过分了,这不是耍着自己玩吗?嘿嘿,有个邪恶的老师,那
- 魔法玄幻
- 最新章:第196章
- 玄学,从入门到放弃
- 《玄学,从入门到放弃》作者:李传言文案:周诣一手拿着卜卦,一手拿着《演员的自我修养,叹息良久。他本是百年前观天占星的玄术师,谁知却一朝重生现代。他只想平淡地生活下去,可天不遂人愿,他注定将在这末法时代掀起波澜!成就一代影帝!谢千仇沉默地看着他…大师,你卦和书都拿倒了#玄学,从入门到放弃,入土,删库跑
- 魔法玄幻
- 最新章:第86章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 其他
- 最新章:第143章
- 要你言听计从
- 作者:决明第一章哈士奇,没有护卫看家的本领,对主人、客人甚至是闯空门的恶人都一样友善,咬着皮球跟小偷一块玩你丢我捡也不用太惊讶,时常被人认为忠诚度不足。贺世祺背靠在冰冷玻璃落地窗前,一整间屋子都是伸手不见五指的黑暗,也好,反正他现在什么也不需要看到,只要耳朵还有听觉就好,顺便听听贴在耳边的手机里还要
- 都市言情
- 最新章:第28章