|
1.10 开发技巧与难点分析(2)
(7)在自定义函数DrawDialog中添加代码,用于绘制对话框的右边标题。代码如下:
if(Flags & FRIGHTTITLE) //绘制右标题 { DeleteObject(LeftLine); LeftLine.LoadBitmap(IDB_RIGHTTITLE); //加载右标题位图资源 //获取位图大小 LeftLine.GetObject(sizeof(bitinfo),&bitinfo); OldObj = memDC.SelectObject(&LeftLine); x = bitinfo.bmiHeader.biWidth; //获取位图宽 y = bitinfo.bmiHeader.biHeight; //获取位图高 m_TitleDrawHeight = (m_CaptionHeight+4 > y) m_ CaptionHeight+4 : y; //计算右标题高度 m_RTitleRc.CopyRect(CRect(FactRC.right-x,0,FactRC.right, m_TitleDrawHeight)); //右标题区域 WindowDC.StretchBlt(m_RTitleRc.left,m_RTitleRc.top,m_RTitleRc.Width(), m_RTitleRc.Height(),&memDC,0,0,x,y,SRCCOPY); //绘制右标题 DeleteObject( memDC.SelectObject(OldObj)); LeftLine.Detach(); } | (8)在自定义函数DrawDialog中添加代码,用于绘制对话框的中间标题。代码如下:
if(Flags & FMIDTITLE) //绘制中间标题 { DeleteObject(LeftLine); LeftLine.LoadBitmap(IDB_MIDTITLE); //加载中间标题位图资源 //获取位图大小 LeftLine.GetObject(sizeof(bitinfo),&bitinfo); OldObj = memDC.SelectObject(&LeftLine); x = bitinfo.bmiHeader.biWidth; //获取位图宽 y = bitinfo.bmiHeader.biHeight; //获取位图高 m_TitleDrawHeight = (m_CaptionHeight+4 > y) m_ CaptionHeight+4 : y ; //计算中间标题高度 m_MTitleRc.CopyRect(CRect(m_LTitleRc.right,0,m_ RTitleRc.left,m_TitleDrawHeight)); WindowDC.StretchBlt(m_MTitleRc.left,m_MTitleRc. top,m_MTitleRc.Width(), m_MTitleRc.Height(),&memDC,0,0,x,y,SRCCOPY); //绘制中间标题 LeftLine.Detach(); memDC.SelectObject(OldObj); }
| (9)在自定义函数DrawDialog中添加代码,用于绘制对话框的右边框。代码如下:
if(Flags & FRIGHTBAR) //绘制右边框 { DeleteObject(LeftLine); LeftLine.LoadBitmap(IDB_RIGHTBAR); //加载右边框位图资源 //获取位图大小 LeftLine.GetObject(sizeof(bitinfo),&bitinfo); OldObj = memDC.SelectObject(&LeftLine); x = bitinfo.bmiHeader.biWidth; //获取位图宽 y = bitinfo.bmiHeader.biHeight; //获取位图高 rLineWidth = m_FrameWidth + m_BorderWidth; rLineWidth = rLineWidth>x rLineWidth:x; WindowDC.StretchBlt(m_RTitleRc.right-rLineWidth,m_ TitleDrawHeight,rLineWidth, FactRC.Height()-m_TitleDrawHeight,&memDC,0,0,x,y, SRCCOPY) //绘制右边框 memDC.SelectObject(OldObj); LeftLine.Detach(); }
| (10)自定义函数DrawDialog添加代码,用于绘制对话框的底边框。代码如下:
if(Flags & FBOTTOMBAR) //绘制底边框 { DeleteObject(LeftLine); LeftLine.LoadBitmap(IDB_BOTTOMBAR); //加载底边框位图资源 //获取位图大小 LeftLine.GetObject(sizeof(bitinfo),&bitinfo); OldObj = memDC.SelectObject(&LeftLine); x = bitinfo.bmiHeader.biWidth; //获取位图宽 y = bitinfo.bmiHeader.biHeight; //获取位图高 bLineHeight = m_BorderHeight + m_FrameHeight; bLineHeight = bLineHeight>y bLineHeight:y; WindowDC.StretchBlt(leftlinewidth,FactRC.Height ()-bLineHeight,m_RTitleRc.right -rLineWidth-leftlinewidth, bLineHeight,&memDC, 0,0,x,y,SRCCOPY); //绘制底边框 memDC.SelectObject(OldObj); LeftLine.Detach(); }
| (11)在自定义函数DrawDialog中添加代码,用于绘制对话框的最小化按钮。代码如下:
if(Flags & FMINBUTTON) //绘制最小化按钮 { DeleteObject(LeftLine); LeftLine.LoadBitmap(IDB_MINBT); //加载最小化按钮 //获取位图大小 LeftLine.GetObject(sizeof(bitinfo),&bitinfo); OldObj = memDC.SelectObject(&LeftLine); x = bitinfo.bmiHeader.biWidth; //获取位图宽 y = bitinfo.bmiHeader.biHeight; //获取位图高 WindowDC.StretchBlt(m_MinRect.left,m_MinRect.top,m_MinRect.right, m_MinRect.bottom,&memDC,0,0,x,y,SRCCOPY); //绘制最小化按钮 memDC.SelectObject(OldObj); LeftLine.Detach(); }
| (12)在自定义函数DrawDialog中添加代码,用于绘制对话框的最大化按钮。代码如下:
if ( Flags & FMAXBUTTON) //绘制最大化按钮 { DeleteObject(LeftLine); LeftLine.LoadBitmap(IDB_MAXBT); //获取位图大小 LeftLine.GetObject(sizeof(bitinfo),&bitinfo); OldObj = memDC.SelectObject(&LeftLine); x = bitinfo.bmiHeader.biWidth; //获取位图宽 y = bitinfo.bmiHeader.biHeight; //获取位图高 WindowDC.StretchBlt(m_MaxRect.left,m_MaxRect.top,m_MaxRect.right, m_MaxRect.bottom,&memDC,0,0,x,y,SRCCOPY); //绘制最大化按钮 memDC.SelectObject(OldObj); LeftLine.Detach(); } |
【责任编辑: 夏书 TEL:(010)68476606】
|