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