设为首页 加入收藏

TOP

1.10 开发技巧与难点分析(2)
2013-10-07 00:18:32 来源: 作者: 【 】 浏览:76
Tags:1.10 开发 技巧 难点 分析

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】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.10 开发技巧与难点分析(3) 下一篇1.10 开发技巧与难点分析(1)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: