void CMy112View::OnDraw(CDC* pDC)
{
CMy112Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here/
CString line;
TEXTMETRIC metrics;
int y=0;
int tabstop[]={200,375,600,950};
CFont TitleFont;
CFont HeadingFont;
CFont DetailFont;
Roomrs.Open(CRecordset::snapshot,_T("select * from room"));
Roomrs.Requery();
TitleFont.CreateFont(36,0,0,0,FW_BOLD,false,false,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,"宋体");
HeadingFont.CreateFont(18,0,0,0,FW_BOLD,false,true,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,"宋体");
DetailFont.CreateFont
(18,0,0,0,FW_NORMAL,false,false,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,"宋体");
//设置标题字体
CFont *OldFont=pDC->SelectObject(&TitleFont);
pDC->GetTextMetrics(&metrics);
//计算行高
int lineHeight=metrics.tmHeight+metrics.tmExternalLeading;
y=y-lineHeight;
pDC->TextOut(400,0,"酒店客房信息表");
//设置行字体
pDC->SelectObject(&HeadingFont);
pDC->GetTextMetrics(&metrics);
lineHeight=metrics.tmHeight+metrics.tmExternalLeading;
line.Format("%s\t%s\t%s\t%s","房间号","房间类型","房间状态","房间价格");
pDC->TabbedTextOut(200,y,line,-1,4,tabstop,0);
y=y-lineHeight;
//设置表字体
pDC->SelectObject(&DetailFont);
pDC->GetTextMetrics(&metrics);
lineHeight=metrics.tmHeight+metrics.tmExternalLeading;
while(!Roomrs.IsEOF())
{
CString price;
price.Format("%d",Roomrs.m_roomprice);
CString str;
str.Format("%s\t%s\t%s\t%
s",Roomrs.m_roomno,Roomrs.m_roomtype,Roomrs.m_roomstate,price);
pDC->TabbedTextOut(200,y,str,-1,4,tabstop,0);
Roomrs.MoveNext();
y=y-lineHeight;
}
Roomrs.Close();
//恢复旧字体
pDC->SelectObject(OldFont);
}
/*
CSize TabbedTextOut( int x, int y, const CString& str,
int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin );
该函数用当前字体在指定位置 (x,y) 处显示一个由str指定的文本,且根据指定的制表
停止位设置相应字符位置。函数成功时返回文本的大小。参数中,nTabPositions表示
lpnTabStopPositions数组的大小,lpnTabStopPositions表示多个递增的停止位(逻辑
坐标)的数组,nTabOrigin表示制表停止位x方向的起始点(逻辑坐标)。
*/
void CMy112View::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
// TODO: calculate the total size of this view
SetScrollSizes(MM_LOENGLISH,CSize(600,1000));
//MM_LOENGLISH这种类型Y值为负
CMy112Doc *pDoc=GetDocument();
ASSERT_VALID(pDoc);
pDoc->SetTitle("hehe");
}
评论