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");}

评论