- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
/result.php?key=让你的软件界面更漂亮
让你的软件界面更漂亮(1)
本文示例源代码或素材下载
我们使用过很多的软件, 给我们留下印象很深的是那些界面漂亮且迷人的软件, 国
外的软件象 QuickTime, 国产的象金山词霸等,它们的软件界面设计风格都有独特之处。本
人跟据自已的经验和大家探讨一下软件的漂亮界面实现的原理并提供 DEMO 程序。本人经
验不多,经常从 VCKBASE.COM 吸取知识,共同学习,如有不足之处,请指正!也欢迎和
我联系。下面就开始吧!
一、漂亮界面实现的原理
用图象元素自绘窗口标题样栏,边框,系统按钮(最大化、最小化、关闭按钮)还有按
窗口中的控件。图象当然是美工画的,但要你教美工怎么去画,是不是不能理解? ,呆会我
会告诉你你如何去教美工画.请先仔细看下图。
明白了吧,被红线包括的部分都是要画的图象。画得好不好会直接影响你的软件界面。
二、原理说玩了,来说一下实现的基本知识
1、VC 软件绘图技术:
CBitmap* pBitmap = new CBitmap;
BITMAP BmpInfo;
CBitmap* pOldBitmap;
CDC* pDisplayMemDC=new CDC;
pDisplayMemDC-CreateCompatibleDC(pDC);
pBitmap-LoadBitmap(IDB_TITLE_LEFT);
pOldBitmap=(CBitmap*)pDisplayMemDC-SelectObject(pBitmap);
pBitmap-GetBitmap(BmpInfo);
// x,y 为绘图位置 ,必要时此语句要有 For (..;..;..)控制
pDC-BitBlt(x,y, BmpInfo.bmWidth, BmpInfo.bmHeight, pDisplayMemDC, 0, 0, SRC
COPY);
pDisplayMemDC-SelectObject(pOldBitmap);
pBitmap-DeleteObject();
ReleaseDC(pDisplayMemDC);//记得执行以下的语句
delete pDisplayMemDC;
delete pBitmap;
2、坐标的概念:点、窗口坐标和屏幕坐标及转换,很重要!如不清楚请先复习相关知
识。
下图是我写在一个界面,就是基于上述原理实现的:
下面介绍软件如何实现的:
①、重载对话框的消息函数:
void OnNcLButtonDown(UINT nHitTest, CPoint point);
//单击标题栏时是响应
void OnNcMouseMove(UINT nHitTest, CPoint point);
//Mous 在标题移动时响应
LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
②、添加关键成员函数为:BOOL DrawTitleBar(CDC *pDC)
③、添加完消息涵数后,在.cpp 中实现它们的代码:
void CTitleBarDlg::OnNcMouseMove(UINT nHitTest, CPoint point)
{
CDC* pDC = GetWindowDC();
CDC* pDisplayMemDC=new CDC;
pDisplayMemDC-CreateCompatibleDC(pDC);
CBitmap* pBitmap = new CBitmap;
CBitmap* pOldBitmap;
CRect rtWnd, rtButton;
if (pDC)
{
CString StrTemp = ;
GetWindowRect(rtWnd);
//mouse 坐标转化为本窗口坐标 重要
point.x = point.x - rtWnd.left;
point.y = point.y - rtWnd.top;
//判断 mouse 是否移到系统按钮上
if (m_rtButtExit.PtInRect(point))
{
pBitmap-
原创力文档


文档评论(0)