威克诺CCNA学习笔记OSI第五章
2010-09-07 16:15
225 查看
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>
当你需要自己显示一个与众不同的按钮时,就需要使用下面的方法来创建。当然这里也是综合地使用前面学习过的知识进行一次综合的练习。演示怎么样使用众多的API函数,这里还可以学会使用GetSysColor函数来获取系统的颜色。
WINUSERAPI
DWORD
WINAPI
GetSysColor(
__in int nIndex);
nIndex是系统定义的颜色索引值。
调用这个函数的例子如下:
#001//
#002//界面显示输出.
#003//
#004//蔡军生2007/09/12 QQ:9073204 深圳
#005//
#006void CCaiWinMsg::OnDraw(HDC hDC)
#007{
#008//显示一个按钮。
#009//设置按钮背景颜色。
#010RECT rcText;
#011rcText.left = 10;
#012rcText.top = 10;
#013rcText.right = 100;
#014rcText.bottom = 100;
#015
#016HBRUSH hbrush = CreateSolidBrush(GetSysColor(COLOR_3DFACE));
#017//用黑色的画刷填充四边形的颜色.
#018FillRect(hDC,&rcText,hbrush);
#019DeleteObject(hbrush);
#020
#021//
#022HPEN hLight = CreatePen(PS_SOLID,1,
#023 GetSysColor(COLOR_3DHIGHLIGHT));
#024HPEN hShdaow = CreatePen(PS_SOLID,1,
#025 GetSysColor(COLOR_3DDKSHADOW));
#026
#027//
#028//移到指定位置.
#029POINT ptLeftTop;
#030ptLeftTop.x = 20;
#031ptLeftTop.y = 20;
#032MoveToEx(hDC,ptLeftTop.x,ptLeftTop.y,NULL);
#033
#034//显示白线。
#035HGDIOBJ hOldPen = SelectObject(hDC,hLight);
#036ptLeftTop.x = 20;
#037ptLeftTop.y = 90;
#038LineTo(hDC,ptLeftTop.x,ptLeftTop.y);
#039
#040ptLeftTop.x = 20;
#041ptLeftTop.y = 20;
#042MoveToEx(hDC,ptLeftTop.x,ptLeftTop.y,NULL);
#043ptLeftTop.x = 90;
#044ptLeftTop.y = 20;
#045LineTo(hDC,ptLeftTop.x,ptLeftTop.y);
#046
#047//显示黑色线。
#048SelectObject(hDC,hShdaow);
#049ptLeftTop.x = 90;
#050ptLeftTop.y = 90;
#051LineTo(hDC,ptLeftTop.x,ptLeftTop.y);
#052
#053ptLeftTop.x = 20;
#054ptLeftTop.y = 90;
#055LineTo(hDC,ptLeftTop.x,ptLeftTop.y);
#056
#057//
#058SelectObject(hDC,hOldPen);
#059DeleteObject(hLight);
#060DeleteObject(hShdaow);
#061
#062int nOldMode = SetBkMode(hDC,TRANSPARENT);
#063//输出文字。
#064std::wstring strShow(_T("按钮"));
#065DrawText(hDC,strShow.c_str(),(int)strShow.length(),&rcText,
#066 DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS);
#067
#068//
#069SetBkMode(hDC,nOldMode);
#070}
这是综合使用前面学习过的API函数来画一个按钮,如果有什么不了解的,请看看以前学习过的API函数。
当你需要自己显示一个与众不同的按钮时,就需要使用下面的方法来创建。当然这里也是综合地使用前面学习过的知识进行一次综合的练习。演示怎么样使用众多的API函数,这里还可以学会使用GetSysColor函数来获取系统的颜色。
WINUSERAPI
DWORD
WINAPI
GetSysColor(
__in int nIndex);
nIndex是系统定义的颜色索引值。
调用这个函数的例子如下:
#001//
#002//界面显示输出.
#003//
#004//蔡军生2007/09/12 QQ:9073204 深圳
#005//
#006void CCaiWinMsg::OnDraw(HDC hDC)
#007{
#008//显示一个按钮。
#009//设置按钮背景颜色。
#010RECT rcText;
#011rcText.left = 10;
#012rcText.top = 10;
#013rcText.right = 100;
#014rcText.bottom = 100;
#015
#016HBRUSH hbrush = CreateSolidBrush(GetSysColor(COLOR_3DFACE));
#017//用黑色的画刷填充四边形的颜色.
#018FillRect(hDC,&rcText,hbrush);
#019DeleteObject(hbrush);
#020
#021//
#022HPEN hLight = CreatePen(PS_SOLID,1,
#023 GetSysColor(COLOR_3DHIGHLIGHT));
#024HPEN hShdaow = CreatePen(PS_SOLID,1,
#025 GetSysColor(COLOR_3DDKSHADOW));
#026
#027//
#028//移到指定位置.
#029POINT ptLeftTop;
#030ptLeftTop.x = 20;
#031ptLeftTop.y = 20;
#032MoveToEx(hDC,ptLeftTop.x,ptLeftTop.y,NULL);
#033
#034//显示白线。
#035HGDIOBJ hOldPen = SelectObject(hDC,hLight);
#036ptLeftTop.x = 20;
#037ptLeftTop.y = 90;
#038LineTo(hDC,ptLeftTop.x,ptLeftTop.y);
#039
#040ptLeftTop.x = 20;
#041ptLeftTop.y = 20;
#042MoveToEx(hDC,ptLeftTop.x,ptLeftTop.y,NULL);
#043ptLeftTop.x = 90;
#044ptLeftTop.y = 20;
#045LineTo(hDC,ptLeftTop.x,ptLeftTop.y);
#046
#047//显示黑色线。
#048SelectObject(hDC,hShdaow);
#049ptLeftTop.x = 90;
#050ptLeftTop.y = 90;
#051LineTo(hDC,ptLeftTop.x,ptLeftTop.y);
#052
#053ptLeftTop.x = 20;
#054ptLeftTop.y = 90;
#055LineTo(hDC,ptLeftTop.x,ptLeftTop.y);
#056
#057//
#058SelectObject(hDC,hOldPen);
#059DeleteObject(hLight);
#060DeleteObject(hShdaow);
#061
#062int nOldMode = SetBkMode(hDC,TRANSPARENT);
#063//输出文字。
#064std::wstring strShow(_T("按钮"));
#065DrawText(hDC,strShow.c_str(),(int)strShow.length(),&rcText,
#066 DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS);
#067
#068//
#069SetBkMode(hDC,nOldMode);
#070}
这是综合使用前面学习过的API函数来画一个按钮,如果有什么不了解的,请看看以前学习过的API函数。
相关文章推荐
- 威克诺CCNA学习笔记OSI第四章
- 威克诺CCNA学习笔记OSI第八章
- 威克诺CCNA学习笔记OSI第四章
- 威克诺CCNA学习笔记OSI第六章
- 威克诺CCNA学习笔记OSI第七章
- CCNA学习笔记1---OSI TCP/IP模型
- 威克诺CCNA笔记OSI第三章
- CCNA学习笔记11-层2交换技术
- CCNA学习笔记四——Telnet CDP
- CCNA学习笔记之telnet登录的两种方式
- CCNA 学习笔记(十一)--帧中继(FR)
- CCNA+NP学习笔记—交换网络篇
- 学习笔记 第五章
- CCNA学习笔记
- 王爽汇编语言第五章学习笔记和实验四答案
- Lua学习笔记 第五章 函数
- 2012/1/13 《C++ Primer Plus》第五章:循环和表达式 学习笔记
- 【CCNA学习笔记】VTP
- CCNA 学习笔记-0 概述
- django学习笔记---第五章:模型