admin 管理员组

文章数量: 1086019


2024年4月30日发(作者:unix文件系统结构)

第一步粘贴代码

CBitmap m_BKGround;

CString m_Caption;

BOOL m_IsMax;

CButtonState m_ButtonState; //按钮状态

int m_BorderWidth; //边框宽度

int m_BorderHeight; //边框高度

int m_FrameWidth ; //窗体D宽度

int m_FrameHeight; //窗体D高度

int m_CaptionHeight; //标题栏的高度

int m_TitleDrawHeight; //标题栏实际的绘制高度

int m_ButtonWidth; //按钮位图宽度

int m_ButtonHeight; //按钮位图高度

COLORREF m_CapitonColor; //标题字体颜色

CFont m_CaptionFont; //标题字体

BOOL m_IsDrawForm ;

CRect m_LTitleRc, m_MTitleRc,m_RTitleRc; //左,中,右标题显示区域

CRect m_MinRect,m_MaxRect,m_CloseRect; //标题栏按钮的显示区域

第二步粘贴代码

// CCaptureDlg dialog

#define FLEFTBAR 1 //左边框

#define FLEFTTITLE 2 //左标题

#define FRIGHTTITLE 4 //右标题

#define FMIDTITLE 8 //中间标题

#define FRIGHTBAR 16 //右边框

#define FBOTTOMBAR 32 //底边框

#define FMINBUTTON 64 //最小化按钮

#define FMAXBUTTON 128 //最大化按钮

#define FCLOSEBUTTON 256 //关闭按钮

#define FALL 511 //所有标识

#define MAXNUM 100

//按钮状态

Onlintdialog

//加载背景位图

m_tmap(IDB_BKGROUND);

m_BorderHeight = GetSystemMetrics(SM_CYBORDER);

m_BorderWidth = GetSystemMetrics(SM_CXBORDER);

m_CaptionHeight = GetSystemMetrics(SM_CYCAPTION);

SetWindowText(m_Caption);

m_Font(14,10,0,3,600,0,0,0,ANSI_CHARSET,OUT_DEFAUL

T_PRECIS,

CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_ROMAN,"宋体");

CBitmap bitmap;

tmap(IDB_MINBT);

BITMAPINFO bInfo;

ect(sizeof(bInfo),&bInfo);

m_ButtonWidth = h;

m_ButtonHeight = ht;

Object();

CcaptureDialog右键添加成员函数void DrawDialog(UINT Flags) public

//获得边框信息

m_FrameHeight = GetSystemMetrics(SM_CYFIXEDFRAME);

m_BorderHeight = GetSystemMetrics(SM_CYBORDER);

m_FrameWidth = GetSystemMetrics(SM_CXFIXEDFRAME);

m_BorderWidth = GetSystemMetrics(SM_CXBORDER);

m_CaptionHeight = GetSystemMetrics(SM_CYCAPTION);

CRect Clientrect;

GetClientRect(Clientrect);

CRect WinRC,FactRC;

GetWindowRect(WinRC);

ct(CRect(0,0,(),()));

//获取窗口设备上下文

CWindowDC WindowDC(this);

CBitmap LeftLine,*OldObj;

BITMAPINFO bitinfo;

CDC memDC;

CompatibleDC(&WindowDC);

int leftwidth = 0; //左标题的宽度

int rightwidth = 0; //右标题的宽度

int leftlinewidth = 0; //窗体边框和3D宽度

int rLineWidth;

int bLineHeight;

DeleteObject(LeftLine);

tmap(IDB_RIGHTTITLE); //加载右标题

ect(sizeof(bitinfo),&bitinfo);

rightwidth = h;

();

int x,y;

//绘制左边线

//获取位图大小

if(Flags & FLEFTBAR)

{

DeleteObject(LeftLine);

tmap(IDB_LEFTBAR);

ect(sizeof(bitinfo),&bitinfo);

ect(sizeof(bitinfo),&bitinfo);

x = h;

y = ht;

OldObj = Object(&LeftLine);

//判断位图的宽度与窗体边缘的宽度

leftlinewidth = (x> m_FrameWidth+m_BorderWidth)?

x:m_FrameWidth+m_BorderWidth;

hBlt(0,m_CaptionHeight,leftlinewidth,

()-m_CaptionHeight,&memDC,0,0,x,y,SRCCOPY);

Object(OldObj);

();

}

//绘制左标题

if(Flags & FLEFTTITLE)

{

DeleteObject(LeftLine);

tmap(IDB_LEFTTITLE);

//获取位图大小

ect(sizeof(bitinfo),&bitinfo);

OldObj = Object(&LeftLine);

leftwidth = x = h;

y = ht;

m_TitleDrawHeight = (m_CaptionHeight+4 > y) ? m_CaptionHeight+4 : y;

m_ct(CRect(0,0,x,m_TitleDrawHeight));

hBlt(m_,m_,m_(),

m_(),&memDC,0,0,x,y,SRCCOPY);

Object(OldObj);

();

}

//绘制右标题

if(Flags & FRIGHTTITLE)

{

DeleteObject(LeftLine);

tmap(IDB_RIGHTTITLE);

//获取位图大小

ect(sizeof(bitinfo),&bitinfo);

OldObj = Object(&LeftLine);

x = h;

y = ht;

m_TitleDrawHeight = (m_CaptionHeight+4 > y) ? m_CaptionHeight+4 : y;

m_ct(CRect(-x,0,,m_TitleDrawHeight));

hBlt(m_,m_,m_(),

m_(),&memDC,0,0,x,y,SRCCOPY);

DeleteObject( Object(OldObj));

();

}

//绘制中间标题

if(Flags & FMIDTITLE)

{

DeleteObject(LeftLine);

tmap(IDB_MIDTITLE);

//获取位图大小

ect(sizeof(bitinfo),&bitinfo);

OldObj = Object(&LeftLine);

x = h;

y = ht;

m_TitleDrawHeight = (m_CaptionHeight+4 > y) ? m_CaptionHeight+4 : y;

m_ct(CRect(m_,0,m_,m_TitleDrawHei

ght));

hBlt(m_,m_,m_(),

m_(),&memDC,0,0,x,y,SRCCOPY);

();

Object(OldObj);

}

//绘制右边框

if(Flags & FRIGHTBAR)

{

DeleteObject(LeftLine);

tmap(IDB_RIGHTBAR);

//获取位图大小

ect(sizeof(bitinfo),&bitinfo);

OldObj = Object(&LeftLine);

x = h;

y = ht;

rLineWidth = m_FrameWidth + m_BorderWidth;

rLineWidth = rLineWidth>x? rLineWidth:x;

hBlt(m_-rLineWidth,m_TitleDrawHeight,rLineWi

dth,

()-m_TitleDrawHeight,&memDC,0,0,x,y,SRCCOPY);

Object(OldObj);

();

}

//绘制底边框

if(Flags & FBOTTOMBAR)

{

DeleteObject(LeftLine);

tmap(IDB_BOTTOMBAR);

//获取位图大小

ect(sizeof(bitinfo),&bitinfo);

OldObj = Object(&LeftLine);

x = h;

y = ht;

bLineHeight = m_BorderHeight + m_FrameHeight;

bLineHeight = bLineHeight>y? bLineHeight:y;

hBlt(leftlinewidth,()-bLineHeight,m_

ght

-rLineWidth-leftlinewidth, bLineHeight,&memDC,0,0,x,y,SRCCOPY);

Object(OldObj);

();

}

//绘制底边框

CPoint pos(30,1);

m_ct(CRect(m_+pos.x,(m_TitleDrawHeight+2*

m_BorderHeight

-m_ButtonHeight)/2+pos.y,m_ButtonWidth,m_ButtonHeight));

pos.x = 55;

m_ct(CRect(m_+pos.x,(m_TitleDrawHeight+2*

m_BorderHeight

-m_ButtonHeight)/2+pos.y,m_ButtonWidth,m_ButtonHeight));

pos.x = 80;

m_ct(CRect(m_+pos.x,(m_TitleDrawHeight+2*

m_BorderHeight

-m_ButtonHeight)/2+pos.y,m_ButtonWidth,m_ButtonHeight));

//绘制最小化按钮

if(Flags & FMINBUTTON)

{

DeleteObject(LeftLine);

tmap(IDB_MINBT);

//获取位图大小

ect(sizeof(bitinfo),&bitinfo);

OldObj = Object(&LeftLine);

x = h;

y = ht;

hBlt(m_,m_,m_,

m_,&memDC,0,0,x,y,SRCCOPY);

Object(OldObj);

();

}

//绘制最大化按钮

if ( Flags & FMAXBUTTON)

{

DeleteObject(LeftLine);

tmap(IDB_MAXBT);

//获取位图大小

ect(sizeof(bitinfo),&bitinfo);

OldObj = Object(&LeftLine);

x = h;

y = ht;

hBlt(m_,m_,m_,

m_,&memDC,0,0,x,y,SRCCOPY);

Object(OldObj);

();

}

//绘制关闭按钮

if(Flags & FCLOSEBUTTON)

{

DeleteObject(LeftLine);

tmap(IDB_CLOSEBT);

//获取位图大小

ect(sizeof(bitinfo),&bitinfo);

OldObj = Object(&LeftLine);

x = h;

y = ht;

hBlt(m_,m_,m_,

m_,&memDC,0,0,x,y,SRCCOPY);

Object(OldObj);

();

}

Object();

DC();

DrawCaption();

右键添加函数void DrawCapture public

if(!m_y())

{

CDC* pDC = GetWindowDC();

pDC->SetBkMode(TRANSPARENT);

pDC->SetTextColor(m_CapitonColor);

pDC->SetTextAlign(TA_CENTER);

CRect rect;

GetClientRect(rect);

pDC->SelectObject(&m_CaptionFont);

pDC->TextOut(()/2, m_CaptionHeight/3 ,m_Caption);

ReleaseDC(pDC);

}

Onpaint函数下

DrawDialog(FALL);

m_IsDrawForm = TRUE;

CCaptureDlg::CCaptureDlg(CWnd* pParent /*=NULL*/)

: CDialog(CCaptureDlg::IDD, pParent)

{

//{{AFX_DATA_INIT(CCaptureDlg)

//}}AFX_DATA_INIT

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);

m_CapitonColor = RGB(0,0,255);

m_Caption = "社区视频监控系统";

m_IsMax = TRUE;


本文标签: 宽度 标题 按钮