王朝网络
分享
 
 
 

个人考勤软件开发实例

王朝vc·作者佚名  2006-01-17
宽屏版  字体: |||超大  

个人考勤软件开发实例

作者:YangLanGuang

下载本文源代码

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

这个小程序是我的一个习作,希望与感兴趣的同好切磋交流。

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

C++ 编程高手》一书中的例18\05,但要把书中的主框架CMainFrm改为子框架CChildFrame而置于主对话框管理之下。

具体做法如下:

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

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_pMainWnd

NULL);

暂时将其显示状态置为隐藏: 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();

这些后处理工作放在CWrapperView::OnEndPrintPreview(..)函数中的结尾处完成。

7.最后还要为子框架创建一个标识为IDR_MAINFRAME的菜单资源,其中只需要打印和打印预览两项即可。

8.打印的内容和页面布局都放在CChildView::OnDraw(CDC*

pDC)函数中完成。

9.函数CAttendanceApp::SetPrntOrientation()是用来强制设定打印方向为纵向的,在打印或打印预览中先要调用它。如果要设为横向则只要把其中的

DMORIENT_PORTRAIT 替换为 DMORIENT_LANDSCAPE 即可 阅读以上说明请参照程序的源代码。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有