2024年5月11日发(作者:)
VC++自绘窗体界面[转]
2010-11-12 12:47:26| 分类: 默认分类|字号 订阅
一. 新建一个基于对话框的应用程序.
二. 在对话框中添加Eeit ,StaticText ,Picture, Button 控件.
三. 在对话框中添加如下成员变量:
//***************************************************************************************
*****
BOOL m_IsMax; //是否处于最大化状态
int m_BorderWidth; //边框宽度
int m_BorderHeight; //边框高度
int m_CaptionHeight; //标题栏的高度
CString m_Caption; //窗口标题
COLORREF m_CapitonColor; //标题字体颜色
CFont m_CaptionFont; //标题字体
int m_ButtonWidth; //按钮位图宽度
int m_ButtonHeight; //按钮位图高度
BOOL m_FirstShow; //窗口首次被显示
CRect m_OrigonRect;//原始窗口区域
CRect m_IniRect,m_MinRect,m_MaxRect,m_CloseRect;//标题栏按钮的显示
区域
CButtonState m_ButtonState; //按钮状态
BOOL m_IsDrawForm;//是否需要绘制窗体
//***************************************************************************************
*****
四.在对话框中添加DrawFrom 方法绘制窗体,代码如下:
//获取窗口设备上下文
CDC* pWindowDC = GetWindowDC();
CBitmap LeftLine;
BITMAPINFO bitinfo;
CDC memDC;
CompatibleDC(pWindowDC);
CRect Clientrect;
GetClientRect(Clientrect);
int leftwidth=0; //左标题的宽度
int rightwidth = 0; //右标题的宽度
int leftlinewidth = 0; //左边线宽度
tmap(IDB_BITMAP3); //加载右标题
ect(sizeof(bitinfo),&bitinfo);
rightwidth = h;
Object();
int x,y;
//绘制左边线
//获取位图大小
tmap(IDB_BITMAP4);
ect(sizeof(bitinfo),&bitinfo);
leftlinewidth = x = h;
y = ht;
Object(&LeftLine);
pWindowDC->StretchBlt(1-m_BorderWidth,m_CaptionHeight+1,x+1,Clientrec
()+2*m_BorderHeight+5,&memDC,0,0,x,y,SRCCOPY);
Object();
/*****************************绘制左标题**************************************/
tmap(IDB_BITMAP2);
//获取位图大小
ect(sizeof(bitinfo),&bitinfo);
Object(&LeftLine);
leftwidth = x = h;
y = ht;
pWindowDC->StretchBlt(-m_BorderWidth,0,x,m_CaptionHeight+4,&memDC,
0,0,x,y,SRCCOPY);
Object();
/*****************************绘制左标题**************************************/
/*****************************绘制中间标题**************************************/
tmap(IDB_BITMAP1);
//获取位图大小
ect(sizeof(bitinfo),&bitinfo);
Object(&LeftLine);


发布评论