这笔记本机械硬盘有问题吗

让你的软件界面更漂亮(一)
让你的软件界面更漂亮(一)
  让你的软件界面更漂亮(一)& & & & & & & & & &  下载源代码  我们使用过很多的软件, 给我们留下印象很深的是那些界面漂亮且迷人的软件, 国外的软件象QuickTime,国产的象金山词霸等,它们的软件界面设计风格都有独特之处。本人跟据自已的经验和大家探讨一下软件的漂亮界面实现的原理并提供DEMO程序。本人经验不多,经常从吸取知识,共同学习,如有不足之处,请指正!也欢迎和我联系。下面就开始吧!一、漂亮界面实现的原理  用图象元素自绘窗口标题样栏,边框,系统按钮(最大化、最小化、关闭按钮)还有按窗口中的控件。图象当然是美工画的,但要你教美工怎么去画,是不是不能理解? ,呆会我会告诉你你如何去教美工画.请先仔细看下图。明白了吧,被红线包括的部分都是要画的图象。画得好不好会直接影响你的软件界面。二、原理说玩了,来说一下实现的基本知识1、VC软件绘图技术:  CBitmap* pBitmap = new CB BITMAP BmpI CBitmap* pOldB 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, SRCCOPY); pDisplayMemDC-&SelectObject(pOldBitmap); pBitmap-&DeleteObject(); ReleaseDC(pDisplayMemDC);//记得执行以下的语句 delete pDisplayMemDC; delete pB2、坐标的概念:点、窗口坐标和屏幕坐标及转换,很重要!如不清楚请先复习相关知识。下图是我写在一个界面,就是基于上述原理实现的:下面介绍软件如何实现的:①、重载对话框的消息函数:  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 CB CBitmap* pOldB CRect rtWnd, rtB if (pDC) { CString StrTemp = &&; GetWindowRect(&rtWnd); //mouse坐标转化为本窗口坐标 重要 point.x = point.x - rtWnd. point.y = point.y - rtWnd. //判断mouse是否移到系统按钮上 if (m_rtButtExit.PtInRect(point)) { pBitmap-&LoadBitmap(IDB_EXIT_FOCUS); StrTemp = _T(&关闭&); } else { if(m_rtButtMin.PtInRect(point)) { pBitmap-&LoadBitmap(IDB_MIN_FOCUS); StrTemp = _T(&最小化窗口&); } else { if(m_rtButtMax.PtInRect(point)) { pBitmap-&LoadBitmap(IDB_MAX_FOCUS); if(IsZoomed()) { StrTemp = _T(&还原窗口&); } else { StrTemp = _T(&最化大窗口&); } } else { pBitmap-&LoadBitmap(IDB_NORMAL); } } } rtButton = m_rtButtM BITMAP BmpI pBitmap-&GetBitmap(&BmpInfo); pOldBitmap=(CBitmap*)pDisplayMemDC-&SelectObject(pBitmap); pDC-&BitBlt(rtButton.left-6, rtButton.top-2, BmpInfo.bmWidth, BmpInfo.bmHeight, pDisplayMemDC, 0, 0, SRCCOPY); pDisplayMemDC-&SelectObject(pOldBitmap); pBitmap-&DeleteObject(); CRect ShowTipR ShowTipRec = m_rtButtM if(!StrTemp.IsEmpty()) { // ScreenToClient(&ShowTipRec); // &m_ToolTip.AddToolTip(IDD_TITLEBAR_DIALOG,&ShowTipRec,StrTemp); // m_ToolTip.SetDelayTime(200); & & & & } } ReleaseDC(pDisplayMemDC); ReleaseDC(pDC); delete pDisplayMemDC; delete pB CDialog::OnNcMouseMove(nHitTest, point);}//此为关键函数void CTitleBarDlg::DrawTitleBar(CDC *pDC){ if (m_hWnd) { CBrush Brush(RGB(0,100,255)); CBrush* pOldBrush = pDC-&SelectObject(&B & &
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
职称考试题目
招生信息考研政治
网络安全安全设置工具使用手机安全
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&请问,用C++写漂亮界面的软件是不是很简单啊??_c++吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:281,987贴子:
请问,用C++写漂亮界面的软件是不是很简单啊??收藏
有人说用c语言写界面虐死人。那是不是用c++就很简单啊!VC6中用c++怎么写界面啊??
c++海同强大的师资阵容,因人制定课程内容,分阶段学习.c++就到正规IT技术培训机构-海同科技,培训IT技术面对面教学,免费重读!
MFC没有Qt好用
C/C艹的做界面本来就不是很容易哪里像VB学一个月就写一个浏览器......不过还是别用MFC的好,用QTMFC只适用于微软的Windows平台,QT是跨平台的而且MFC太老了
要什么界面呀,多出来的东西都是浪费效率,华而不实
漂亮的界面都是自己画的,挺麻烦的。
用界面库,各种DrectUI(Duilib),迅雷界面引擎bolt,金山,WTL,QT,MFC(自绘),WPF还有那啥。。。
选个图形库学完就能画了——
你需要找一个美工
经常gdi+自己画的飘过……
找美工帮你弄几张背景图,你在上面加控件
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或15款C/C++程序员必备的编译器和IDE - 文章 - 伯乐在线
& 15款C/C++程序员必备的编译器和IDE
当前,Web开发人员编程语言的选择很多,比如Java、.Net、PHP、Ruby、Perl、Python等等。今天,本文想和大家讨论下两种古老而又广泛流行的编程语言:C和C++。C/C++自身有许多优良的特性,代码运行高效,并有一些外围工具的支持。如今,这两种语言以其庞大的函数库和健全的安全机制,仍然活跃在编程语言领域。
本文将整理一些让人印象深刻的C/C++集成开发环境(IDE)和编译器。IDE主要为软件开发提供功能组件,其最吸引人的特性之一是其友好的用户界面。几天前,我在博客上和大家分享了一些IDE,今天我将着重介绍其中最广受好评的几款IDE 以及编译器。
Kdevelop是一款开源的基于KDevPlatform平台的可扩展插件IDE,支持C/C++等语言,包含一套开源的库集合,可以通过这些库构建IDE。
Anjuta Devstudio是另一个优秀的开发平台。它包含许多先进的编程特性,如项目管理、应用生成向导、交互式调试、源码编辑器、版本控制、图形用户界面设计、概要设计等等。该工具为C/C++程序员提供了一个强大的用户界面开发接口。
Code blocks是一款广受欢迎的开源C/C++集成开发环境,这款IDE包含了开发者需要的所有功能,比如友好的用户界面,编译和调试功能等。
Visual MinGW是一款袖珍的开源IDE。它封装了所有windows API以提供简单高效的开发模式。它将代码模块化使得编程更加简单,并提供了丰富的C++类库以支持现有编程框架。Visual MinGW现在由SourceForge托管。
Ideone是一款在线的编译调试工具,能够支持C/C++等60多种语言。该工具可以快速而高效地完成编译过程。
Eclipse CDT是当前最强大最流行的IDE之一,提供的功能包括:项目创建以及工具链的构建、标准make构建、代码导航、多种知识工具、语法高亮的代码编辑器、可折叠并可超链接的导航功能、代码重构和代码生成以及可视化的调试工具(包括内存、寄存器和反汇编视图)等。
Compilr是一款在线的集成开发工具,具有卓越的代码编写体验和简单的用户界面。除了C和C++,该工具还支持java,HTML等编程语言。《》
Code Lite又是一款卓越的C/C++开源IDE,可以运行于当前所有主流平台(OSX,Windows,Linux)。
Netbeans工具包含许多不同类型的C/C++工程模板,借助这些模板所提供的动态链接库和静态库可以很方便地创建C/C++应用。该IDE的一些特性使其在web工程师应用很广,这些特性包括:代码助手,编译配置,单元测试,代码检查,远程开发和文件导航等。
Dev C++是一个功能完备的IDE,这些功能包括:1)类浏览器;2)集成的调试工具;3)基于GCC的编译器;4)工程管理器;5)汇编器;6)编辑和编译资源文件;7)工具管理器;8)函数列表。
Ultimate++是一个不错的C++开发工具。该IDE将模块化的思想引入C++编程,并能和GCC、MinGW以及Visual C++良好协作。
Digital Mars是一个高性能的C/C++编译器。它的特点包括:业界最快的编译链接速度、强大的代码优化技术、契约式设计、完整的库资源、可HTML浏览的使用文档、反汇编器、库管理工具、资源编译器、make、命令行工具和GUI版本、教程、代码示例、在线更新、标准模板库等。
MinGW编译器使得程序可以使用微软的C运行时库和一些语言相关的运行时库。
Tiny C Compiler以其优良特性跻身最优秀C编译器行列。该编译器具备完整的C预处理器和类GNU的编译器,收录了c语言所有的动态链接库,因此可以直接编译执行c代码,具有平台无关性。
关于作者:
可能感兴趣的话题
有这么多的ide可选,但是每个人其实只需要一个,然后不停的修炼,直至完全掌握这个工具。
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线内容团队正试图以我们微薄的力量,把优秀的原创文章和译文分享给读者,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2017 伯乐在线C++/SDK界面开发总结
对于不习惯用MFC的程序员来说,写界面应该是一个头疼的事情了。调用duilib等开源界面库的不讨论,本文主要说说Windows的原生界面功能开发,作为一篇总结,帮助新手入门。
主要通过新建资源窗口实现布局,调用就通过 DialogBox 和 CreateDialog 实现界面的显示。其中 DialogBox 为模态窗口, CreateDialog 为非模态窗口,简要说说区别:
模态窗口:在没有父窗口的时候,调用 DialogBox 实现显示窗口。在 DialogBox 这儿卡住,直到窗口关闭后继续以下的代码。
非模态窗口:调用 CreateDialog 之后,代码继续往下执行。如果没有父窗口,则执行 GetMessage TranslateMessage DispatchMessage 这几个代码,如果存在父窗口,则只需要进入父窗口的消息循环,子窗口也可以进行消息循环响应。
Windows 下面的控件种类繁多,在此我简要介绍几种的使用
2.1、托盘图标
// 文件:notifyicon.h
// 类:hNotifyIcon
// 主要功能:实现系统托盘图标设置
#pragma once
class hNotifyIcon {
NOTIFYICONDATA h_
hNotifyIcon (HWND hWnd, HICON hIcon, LPCTSTR lpTitle, LPCTSTR lpTips = NULL, int iTimeOut = 5);
~hNotifyIcon ();
BOOL Show ();
BOOL Hide ();
BOOL Message (LPCTSTR lpMsg, UINT niif_InfoWarningError);
BOOL IsShow ();
// 文件:notifyicon.cpp
// 类:hNotifyIcon
// 主要功能:实现系统托盘图标设置
#include &notifyicon.h&
#pragma comment(lib, &Shell32.lib&)
hNotifyIcon::hNotifyIcon (HWND hWnd, HICON hIcon, LPCTSTR lpTitle, LPCTSTR lpTips, int iTimeOut) {
this-&h_nid.cbSize = sizeof(NOTIFYICONDATA);
this-&h_nid.hWnd = hW
this-&h_nid.uID = GetTickCount ()&0xFFFF;
this-&h_nid.dwState = this-&h_nid.dwStateMask = 0;
this-&h_nid.uCallbackMessage = WM_USER+1;
this-&h_nid.hBalloonIcon = this-&h_nid.hIcon = hI
if (lpTips)
lstrcpy ((LPTSTR)this-&h_nid.szTip, lpTips);
lstrcpy ((LPTSTR)this-&h_nid.szTip, lpTitle);
lstrcpy ((LPTSTR)this-&h_nid.szInfoTitle, lpTitle);
this-&h_nid.uTimeout = iTimeO
hNotifyIcon::~hNotifyIcon () {
if (this-&IsShow ())
this-&Hide ();
BOOL hNotifyIcon::Show () {
this-&h_nid.uFlags = NIF_ICON|NIF_INFO|NIF_MESSAGE;
BOOL bRet = (BOOL) Shell_NotifyIcon (NIM_ADD, &this-&h_nid);
this-&h_nid.uFlags = NIF_INFO;
this-&h_nid.dwInfoFlags = NIIF_INFO;
BOOL hNotifyIcon::Hide () {
this-&h_nid.uFlags = NULL;
return (BOOL) Shell_NotifyIcon (NIM_DELETE, &this-&h_nid);
BOOL hNotifyIcon::Message (LPCTSTR lpMsg, UINT niif_InfoWarningError) {
this-&h_nid.dwInfoFlags = niif_InfoWarningE
lstrcpy (this-&h_nid.szInfo, lpMsg);
return (BOOL) Shell_NotifyIcon (NIM_MODIFY, &this-&h_nid);
BOOL hNotifyIcon::IsShow () {
return (BOOL)this-&h_nid.uF
实现上很简单,和MFC类似,对显示、隐藏、发送泡泡通知等功能进行了封装,需要使用时直接new一个对象出来,简单调用几下就完了。
2.2、ListView / ListCtrl
DWORD dwStyle = ListView_GetExtendedListViewStyle(hList);
dwStyle |= LVS_EX_FULLROWSELECT;//选中整行
dwStyle |= LVS_EX_CHECKBOXES;//复选框
ListView_SetExtendedListViewStyle(hList, dwStyle);
//添加标头
lc.mask = LVCF_TEXT | LVCF_WIDTH;
lc.cchTextMax = MAX_PATH;
lc.cx = 100;
lc.pszText = TEXT(&列1&);
ListView_InsertColumn(hList, 0, &lc);
lc.cx = 100;
lc.pszText = TEXT(&列2&);
ListView_InsertColumn(hList, 1, &lc);
li.mask = LVIF_TEXT;
li.cchTextMax = MAX_PATH;
li.iSubItem = 0;
li.iItem = 0;//插入第几行,从0开始
li.pszText = TEXT(&列1&);
ListView_InsertItem(hList, &li);
ListView_SetItemText(hList, li.iItem, 1, TEXT(&列2&));
li.iItem = 1;
li.pszText = TEXT(&列1&);
ListView_InsertItem(hList, &li);
ListView_SetItemText(hList, li.iItem, 1, TEXT(&列2&));
ListView / ListCtrl 的使用就方便多了,一大批 ListView_ 开头的函数,任君选择。
2.3、TabCtrl,也就是所谓的分页控件
分两步,第一步是初始化
hwndTab = GetDlgItem();
hwndChild[0] = CreateDialog();
hwndChild[1] = CreateDialog();
TCITEM ti = { 0 };
ti.mask = TCIF_TEXT;
ti.cchTextMax = MAX_PATH;
ti.pszText = TEXT(&tab1&);
TabCtrl_InsertItem(hwndTab, 0, &ti);
ti.pszText = TEXT(&tab2&);
TabCtrl_InsertItem(hwndTab, 1, &ti);
第二步,处理WM_NOTIFY消息
case WM_NOTIFY:
if (((LOWORD(wParam)) == IDC_TAB_MAIN) && (((LPNMHDR)lParam)-&code == TCN_SELCHANGE))
for(int i=0; i简单方便。
2.4、任务栏进度条&这个的实现比较麻烦,我放在云盘,需要的点此下载
有两个压缩包,可以直接拿来用,可以看看实现方法。另外,XP和Vista就不要试了,系统都没有这个接口的。
2.5、其他Windows常用控件写一行代码:&#include
然后点进去,其他该有的都有了,比如RadioButton、CheckBox等等。并不代表所有的都有,SDK界面开发等待着你的发掘。
3、C++/SDK 调用 Gdiplus
有了标准控件,总不能没有绘图吧?GDI太渣,又麻烦又复杂又不支持png还有锯齿。我在这儿简要说说如何引用Gdiplus。
首先,头文件和库别少,命名空间可以不引用,看个人爱好
#pragma comment(lib, &gdiplus.lib&)
using namespace G
然后,下面代码霸气甩进WinMain开头
ULONG_PTR gdiplusT
GdiplusStartupInput gdiplusStartupI
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
最后,下面代码霸气甩进WinMain返回前
GdiplusShutdown(gdiplusToken);
介绍的差不多了。 Win32 博大精深,如有遗漏之处欢迎指正。9184人阅读
C++ MFC API(60)
C++编程思想(28)
C++界面开发(1)
&&&&&& &很早就想写关于C++ UI开发的一系列博文,博客专栏刚审核通过,就马上开始刷博文,不能辜负自己的一番热血,我并不是写界面的高手,只想通过写博文提高我自己的技术积累,也顺便帮助大家解决界面开发的瓶颈。
能来到这里看我写文章,
第一说明你是windows下开发的程序员!
第二你对漂亮软件界面开发感兴趣!
第三或许你也像我当初一样对C++软件界面开发&无所适从!或许我写的不专业,但是我只想让利用C++编写客户端界面的新手程序员们对C++界面开发没有误区 。
我是从windows开发出身,深知当我们想要去用C++开发界面的时候是多么的操蛋,回头看看我们熟悉的MFC&win32SDK
,做出来的界面咋就那么难看,对比网上的那些绚丽软件我们的软件顿时显得档次很低了。做软件界面技术并不是多么高深,也并不是很难,只要找对路子很容易上手。虽然说的看似简单,但是写起来确实非常繁琐复杂,同时 需要对windows消息了如执掌才能写好C++ UI。
首先说说写界面的几种方式,在windows下面:
第一种界面开发方式
基于windows控件的自绘,相信很多程序员都听过MFC自绘等等术语,确实写起来不好写,实际上是MFC不好理解的缘故,真正的术语应该叫做win32界面自绘更能防止新手走进误区,因为MFC就是封装的win32 API,所以MFC界面自绘&就是win32界面自绘.原理大概就是我们拦截windows绘制界面的消息,然后我们代替他来绘制界面,从而实现我们的自定义界面。很多皮肤库通过Hook技术,拦截了windows的UI消息,然后实现了整体UI风格的切换,例如SKinMagic这个皮肤库。这种方式适合写库的人来玩,难度相对高,要对windows消息了如指掌。不过没关系&我会在后续文章分析windows的所有控件的实现&以及消息处理&和自绘。
第二种界面开发方式
基于DirectUI技术的界面,什么是DirectUI技术呢?我们知道在MFC中我们的软件界面都有句柄 ,句柄是一种系统资源。
但是基于DirectUI技术的界面组件是没有句柄的,我们需要自己封装大量的鼠标消息&&等等代替默认windows控件的消息。
这么说吧&加入你要用DirectUI技术绘制一个Button&&那么你就需要自己实现& 例如系统Button的一些状态.比如鼠标点击&&&&&&&&&& Hover& UnHover& Disable 时候 按钮的样子 以及消息的处理. 因为现在你不是在用windows默认的消息机制来实现界面。一切消息你自己封装。
DirectUI技术虽然是&无句柄绘制组件,但是&所有DirectUI界面必须有一个承载窗口作为&渲染窗口来使用,因为你绘图需要设备上下文嘛。
市面上有很多可以代替windows下繁琐的界面开发,后续会专门讲解如何在下面编写界面
Qt的GUI&以及QML都可以快速的开发软件界面,但是有一个缺点是软件包可能会有些大,不过开发效率的确是高&&&&这是本人的擅长之处后期会详细介绍QML开发跨平台界面UI
DUILIB&国内的界面库&比如金山&百度的一些产品中就用到了此库,除了有些小BUG之外&没啥太大的缺点&&&后期会在文章中介绍
Skin++一个收费的界面库,由于收费&技术不共享不适合我们学习使用&直接X掉
关于界面开发会遵循如下顺序进行:
&&&&&&&&&&&&&& 1、&一步一步&学习 Win32 SDK&以及MFC中通过&自绘实现界面DIY& 系列
&&&&&&&&&&&&&&& 1.1&&&自绘Button按钮
&&&&&&&&&&&&&&& 1.2&&&自绘Dialog
&&&&&&&&&&&&&&&& 1.3&&自绘菜单
&&&&&&&&&&&&&&&& 1.4& 自绘输入框
&&&&&&&&&&&&&&&& 1.5&自绘ComboBox
&&&&&&&&&&&&&&&& 1.6&自绘ListView
&&&&&&&&&&&&&&&&& 1.7&自绘Tab&
&&&&&&&&&&&&&&&&& 1.8&自绘ScrollBar&
&&&&&&&&&&&&&&&&& 1.9&通过HooK实现界面自绘
&&&&&&&&& & && 2、DirectUI方式&&基于 GDI+开发&&自定义软件界面组件&系列
&&&&&&&&&&&&&&&&& 2.1 GDI+使用入门
&&&&&&&&&&&&&&&&& 2.2 GDI+&实现DirectUI系列
&&&&&&&&&&&&&& 3、Qt下的界面开发系列
&&&&&&&&&&& ·& 4、DUILIB快速开发界面系列
以上是我列出的我想要去写的东西,写博文其实很枯燥无味,工作繁忙不能每天更新&但是至少保证每周更新两到三次博文,可能写的技术水平也不入大牛们的眼,但是对于新手来说&能帮助快速进入界面开发的门槛&那么就足够了。~
附上最近写的测试界面
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:822595次
积分:11841
积分:11841
排名:第1043名
原创:313篇
转载:91篇
评论:137条
阅读:16106
文章:12篇
阅读:24819
没有辛苦耕耘,哪来的收货!程序开发的道路上永远没有捷径可走。

我要回帖

更多关于 硬盘有问题会蓝屏吗 的文章

 

随机推荐