个人考勤软件开发实例配套代码 2.1版(Update)

胸骄67谂侵

胸骄67谂侵

2016-01-29 11:55

个人考勤软件开发实例配套代码 2.1版(Update),个人考勤软件开发实例配套代码 2.1版(Update)

个人考勤软件开发实例(Update)

作者:YangLanGuang

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/cyuyanjiaocheng/)

下载本文源代码

更新说明:自拙作 attendance( 2.0 版 ) 个人考勤软件登出后,不时有网友来信交流,最近有网友指出程序中的一个缺陷:在打印预览窗口中工具条按钮的命令状态不能改变。现在这个问题已基本解决。现将改好的源代码(可以算作2.1版)发布出来,同时对说明文档进行了增补(第10点说明)。

这个程序是一个个人考勤软件,它从系统时钟获取时间信息,只要上下班时按时在当日考勤栏内点击相应的栏目标题即可逐日记录下个人每天的工作时间,按月统计汇总,按年形成文件.可以随意查看过去的记录,也可把记录按月打印出来.在年汇总栏内可以选择要查看或打印的月份。 这个小程序是我的一个习作,希望与感兴趣的同好切磋交流。

本程序是一个基于对话框的实用程序,在基于对话框界面的程序中实现打印和打印预览是采用了非常规MFC方法。 基于对话框的程序原本是不含框架类CFrameWnd和视类CView对象的,为了实现打印和打印预览,需要在主对话框对象中创建子框架对象CChildFrame,再在子框架中创建子视类对象CChildView,打印和打印预览就在CChildView中完成。这部分内容基本上直接取自北京希望电子出版社出版的《Vsual C++ 编程高手》一书中的例185,但要把书中的主框架CMainFrm改为子框架CChildFrame而置于主对话框管理之下。

具体做法如下:
1.在创建应用程序实例的InitInstance()函数中创建我们的主对话框对象:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/cyuyanjiaocheng/)
CAttendanceDlg dlg;
之后立即把这个对象的指针信息存入CWinApp::m_pMainWnd 和附加的m_pMiddle中备用:
m_pMainWnd = &dlg;m_pMiddle = &dlg;
2.在ClassWizard中为主对话框类导入OnCreate()函数,在其中创建子框架对象CChildFrame
CChildFrame* pFrame = new CChildFrame;m_pChildFrame = pFrame;pFrame->LoadFrame(IDR_MAINFRAME,WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL,//,m_pMainWndNULL);
暂时将其显示状态置为隐藏: m_pChildFrame->ShowWindow(SW_HIDE);

3.在子框架对象CChildFrame的OnCreate()函数中创建子视类对象CChildView
CCreateContext context;context.m_pNewViewClass = RUNTIME_CLASS(CChildView);context.m_pCurrentFrame = this;context.m_pCurrentDoc = NULL;context.m_pLastView = NULL;m_pView = STATIC_DOWNCAST(CChildView, CreateView(&context)); //CreateView(&context);if(m_pView != NULL){m_pView->ShowWindow(SW_HIDE);//暂时将其显示状态也置为隐藏SetActiveView(m_pView);}
4.在主对话框的打印或打印预览处理函数中只要向子框架CChildFrame发送相应的消息即可: 对于打印函数为:
m_pChildFrame->SendMessage(WM_COMMAND, ID_FILE_PRINT);
或对于打印预览函数为:
m_pChildFrame->ShowWindow(SW_SHOW);//将子框架CChildFrame显示状态置为显示m_pChildFrame->SendMessage(WM_COMMAND, ID_FILE_PRINT_PREVIEW);//打印预览
5.在子框架CChildFrame的打印预览处理函数中需要将CWinApp::m_pMainWnd暂时替换为子框架CChildFrame的指针,并把子视类对象的显示状态激活后调用子视类对象的打印预览处理函数
CAttendanceApp* app=(CAttendanceApp*)AfxGetApp();app->m_pMainWnd = this;//应用程序主窗口临时替换为子框架窗口m_pView->ShowWindow(SW_SHOW);SetActiveView(m_pView);m_pView->OnFilePrintPreview(this);
6.打印预览结束退出之前必须恢复原有的显示状态,并将CWinApp::m_pMainWnd恢复为主对话框:
pParent->ShowWindow(SW_HIDE);//将子框架CChildFrame显示状态重新置为隐藏pParent->UpdateWindow();CAttendanceApp* app=(CAttendanceApp*)AfxGetApp();app->m_pMainWnd = app->m_pMiddle;//应用程序主窗口恢复为主对话框窗口app->m_pMiddle->UpdateWindow();
展开更多 50%)
分享

猜你喜欢

个人考勤软件开发实例配套代码 2.1版(Update)

C语言教程 C语言函数
个人考勤软件开发实例配套代码 2.1版(Update)

个人考勤软件开发实例

C语言教程 C语言函数
个人考勤软件开发实例

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

7个软件开发原则

编程语言 网络编程
7个软件开发原则

Linux下的软件开发

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
Linux下的软件开发

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

软件开发成功12法则

编程语言 网络编程
软件开发成功12法则

软件开发中运用到的编号

电脑网络
软件开发中运用到的编号

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

三维实体速成最简单入门法[第二集]

三维实体速成最简单入门法[第二集]

CAD打造梅花螺丝刀头(原创)

CAD打造梅花螺丝刀头(原创)
下拉加载更多内容 ↓