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