摘要:在用VC做有关图表的时候,感觉不是那么方便,在codeproject找到一个柱形图的实用类,原文地址为:http://www.codeproject.com/KB/miscctrl/CBarChart.aspx。它可以很快速的生成柱状图,并且支持输出位图、支持打印、支持从数据库导入。原文章的类为多字节的,我自己改为了可适应多字节和Unicode版本的,如果有错的话,还请使用原文章所给出的源码。下面介绍下基本步骤:1.添加BarChart.cpp和BarChart.h工程;2.在需要使用的地方添加头文件#include"BarChart.h"3.定义一个CBarChart的变
阅读全文
随笔分类 - 图形界面编程
摘要:有时候,我们需要在列表框ListBox中插入带图标的文字项,这就需要自己派生一个类出来了,网上的一个CIconListBox类还不错,网站http://www.codeguru.com/Cpp/controls/listbox/article.php/c4749/这里介绍下使用方法,源代码我有改动,环境Visual Studio 2008 SP1:1.基于对话框的工程,名称为IconListBoxTest;2.拖动控件到对话框上,按下图所示排列:3.导入IconListBox.cpp和IconListBox.h两个文件到工程,在对话框头文件包含#include"IconListBox
阅读全文
摘要:分类:2.4 线程/图形学2010-04-30 22:141878人阅读评论(0)收藏举报文档null这是一个绘制直线的简单绘图程序,能过实现动态轨迹画线,在拖动时产生临时线来表示可能画出的直线效果。首先:建立一个单文档程序,名称为Demo然后:在视图类的声明文件里面加入数据成员classCDemoView:publicCView{//········protected:intm_Dragging;HCURSORm_HCross;CPointm_PointOld;CPointm_PointOrigin;//
阅读全文
摘要:系统环境:Windows 7软件环境:Visual Studio 2008 SP1本次目的:建立一个CDialogEx的对话框 我们知道在VS2008SP1引进了BCG第三方控件,可以使MFC界面编程容易些,但是关于这方面的资料并不多。可能是我使用的系统因素,在建立对话框时,选择“生成的类”基于CDialogEx后,发现代码并没有把创建的对话框派生CDialogEx,而还是派生自CDialog。所以我们只能手动改之。对于一个新建立的对话框,这里我建立的名字为Test工程,我们开始进行以下步骤:1. 在TestDlg.h中,修改以下地方:class CTestDlg : publicCDialo
阅读全文
摘要:系统环境:Windows 7软件环境:Visual Studio 2008 SP1本次目的:在模态或非模态对话框中使用Tab Control控件,及引申在单/多文档中使用查阅MSDN文档,对于创建Tab Control控件,MSDN上说明如下:To useCTabCtrldirectly in a dialog box1.In the dialog editor, add a Tab Control to your dialog template resource. Specify its control ID.2.Use the Add Member Variable Wizard to a
阅读全文
摘要:操作系统:Windows 7软件环境:Visual C++ 2008 SP1本次目的:实现无框移动 所谓的无标题栏对话框,是基于对话框的工程,对话框属性Border设置为None,对话框如下所示:为对话框添加左键点击事件,代码如下:[cpp]view plaincopy voidCPlayerDlg::OnLButtonDown(UINTnFlags,CPointpoint){//TODO:在此添加消息处理程序代码和/或调用默认值SendMessage(WM_SYSCOMMAND,0xF012,0);CDialog::OnLButtonDown(nFlags,point);}完成后,就可以拉动
阅读全文
摘要:操作系统:Windows 7软件环境:Visual C++ 2008 SP1本次目的:为静态控件添加事件,如:STATIC、Picture Control等等 有时候我们找到一个图片,为对话框背景添加了图片,我们需要在某个位置令其可以单击,如下两图所示:首先:修改静态控件属性Notify为True,修改控件ID号,一定要修改,在这里我改为IDC_RIGHT,右键为静态控件添加左键单击事件,在这里我在代码里面添加了弹出消息对话框以作测试,效果如下:虽然不是动态的按钮,但是效果蛮不错的。
阅读全文
摘要:操作系统:Windows 7软件环境:Visual C++ 2008 SP1本次目的:为滑动控件设置背景透明 经常在编写有背景的程序时,滑动控件Slider Control看起来与背景十分不合,我们可以从CSliderCtrl派生自己的类出来,以实现这个功能。下面是效果图:所参考的资料来自:http://dev.yesky.com/179/2284679.shtml派生类下载:http://download.csdn.net/source/1851812使用时,添加滑动控件后,为其添加控件变量,然后将其改为如下:[cpp]view plaincopy CmySliderControlm_sli
阅读全文
摘要:系统环境:Windows 7软件环境:Visual C++ 2008 SP1本次目的:为对话框设置背景颜色、控件颜色 既然MFC对话框不好开发,那么现在我们来开始美化我们的对话框。为对话框设置背景颜色、控件颜色等等。对话框背景颜色:网上流传有四种方法(可能还不止),在VC++2008SP1测试后,发现只有三种可以使用了,其中第一种被废弃了。以下是四种方法:方法一(失效):调用CWinApp类的成员函数SetDialogBkColor来实现。 其中函数的第一个参数指定了背景颜色,第二个参数指定了文本颜色。下面的例子是将应用程序对 话框设置为蓝色背景和红色文本,步骤如下: ① 新建一个基于Dial
阅读全文
摘要:如果我们不十分清楚需要什么样的界面风格及如何实现,请按以下两个步骤操作: (1) 搞清楚这种风格叫什么名字(2) 查现有的比较著名的GUI库是否已有相应的实现方案。(3) 目前本文收集的信息涉及Qt,MFC,wxWidget简介本文收集有关界面开发的类库,不断更新。开发库分类QtQt用Qt的界面库开发的界面,注意Ribbon风格在Qt中是非常容易实现的,这个界面很可能是Ribbon风格流行前就已做好的,在Qt的框架中,Ribbon只是一个Tab页加一些动效果。Qxthttp://libqxt.org/一组对Qt的扩展Developer Machines公司http://www.devmachi
阅读全文
摘要:Agg vs. Cairo 二维绘图引擎之比较和选择 cheungmine当今时代对于作为二维图形软件开发者, 是幸运的。因为除了Windows GDI/GDI+之外,我们还有很多其他的选择。而且这些选择除了能跨平台之外,性能上与原始GDI/GDI+相比,都不逊色。如果不考虑绘图的效果,使用Win32 GDI函数直接绘图的效率大约是同样的GDI Plus的10倍以上。为了反走样的美观,只有牺牲效率了。老式的程序还在使用GDI绘图,不是这些程序不想提升到GDI+,可能这样改动的代码量太大,所谓船大不好掉头所致。因此,后发的优势就是可以利用当今软件发展的最新成果,快速切入一个领域,所谓迎头赶上。言
阅读全文
摘要:原因是: DDrawSurface 丢失, DDraw表面在很多情况下都会丢失(如:启动其他全屏独占程序,屏保,或锁屏时), 表面丢失其实就是表面所使用的内存或显存被DirectDraw系统释放, 分配给其他程序. 如果表面丢失, 对此表面的操作都会返回 DDERR_SURFACELOST , 此时应该调用 IDirectDrawSurface 接口方法 Restore 来恢复表面(重新申请内存或显存)。伪代码如下:hr = m_lpDDSOffscreen->Lock(rcDest,&ddsd,DDLOCK_SURFACEMEMORYPTR|DDLOCK_WAIT,NULL);
阅读全文
摘要:好久没有更新博客了,今天开始继续耕耘。生活要继续工作要继续梦想也一定要继续!之前写过一篇关于DirectX截屏的文章,其中有网友留言提到了截图黑屏的问题,于是这些日子研究了一下,与大家一同分享。为什么会黑屏?一句话概括,黑屏是由于DDraw加速引起的!先说一下DirectX的显示原理,通常我们看到的屏幕上的数据,都是通过Primary Surface送至显示器的,什么是Primary Surface呢?中文叫做主显示表面,也就是说我们当前看到的屏幕上的图像数据是从这个表面来的,除了主表面意外还有离屏表面,叫做OffScreenSuface。这种表面中的数据是不直接显示在屏幕上的。常用的截屏函数
阅读全文
摘要:环境:VS2008 + CxImagebtn.h[cpp]view plaincopyprint? #pragmaonce//CBtn#include"ximage/ximage.h"classCBtn:publicCButton{DECLARE_DYNAMIC(CBtn)private:CxImage*m_pImgNormal;CxImage*m_pImgOver;CxImage*m_pImgDown;CxImage*m_pImgFocus;CxImage*m_pImgDisable;BOOLm_bTracking;BOOLm_bMouseOver;BOOLm_bLBtn
阅读全文
摘要:C++程序员打交道最多的就是MFC了,这个我不想多说,说来都是泪(C#年年更新,C++十年才出了一个featurePack还不是很好用)现在另外两支队伍越来越庞大(所谓穷则思变,呵呵),一是WTL,关于它的种种传说可以参考WTL中文教程,里面讲的很详细,这里我想说的是为什么使用WTL:传说WTL是微软内部所使用的界面框架程序,原因是高效,简洁,实际也是如此,WTL的程序内的内存占用比MFC小的多,而且WTL内建了对于可缩放对话框的支持(支持控件停靠哦),对于多文档以及视类的支持更是MFC望尘莫及的,但是WTL也有其自身的缺点,比如开发文档少,尤其是中文的,向导不够聪明(谁用谁知道,呵呵),换句
阅读全文
摘要:使用分层界面来实现界面皮肤的好处是:可以保证图片边缘处理不失真,且能用于异形窗口上,如一些不规则的窗口,你很难用SetWindowRgn来达到理想效果。在很多情况下,界面的漂亮与否,取决于PS的制作及创意,而界面编程所需要做的就是将图片完整无缺的展示给用户。分层窗口的好处就是:用一层窗口来描绘窗口背景,以确保背景图片不会失真,而另一层窗口用来放置控件,除控件之外的区域全是透明的。为什么要这么麻烦呢?因为我们将要用到UpdateLayeredWindow来实现窗口背景描绘,一旦执行这个函数后,窗口的控件将会被覆盖,不会再显示。所以我们要再加一层透明窗口,来放置控件,以确保控件不会受到Update
阅读全文
摘要:进行程序设计时,选用一个合适的ActiveX控件,有时可大大减少编程工作量。ActiveX 控件(又称OCX)基于COM技术,作为独立的软件模块,它可以在任何程序设计语言中插入使用。本文仅以VC++为例说明Chart控件的使用。 Chart控件指Mschart.ocx(5.0版)或Mschrt20.ocx(6.0 版),是Visual Studio自带的ActiveX控件之一,其属性、事件很多,功能非常强大,可实现柱状直方图、曲线走势图、饼状比例图等,甚至可以是混合图表,可以是二维或三维图表,可以带或不带坐标系,可以自由配置各条目的颜色、字体等等。一 安装和使用Chart控件 在用到Ch...
阅读全文
摘要:*[标题]:Skin++通用界面换肤系统V2.0.1破解探讨*[作者]:gz1X *[来自]:中国黑客联盟*[前言]:skin技术,大家都不会陌生,比如winamp,可以灵活的更换界面风格。早期的实现定制的外观方法都需要程序本身做许多处理,编码太麻烦。后来出现了专门的Skin插件,ActiveSkin什么的。再后来dll调用的skin软件出现,需要Skin支持的程序调用几个方法,就可以使自己的程序外观完全改变,不需要编程者对skin技术有任何的了解。Skin++通用界面换肤系统V2.0.1就是其中比较出名的一款。但是让很多“贫民”用户来说,要收费还是比较让人烦的。恰好我前几天做了个小项目,顺便
阅读全文
摘要:深度剖析消息反射机制作者:hustli 摘要:在前面我们分析了控件通知消息WM_NOTIFY,和WM_NOTIFY紧密联系的还有一个MFC新特性:消息反射。本文中,我想就这个问题作一个全面的论述,如果有错误,还望各路大虾批评指正。 什么是消息反射? 在windows里面,子控件经常向父控件发送消息,例如很多子控件要绘制自己的背景,就可能向父窗口发送消息WM_CTLCOLOR。对于从子控件发来的消息,父控件有可能在处理之前,把消息返还给子控件处理,这样消息看起来就想是从父窗口反射回来一样,故此得名:消息反射。 消息反射的由来 在windows和MFC4.0版本一下,父窗口(通常是一个对话框)会对
阅读全文
摘要:界面美化摘要本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础:1.大致了解MFC框架的基本运作原理;2.熟悉Windows消息机制,熟悉MFC的消息映射和反射机制;3.熟悉OOP理论和技术;本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助。正文1. 美化界面之开题篇相信使用过《金山毒霸》、《瑞星杀毒》软件的读者应该还记得它们的精美界面:图1 瑞星杀毒软件的精美界面程序的功能如何如何强大是一回事,它的用户界面则是另一回事。千万不要忽视程序的用户界面,因为它是给用户最初最直接的印象,丑陋的界面、不友好的风格肯定会影响用户对软件程序的使用。
阅读全文