VC++6.0下基于对话框的打印功能实现

来源:百度知道 编辑:UC知道 时间:2024/05/14 06:57:28
图一:我设计的超市软件的信息显示功能
图二:我在窗口设计时计划添加的“打印”功能按钮
图三:完成函数添加后(ADD Function),需要自己编写的具体C++代码的填充位置
目的:这也是恳请大家悉心帮忙的部分
功能要求:当我点击“打印”按钮时,设备可以读取图一中显示的对话框信息,并连接打印机,将其打印。可以设置预览,也可以省去预览,直接实现读取和打印,格式上要求不需要太美观,只要不影响阅读即可。
注意:这个程序采用ADO的方式连接数据库,主要是在VC++的设计中采用了MFC下的基于对话框的模式(编写程序的前提、基础)

郑重希望大家帮忙,人多,智慧也多,希望可以给出可行的办法
如果很好,我会及时处理的,并且愿意再加分!
D:\Program Files\Microsoft Visual Studio 6\Common Files\MSDev98\MyProjects\SMSYS\ViewDlg.cpp(625) : error C2228: left of '.GetColumnWidth' must have class/struct/union type
执行 cl.exe 时出错.

SMSYS.exe - 1 error(s), 0 warning(s)

使用数据库读取出数据来以后直接自己写打印的代码就可以了啊
我以前做过一个相似功能的先从数据库里读取数据填充了列表框控件然后调用了我自己写的一个函数打印这个列表框中的所有数据

根据你现在的贴图假设点击打印按钮的时候列表框里已经被你通过访问数据库填充进了数据,那么就是从该列表框中获取数据按顺序打印就可以了。以下这个函数基本就能实现这个需求。

//打印列表
void PrintList(CListCtrl &listCtrl)
{
if(!listCtrl.GetItemCount())
{
AfxMessageBox("没有数据可以打印");
return;
}

// 建立打印对话框对象
CPrintDialog
d1(FALSE,PD_ALLPAGES|PD_ALLPAGES|PD_NOPAGENUMS,NULL);
HDC dc1;
DOCINFO di={sizeof(DOCINFO),printName,NULL};

if(d1.DoModal()==IDOK)
{
// 返回一个打印DC句柄
dc1=d1.GetPrinterDC();

CDC testDC;
testDC.Attach(dc1);
testDC.SetBkMode(TRANSPARENT);

int nListItem = listCtrl.GetItemCount(),//需要打印多少条目
nListColumn =
((CHeaderCtrl*)listCtrl.GetHeaderCtrl())->GetItemCount(),//列数
nPageNeedPrint = nListItem/70 + ((nListItem%70) ? 1 : 0),//需要打印的页数
nPageCount = 0, /