当前位置: 首页 > 图文教程 > 开发语言 > VC++ > KVIP考勤系统

VC++
在类VC的界面实现中加入目录树
软件换肤技术在 BCB 中的实现
利用非模窗口生成MDI介面
报表输出轻松搞定
Windows 中不规则窗体的编程实现
解说Win32的窗口子类化
使用测试优先方法开发用户界面
一个简单的登录对话框的实现
一个简单的日记本程序
从资源中加载皮肤
一个在RichEdit中添加表情图象的类
ActiveSkin 4.3 软件换肤在VC中的实现
一种另类“关于(About)”对话框的动态显示方法
对话框打印预览及打印
关于如何换肤、子类化的解决方案
制作 MSN、QQ 的消息提示窗口
如何对 BCGControlBarPro 进行换肤
定制个性化的对话框窗口类
改变窗口中的光标形状
更新MFC中的视图,跟踪.NET Framework中的事件

VC++ 中的 KVIP考勤系统


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 45 ::
收藏到网摘: n/a

KVIP考勤系统

作者:Kelvin

下载源代码

最近用VC重写了一个几年前用PowerBuiler写的软件。软件功能并不多,主要是我模仿PB做了几个通用基类,还有这几年收集的一些东东,以下是程序中使用到的主要的几个类:

1、ADOxxxx是别人写的一个数据库类,具体怎么用去问作者吧。
2、CPreGraphic是实现绘制的类,DrawText()等
3、CPrePrint是控制打印机的类,CPrintDialog等
4、CDataWin是实现功能的主要类,它把VC在IDE介面中设计的窗口转换成报表
5、CDlgDoc //简单页
6、CListDoc //列表页

使用方法:
1、在工程中加入ADO、DataWin目录中的所有文件
2、在App中加入对COM的支持
App::InitInstance()加入CoInitialize(NULL);
App::ExitInstance()加入CoUninitialize();
3、生成一个CDataWin类的实例

CDataWin m_dlg;m_dlg.Create(IDD_DIALOG1, this); //创建m_dlg.Init();// m_dlg.SetDoubleRam(TRUE); //双缓存,提高显示速度// m_dlg.SetPrintView(FALSE); //是否模拟显示CRect rect; //定位GetClientRect(&rect);rect.DeflateRect(10, 50, 10, 50);m_dlg.MoveWindow(rect,FALSE);m_dlg.ShowWindow(SW_SHOW);
4、执行打印
m_dlg.OnPrint("Title1"); //打印项目名称,什么都没关系
技术细节

在IDE窗口中加入三条PROGRESS,把窗口分成4个区域(页头、表体、表尾、页尾)。在生成窗口后CDataWin会取出窗口中所有控件的位置、类型等,然后隐藏控件。CDataWin根据这些信息去连结数据库,取出数据并显示或打印出来。
a)标题是SQL命令
b)=Name 等号+数据库表项的名称
c)其它为一般显示。
主要初始化函数Init()包括以下功能:
InitGraphic(); //创建绘图类ResetAll(); //复位所有变量InitBase(); //修改窗口风格、初始化纸张fnEnumControl(); //枚举所有子窗口if(!Init4Control())	return FALSE; //初始化窗口结构InitConnect(); //连结数据库Open(m_strDefSQL); //打开表格UpdateRecord(); //载入数据库数据ShowWindow(SW_SHOW); //显示

窗口中的控件被转换成统一的CDataCell结构,就象Grid中的项目。
刷新窗口时会执行

OnPaint()OnPageStart()OnCellStart(CDataCell *p) //N次 OnCellEnd(CDataCell *p) //你可以继承这些函数,从而改变显示内容OnPageEnd() //格式、或禁止它。
补充: 程序存在大量坐标转换的运算,其实不用去理解,只要在OnCellStart()中对CDataCell进行修改就可以达到不同的效果。简单扩展类CDlg1就是让ID显示红色。

简单页的处理

例:
CDlgDoc m_Doc;
void CDlgWkInput::OnInitialUpdate()
{
....//初始化
m_Doc.Init(&m_Page1); //m_Page1 是图2
m_Doc.SetConnection(m_pConnection);
....
}
void CDlgWkInput::OnSave()
{
..
m_Doc.Save();
..
}
void CDlgWkInput::OnRetrieve()
{
..
CString sqlText(_T("Select * From kv_staff_mr"));
m_Doc.Retrieve(sqlText);
..
}

效果图









四、结束语


希望本文中的数据库,打印等处理对大家有参考价值,详细请见源程序.