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

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

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

本程序是一个基于对话框的实用程序,在基于对话框界面的程序中实现打印和打印预览是采用了非常规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()函数中创建子视类对象CChildViewCCreateContext 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);//打印预览

时间: 2024-10-27 05:10:56

个人考勤软件开发实例(Update)的相关文章

个人考勤软件开发实例

这个程序是一个个人考勤软件,它从系统时钟获取时间信息,只要上下班时按时在当日考勤栏内点击相应的栏目标题即可逐日记录下个人每天的工作时间,按月统计汇总,按年形成文件.可以随意查看过去的记录,也可把记录按月打印出来.在年汇总栏内可以选择要查看或打印的月份. 这个小程序是我的一个习作,希望与感兴趣的同好切磋交流. 本程序是一个基于对话框的实用程序,在基于对话框界面的程序中实现打印和打印预览是采用了非常规MFC方法. 基于对话框的程序原本是不含框架类CFrameWnd和视类CView对象的,为了实现打印

C#软件开发实例.私人订制自己的屏幕截图工具(六)添加配置管理功能

上一篇:C#软件开发实例.私人订制自己的屏幕截图工具(五)针对拖拽时闪烁卡顿现象的优化 添加设置窗口 在解决方案资源管理器窗口中,右键单击项目名称,在弹出的菜单中选择:添加>Windows窗体: 输入窗体名称"frmSetup": 设置窗体的Text属性为"设置",设置窗体的Size为"472, 276",StartPosition属性为"CenterScreen". 添加设置标签页: 左侧工具箱>窗器:双击&qu

C#软件开发实例.私人订制自己的屏幕截图工具(九)使用自定义光标,QQ截图时的光标

在使用QQ的截图功能的时候,是不是觉得它的光标很酷呢?今天就说一下怎么应用自定义光标,在我们的截图工具中使用QQ截图的光标. 打开资源: 切换到文件资源视图: 打开资源文件目录,将光标文件复制到此目录下: 所需光标文件下载:C#软件开发实例.私人订制自己的屏幕截图工具中使用的光标文件 选中Resources目录,刷新,显示出刚刚复制进来的光标文件: 选中光标文件,拖动到资源的文件视图中: 资源资源名称中的单词第一个字母改为大写. 光标预览: 在Form1类中添加私有变量: #region 自定义

C#软件开发实例.私人订制自己的屏幕截图工具(七)添加放大镜的功能

上一篇:C#软件开发实例.私人订制自己的屏幕截图工具(六)添加配置管理功能 由于截图时可能需要精确截取某一部分,所以需要放大镜的功能,这样截取的时候才更容易定位截图的位置. 添加PictureBox,name属性设置为"pictureBox_zoom": 在"Form1_Load"事件处理函数中添加以下代码: //设置放大镜的大小 this.pictureBox_zoom.Width = this.ZoomBoxWidth; this.pictureBox_zoom

C#软件开发实例.私人订制自己的屏幕截图工具(十)在截图中包含鼠标指针形状

在写一此帮助说明类的文档时,截取的图片如果还有鼠标的指针形状,看起来就更直观更友好一些.接下来就讲一下如何在截图中包含鼠标指针形状. 上一篇:C#软件开发实例.私人订制自己的屏幕截图工具(九)使用自定义光标,QQ截图时的光标 添加结构CURSORINFO: [StructLayout(LayoutKind.Sequential)] struct CURSORINFO { public int cbSize; public int flags; public IntPtr hCursor; pub

iPhone拍照/摄像软件开发实例

  这个App基于lolfriend的源码改写,完全使用官方API.目前还没实现的功能有:替换 UIImagePickerController的cameraOverlayView;滤镜.其他效果如图,我的测试环境是3.1.2的虚拟机和 3.1.2的iPhone 3GS. 开发实例-iphone7双摄像头拍照"> 附件: CameraDemo.zips 帖子如下: 为什么我联机开发如此简单呢?? 其实今天有点激动的,因为可以通过XCode连接自己的iPod Touch进行程序的运行了. 一般

C#软件开发实例.私人订制自己的屏幕截图工具(一)功能概览

概述 开发该软件的原因主要是想订制实现自己想要的功能,比如:自动保存,气泡提示框类型的标注功(主要用于功能说明文档的写作)能. 托盘图标及菜单 添加托盘图标,是因为有些功能还是需要使用菜单呼出,不能什么都用快捷键. 有些东西(菜单.提示框)可能通过快捷键截图的时候截取不到,所以设置了"延时5秒截图"功能. 基本设置 QQ的截图热键是"Ctrl + Alt + A",为了不和它冲突,这里默认使用"Ctrl + Shift + A"作为快捷键. 有些

C#软件开发实例.私人订制自己的屏幕截图工具(二)创建项目、注册热键、显示截图主窗口

开发环境 操作系统:Windows Server 2008 R2 集成开发环境(IDE):Microsoft Visual Studio 2010 开发语言:c# 创建项目 文件>新建>项目 .NET Framework可以选择2.0版本,也可以选择4.0版本: 项目类型选择:Windows窗体应用程序 输入项目名称,确定 项目创建成功,如下图: 修改主窗体属性 修改窗体的"FormBorderStyle"属性为"none",实现一个没有边框的窗体 修改

C#软件开发实例.私人订制自己的屏幕截图工具(四)基本截图功能实现

实现原理 基本截图的功能主要靠响应主窗体的鼠标按下.鼠标移动.鼠标抬起几个事件的功能来实现的.截取的图片区域使用"Label"组件来显示,需要重新实现"Label"组件的"Paint"方法. 左键单击开始截图,右键单击取消截图,双击鼠标左键完成截图,将截取的图片保存到Windows剪贴板中. 添加"Label"组件 工具箱>公共组件>双击"Label"组件,修改组件属性: Name=lbl_Cu