4,012
社区成员
发帖
与我相关
我的任务
分享
#if !defined(AFX_ODBCREPORTVIEW_H__6BC2C6CB_3629_4F87_B987_4B616DBAF745__INCLUDED_)
#define AFX_ODBCREPORTVIEW_H__6BC2C6CB_3629_4F87_B987_4B616DBAF745__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "ODBCReportSet.h"
class CODBCReportView : public CScrollView
{
protected: // create from serialization only
CODBCReportView();
DECLARE_DYNCREATE(CODBCReportView)
// Attributes
public:
CODBCReportDoc* GetDocument();
CODBCReportSet* m_pSet;
在ODBCReportView.cpp中的OnInitialUpdate()函数输入如下代码:
void CODBCReportView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
//设置大小
CSize sizeTotal(800,2000);
//设置滚动窗口大小
SetScrollSizes(MM_LOENGLISH,sizeTotal);
CODBCReportDoc* pDoc=GetDocument();
ASSERT_VALID(pDoc);
//设置标题
pDoc->SetTitle("ODBC pmtest Report");
m_pSet=&pDoc->m_dbSet;
//打开记录集
m_pSet->Open();
}
CODBCReportView类的OnDraw()函数如下,自己感觉问题像是出在这里??
void CODBCReportView::OnDraw(CDC* pDC)
{
CString line;
TEXTMETRIC metrics;
int y =0;
CFont TitleFont;
CFont HeadingFont;
CFont DetailFont;
int TabStops[]={100,275,650};
//设置记录集为开始点
m_pSet->Requery();
//标题设为粗体
TitleFont.CreateFont(44,0,0,0,FW_BOLD,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,"Times New Roman");
//粗体加下划线
HeadingFont.CreateFont(36,0,0,0,FW_BOLD,FALSE,TRUE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,"Times New Roman");
//一般字体
DetailFont.CreateFont(18,0,0,0,FW_NORMAL,FALSE,TRUE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,"Times New Roman");
//得到默认设置
CFont*OldFont=pDC->SelectObject(&TitleFont);
//检索标题字体测量
pDC->GetTextMetrics(&metrics);
//计算行高
int LineHeight=metrics.tmHeight+metrics.tmExternalLeading;
//设置行高为y
y-=LineHeight;
pDC->TextOut(200,0,"ODBC pmtest Report");
//设置行头字体
pDC->SelectObject(&HeadingFont);
line.Format("%s","pmtest");
//用tab输出
pDC->TabbedTextOut(0,y,line,3,TabStops,0);
if(m_pSet->IsBOF())
{
return;
}
LineHeight=metrics.tmHeight+metrics.tmExternalLeading;
y-=LineHeight;//调整y的位置
pDC->SelectObject(&DetailFont);
pDC->GetTextMetrics(&metrics);
LineHeight=metrics.tmHeight+metrics.tmExternalLeading;
while(!m_pSet->IsEOF()){
line.Format("%s\t%s",
m_pSet->m_Time,
m_pSet->m_Value);
//输出描述一行
pDC->TabbedTextOut(0,y,line,3,TabStops,0);
//得到下一行行高
y-=LineHeight;
m_pSet->MoveNext();
}
//储存默认设置
pDC->SelectObject(OldFont);
}
有以前开发过类似ODBC报表的大手,望多多指教。最好能告诉我在哪里应该添加什么语句!!