正文

公共模块设计(2)

Visual C++项目开发案例全程实录(第2版) 作者:明日科技


 

LRESULT OnPaint( HWND hWnd ) //绘制窗口时处理函数

{

CWnd* pWnd = CWnd::FromHandle(hWnd);

CPaintDC dc(pWnd);

CString Text;      //标题

CRect RC;        //区域

CFont Font;      //字体

CFont *pOldFont; //原字体

CBrush Brush;     //画笔

CBrush *pOldBrush;   //原画笔

CPoint PT(2,2);       

u dc.SetBkMode( TRANSPARENT ); //设置透明

v Font.CreateFont( 12, 0, 0, 0, FW_HEAVY, 0, 0, 0, ANSI_CHARSET, \

OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, \

VARIABLE_PITCH | FF_SWISS, "MS Sans Serif" ); //创建字体

pOldFont = dc.SelectObject( &Font ); //将画笔选入设备环境

if( m_State == bsNormal) //判断按钮状态

{

if (m_Style==2)

{

CBitmap bmp;

bmp.LoadBitmap(IDB_BKBUTTON); //加载图片资源

Brush.CreatePatternBrush(&bmp); //根据图片资源创建画笔

}

else

Brush.CreateSolidBrush( RGB( 200, 200, 200 ) ); //用颜色创建画笔

dc.SetTextColor( RGB( 80, 80, 80) );            //设置文本颜色

}

else if( m_State == bsDown ) //判断按钮是否按下

{

Brush.CreateSolidBrush( RGB( 160, 160, 160 ) ); //用颜色创建画笔

dc.SetTextColor( RGB( 50, 50, 250 ) );      //设置文本颜色

}

else if( m_State == bsHot ) //判断按钮是否热点

{

Brush.CreateSolidBrush( RGB( 100, 100, 180 ) ); //用颜色创建画笔

dc.SetTextColor( RGB( 250, 250, 0 ) );      //设置文本颜色

}

pOldBrush = dc.SelectObject( &Brush ); //将画刷选入设备环境中

pWnd->GetClientRect( &RC );     //获得客户区域

dc.RoundRect( &RC, PT );        //绘制圆角矩形

HRGN hRgn = CreateRectRgn( RC.left, RC.top, RC.right, RC.bottom ); //创建一个矩形区域

pWnd->SetWindowRgn( hRgn, TRUE );                       //设置窗口区域

DeleteObject( hRgn );

pWnd->GetWindowText(Text ); //获得窗口显示文本

dc.DrawText( Text, &RC, DT_CENTER | DT_VCENTER | DT_SINGLELINE ); //绘制文本

dc.SelectObject( pOldFont );

dc.SelectObject( pOldBrush );


上一章目录下一章

Copyright © 读书网 www.dushu.com 2005-2020, All Rights Reserved.
鄂ICP备15019699号 鄂公网安备 42010302001612号