Windows API一日一练(34)GetSysColor函数

Post date: 2012/3/27 上午 07:26:48

分类: Direct3D2007-09-12 21:25 2060人阅读 评论(0) 收藏 举报

当你需要自己显示一个与众不同的按钮时,就需要使用下面的方法来创建。当然这里也是综合地使用前面学习过的知识进行一次综合的练习。演示怎么样使用众多的API函数,这里还可以学会使用GetSysColor函数来获取系统的颜色。

WINUSERAPI

DWORD

WINAPI

GetSysColor(

__in int nIndex);

nIndex是系统定义的颜色索引值。

调用这个函数的例子如下:

#001 //

#002 //界面显示输出.

#003 //

#004 //蔡军生 2007/09/12 QQ:9073204 深圳

#005 //

#006 void CCaiWinMsg::OnDraw(HDC hDC)

#007 {

#008 //显示一个按钮。

#009 //设置按钮背景颜色。

#010 RECT rcText;

#011 rcText.left = 10;

#012 rcText.top = 10;

#013 rcText.right = 100;

#014 rcText.bottom = 100;

#015

#016 HBRUSH hbrush = CreateSolidBrush(GetSysColor(COLOR_3DFACE));

#017 //用黑色的画刷填充四边形的颜色.

#018 FillRect(hDC,&rcText,hbrush);

#019 DeleteObject(hbrush);

#020

#021 //

#022 HPEN hLight = CreatePen(PS_SOLID,1,

#023 GetSysColor(COLOR_3DHIGHLIGHT));

#024 HPEN hShdaow = CreatePen(PS_SOLID,1,

#025 GetSysColor(COLOR_3DDKSHADOW));

#026

#027 //

#028 //移到指定位置.

#029 POINT ptLeftTop;

#030 ptLeftTop.x = 20;

#031 ptLeftTop.y = 20;

#032 MoveToEx(hDC,ptLeftTop.x,ptLeftTop.y,NULL);

#033

#034 //显示白线。

#035 HGDIOBJ hOldPen = SelectObject(hDC,hLight);

#036 ptLeftTop.x = 20;

#037 ptLeftTop.y = 90;

#038 LineTo(hDC,ptLeftTop.x,ptLeftTop.y);

#039

#040 ptLeftTop.x = 20;

#041 ptLeftTop.y = 20;

#042 MoveToEx(hDC,ptLeftTop.x,ptLeftTop.y,NULL);

#043 ptLeftTop.x = 90;

#044 ptLeftTop.y = 20;

#045 LineTo(hDC,ptLeftTop.x,ptLeftTop.y);

#046

#047 //显示黑色线。

#048 SelectObject(hDC,hShdaow);

#049 ptLeftTop.x = 90;

#050 ptLeftTop.y = 90;

#051 LineTo(hDC,ptLeftTop.x,ptLeftTop.y);

#052

#053 ptLeftTop.x = 20;

#054 ptLeftTop.y = 90;

#055 LineTo(hDC,ptLeftTop.x,ptLeftTop.y);

#056

#057 //

#058 SelectObject(hDC,hOldPen);

#059 DeleteObject(hLight);

#060 DeleteObject(hShdaow);

#061

#062 int nOldMode = SetBkMode(hDC,TRANSPARENT);

#063 //输出文字。

#064 std::wstring strShow(_T("按钮"));

#065 DrawText(hDC,strShow.c_str(),(int)strShow.length(),&rcText,

#066 DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS);

#067

#068 //

#069 SetBkMode(hDC,nOldMode);

#070 }

这是综合使用前面学习过的API函数来画一个按钮,如果有什么不了解的,请看看以前学习过的API函数。