欢迎来到天天文库
浏览记录
ID:56805388
大小:422.50 KB
页数:55页
时间:2020-07-12
《让你的软件界面更漂亮.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、.tech.ddvip./result.php?key=让你的软件界面更漂亮让你的软件界面更漂亮(1)本文示例源代码或素材下载 我们使用过很多的软件,给我们留下印象很深的是那些界面漂亮且迷人的软件,国外的软件象QuickTime,国产的象金山词霸等,它们的软件界面设计风格都有独特之处。本人跟据自已的经验和大家探讨一下软件的漂亮界面实现的原理并提供DEMO程序。本人经验不多,经常从VCKBASE.COM吸取知识,共同学习,如有不足之处,请指正!也欢迎和我联系。下面就开始吧! 一、漂亮界面实现的原理
2、 用图象元素自绘窗口标题样栏,边框,系统按钮(最大化、最小化、关闭按钮)还有按窗口中的控件。图象当然是美工画的,但要你教美工怎么去画,是不是不能理解?,呆会我会告诉你你如何去教美工画.请先仔细看下图。.. 明白了吧,被红线包括的部分都是要画的图象。画得好不好会直接影响你的软件界面。 二、原理说玩了,来说一下实现的基本知识 1、VC软件绘图技术:CBitmap*pBitmap=newCBitmap; BITMAPBmpInfo; CBitmap*pOldBitmap; CDC*pDispla
3、yMemDC=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.bmWid
4、th,BmpInfo.bmHeight,pDisplayMemDC,0,0,SRCCOPY); pDisplayMemDC->SelectObject(pOldBitmap); pBitmap->DeleteObject(); ReleaseDC(pDisplayMemDC);//记得执行以下的语句 deletepDisplayMemDC; deletepBitmap; 2、坐标的概念:点、窗口坐标和屏幕坐标及转换,很重要!如不清楚请先复习相关知识。下图是我写在一个界面,就是基于上述原理
5、实现的:.. 下面介绍软件如何实现的: ①、重载对话框的消息函数:voidOnNcLButtonDown(UINTnHitTest,CPointpoint); //单击标题栏时是响应voidOnNcMouseMove(UINTnHitTest,CPointpoint); //Mous在标题移动时响应LRESULTDefWindowProc(UINTmessage,WPARAMwParam,LPARAMlParam) ②、添加关键成员函数为:BOOLDrawTitleBar(CDC*pDC)
6、 ③、添加完消息涵数后,在.cpp中实现它们的代码:voidCTitleBarDlg::OnNcMouseMove(UINTnHitTest,CPointpoint){ CDC*pDC=GetWindowDC(); CDC*pDisplayMemDC=newCDC; pDisplayMemDC->CreateCompatibleDC(pDC); CBitmap*pBitmap=newCBitmap; CBitmap*pOldBitmap; CRectrtWnd,rtButton; i
7、f(pDC) { CStringStrTemp=..""; GetWindowRect(&rtWnd); //mouse坐标转化为本窗口坐标重要 point.x=point.x-rtWnd.left; point.y=point.y-rtWnd.top; //判断mouse是否移到系统按钮上 if(m_rtButtExit.PtInRect(point)) { pBitmap->LoadBitmap(IDB_EXIT_FOCUS);
8、 StrTemp=_T("关闭"); } else { if(m_rtButtMin.PtInRect(point)) { pBitmap->LoadBitmap(IDB_MIN_FOCUS); StrTemp=.._T("最小化窗口"); } else { if(m_rtButtMax.PtInRect(point)) {
此文档下载收益归作者所有