自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (12)
  • 收藏
  • 关注

原创 循序渐进实现仿QQ界面(六):异型菜单与内建滚动条自绘

本篇演示实现仿QQ界面的异型菜单与滚动条自绘。 先讲解一下如何实现QQ的圆角菜单,这个要用到HOOK了,因为菜单是一种特殊的窗口,无法用FindWindow或通过HMENU来获取到窗口句柄,也就无法子类化。必须下钩子,这里下的是WH_CALLWNDPROC的钩子: BOOL QQMenu::InstallHook(){ if(m_hMenuHook == NULL)

2010-03-13 21:51:00 15625 53

原创 循序渐进实现仿QQ界面(五):半透明窗体与不透明控件

本篇演示实现仿QQ界面的中间客户区。QQ是可以调整界面透明度的,但是调整了透明度却连中间客户区也变得半透明了。客户区毕竟是软件最重要的部分,是要与用户交互的,透明了就影响操作了,因此这里的客户区不学QQ,始终不透明。要实现不透明控件,只能创建一个弹出窗口,遮住主界面的客户区域,然后设定与主界面连动,即始终跟着主窗口移动及调整尺寸。这个方法并不是很好,但却几乎是唯一的方法。为什么说几乎是唯一的方法呢

2010-02-11 11:41:00 12854 22

原创 循序渐进实现仿QQ界面演示程序编译问题及MFC调用RingSDK图象库示例

有不少朋友反映《循序渐进实现仿QQ界面》里面的示例程序无法编译或编译有问题,以及希望能有MFC的工程,在此集中解答一下。 演示程序编译问题: 1、演示程序需要最新版本的RingSDK,请先用SVN到svn://svnhost.cn/RingSDK更新到最新版本,推荐用TortoiseSVN。TortoiseSVN的下载地址:http://tortoisesvn.net/downlo

2010-01-29 22:46:00 13312 52

原创 循序渐进实现仿QQ界面(四):圆形按钮与工具栏自绘

这一篇本来应该演示如何实现仿QQ界面的中间客户区与底部工具栏,不过在实现底部工具栏的时候发现圆形按钮与工具栏自绘有不少取巧的方法,因此加插这么一篇,讲解一下如何实现圆形按钮和工具栏自绘。 前面几篇都是在讲解如何实现QQ顶部的标题栏,是用窗口贴图实现,也讲到底部区域会用不同的方法实现,因此这里底部的QQ按钮和工具栏不是在主窗口上画图了,而是用控件实现。并且这里讲解的方法不局限于使用RingS

2010-01-26 23:47:00 9574 17

原创 循序渐进实现仿QQ界面(三):界面调色与控件自绘

本篇讲述如何进行界面调色。界面调色一般有两种方法,调色板和HSL色彩变换。调色板局限于256色,这里不采用,因此用HSL色彩变换实现。首先要了解一下什么是HSL色彩空间,完整且详尽的知识请到维基百科去看,链接地址:http://zh.wikipedia.org/wiki/HSL%E5%92%8CHSV%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4,这里简单讲一下(摘自维基

2010-01-15 00:39:00 19547 28

原创 循序渐进实现仿QQ界面(二):贴图按钮的三态模拟

开始之前先说一下RingSDK的编译问题,这里演示的程序需要用到最新版本的RingSDK,请务必用SVN到svn://svnhost.cn/RingSDK更新到最新版本,推荐用TortoiseSVN。如果是VC2008,编译应该没有问题,只是警告多了一点。VC6编译RingSDK之前需要安装Platform SDK,并且选择VC菜单Tools->Options...,在弹出的对话框中选择Dir

2010-01-10 23:23:00 15059 20

原创 循序渐进实现仿QQ界面(一):园角矩形与双缓冲贴图窗口

印象里仿QQ界面的程序应该有很多,搜了一下,虽然出来一大堆,排除了重复的,却只有两三个,没我想象的好。经常看到CSDN上有人问,QQ这个功能怎么实现,那个界面怎么实现,归纳了一下,决定写这么一个仿QQ界面程序,实用功能一律不实现,仅仿界面: 异型窗口贴图界面界面可调色,换底纹仿QQ界面上的各种自绘控件 QQ2009界面仔细研究起来,其实还是很复杂的,完全模拟做到一模一样还是很花工夫

2010-01-08 02:01:00 31186 52

原创 RingSDK界面库已改为LGPL协议

RingSDK界面库现已改为LGPL协议,不再有使用限制了。同时修正了一些BUG,增加了一些功能,大家可以到svn://svnhost.cn/RingSDK用SVN更新,文件打包太麻烦,因此不再提供文件下载方式更新。 这次更新主要是改了版权协议,还有修改并使用了ANSI和UNICODE的兼容函数,可以通过VC2008的编译,不过没提供VC2008的工程文件,使用VC2008的朋友可以直接点

2010-01-05 02:12:00 7852 13

原创 ADO连接用户级加密的ACCESS数据库

 最近做个项目需要连接到一个第3方软件用到的MDB数据库,该MDB文件是用户级加密,虽然合作方给了用户名,说没有密码,但是却无法用ADO进行查询,报没有权限。用ACCESS打开也是一样,无法看到表里的数据。于是到网上去搜,结果只搜到如何用ACCESS对MDB进行加密和打开加密文件,这个跟编程无关,就没细看。关于ADO连接加密MDB,却只有如何连接设置了密码的MDB,都是以默认的管理员登录,没有如何

2009-11-29 01:31:00 4561 3

原创 RingSDK技术文档:如何实现ListView列的隐藏

想实现ListView在详细资料视图下列的隐藏,网上搜了一下实现方法,发现不外乎两种方法,一种是删除列,这是真正的隐藏,但是得记录删除的每一个单元格的内容,以备该列再次需要显示时把内容回填。相当于把ListView原来记录的东西自己保存了,隐藏的列越多,要记录的东西越多。而如果用户要修改已隐藏的单元格的内容,这就麻烦了。因为既然说“隐藏”,你就得允许修改已隐藏的内容,而实际上删除了,就得自己提供修

2008-11-20 10:02:00 3464 5

原创 RingSDK帮助文档发布!

终于把RingSDK帮助文档写完了。写帮助文档真是个苦差事,尤其是静态库的说明文档,那么多的函数说明。Doxygen生成的文档没办法符合我的要求,于是写了个脚本对其进行函数的文档分离,加载到我的帮助文件制作工具里面,然后开始填空。发现中文拼音里面出现频率最高的可能就是“a”和“z”了,再加上要按Caps Lock,Shift,Ctrl+C和Ctrl+V以及输入法切换,直打到左手小指抽筋,好几天才恢

2008-11-19 14:44:00 5361 14

原创 推荐一个界面库:RingSDK

    这是我自己写的界面库,编程一直用他,包含了界面库和图象库。这个库并不是有意为之,而是我多年编程过程中积累下来的。最初只是把一些经常要用到的功能封装成一些函数,建了一个静态库,方便自己编程,后来慢慢积累,函数越来越多,于是封装成类,再后来简单的封装也不行了,于是花了一段时间进行整理设计,基本上是重写了这个类库,于是就有了这个界面和图象库,是对过去自己编程写的代码的一个总结与整理,方便自己的编

2008-09-11 01:25:00 80310 139

原创 奇怪的问题,InvalidateRect最后一个参数在XP下无效

一直用的WIN2K系统,写的一个程序在本机正常,到XP系统的机器运行发现调整窗口大小时界面闪得厉害,程序比较大,而且这种闪烁还不好调试,因为单步调试没有闪烁效果,只能排除法找原因,最后以为找到原因了,就写了一个测试程序,就是用VC6向导自动生成API的Hello World程序,然后修改一下其WM_PAINT代码:case WM_PAINT:            hdc = Be

2008-09-02 14:43:00 2844 1

转载 解决Windows 程序界面闪烁问题的一些经验

原帖地址:http://blog.joycode.com/yaodong/archive/2004/11/26/39764.aspx一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁。先来谈谈闪烁产生的原因原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕上只是写到了显存里,而显卡每隔一段

2008-01-14 02:02:00 3669 2

原创 不用双缓冲实现无闪烁图象

首先说一下产生闪烁的原因,当窗口由于任何原因需要重绘时,总是先用背景色或背景图象将显示区清除,然后才显示图象,这样在短时间内背景色与显示图形交替出现,使得显示窗口看起来在闪。如果将背景刷设置成NULL,这样无论怎样重绘图形都不会闪了,但是会使得窗口的显示乱成一团,因为重绘时没有背景色对原来绘制的图形进行清除,而又叠加上了新的图形。一般的解决方法就是采用双缓冲,创建一幅内存图象,把背景和图片先绘

2007-12-03 16:43:00 6227 3

原创 一个效果独特的拼图游戏

 整理硬盘时翻出来这个东东,多年前写的了,是写ISEE图象浏览器插件时顺便写的一个游戏插件,同时写了一个测试程序,下载后运行程序,打开选择一幅图片后选择菜单“图象静态效果处理”->“拼图游戏”就可以玩了,图片打乱成碎片后每个碎片是拉伸显示的,增加了游戏难度。类似效果的游戏好象只看到《潘多拉魔盒》有。看看效果,原图:游戏截图:选中一块碎片,再选择另一块碎片可以交换,直到所有碎片还原到正确

2007-09-12 02:39:00 2457 3

转载 彻底了解DVD:从入门到精通

彻底了解DVD:从入门到精通-转自山楂树论坛白衣原创第一章 缘起    那片直径120mm的小小的塑料片,闪耀着一种迷幻般的光泽。一束绚丽的激光照射在这小小的塑料圆片上,成千上万比特的数据流沿着一根细细的光纤从DVD影机输送到AV功率放大器,在那里,经过杜比逻辑解码器无声而神奇的工作,无边无际的光影弥漫开来,在客厅幽暗的灯光下,我们的灵魂仿佛在片刻间从世俗生活中抽离,进入一个由声画构成的幻想国度…

2007-03-22 10:19:00 61234 1

原创 API编程:给对话框加上背景图案

 给对话框加上背景图案应该怎么做?Load一个BITMAP进来,WM_PAINT消息里面横向和竖向两个循环,BitBlt图案铺满整个对话框?其实有一个很简单的方法,初始化对话框的时候创建一个画刷:HBITMAP bmp = LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_BITMAP));static HBRUSH brush = CreatePatternB

2007-02-08 00:11:00 5881 7

原创 关于MenuHelp的使用

很多程序都是有菜单和状态栏,当用鼠标点开菜单移动选择各菜单项的时候,会在状态栏显示关于该菜单项的说明。这个功能MFC是封装好的,用向导生成即可,但用API编程就得自己编写代码了,查了一下MSDN,有个MenuHelp函数可以做到,函数原型为:void MenuHelp(    UINT uMsg,     WPARAM wParam,     LPARAM lParam,     HMENU hM

2006-12-31 01:15:00 2304 1

原创 VC调用存储过程的通用方法(ORACLE篇)

先对上一篇调用SQLServer的存储过程作一点补充,就是如果存储过程里有Insert,update,delete等操作,最后返回结果集,按示例代码有可能得不到数据,因为返回的数据有可能不在第一个结果集,需要进行遍历:long lngRec = 0;_RecordsetPtr Rs = m_Rs;   //m_Rs为调用存储过程返回的结果集while(Rs){   //结果集的处理,有无数据的

2006-06-27 10:43:00 4068 1

原创 VC调用存储过程的通用方法(SQLServer篇)

这里讨论的是ADO调用存储过程,按MSDN的例子,一般都是下面的调用方法(节选自MSDN):HRESULT hr = S_OK;    // Define ADO object pointers.    // Initialize pointers on define.    // These are in the ADODB::  namespace.    _RecordsetPtr pR

2006-06-21 02:15:00 9283 2

原创 DVD点滴:D5和D9

程序员可能没多少时间看碟,不过喜欢看是肯定的,周围的同事朋友很多都是从网上DOWN,不管枪版及画面质量,看的都很带劲。也有自己买碟看的,不过跟他们谈起版本,还真很少有知道D5和D9的,很多都是问一句:D9是什么东西?因此这里胡乱侃一下,只是凭记忆,没去找资料,说错了请大家指正。DVD的碟片按规格有几种,其中最常见的就是D5,单面单碟,容量4.7G左右,随便挑一家碟店,那种5,6块钱一张的片子就

2006-05-18 16:02:00 2486

原创 我的电影收藏历程

喜欢看碟,当初网络还不发达的时候,没条件上网DOWN片子看,那时可能也没有,只有买VCD回家看。从来不去租,因为租来的碟子上面都是划痕,心疼光驱。不知不觉,VCD已放满了几抽屉,一开始买的片子还有不少是枪版,后来跟老板关系好了,老板都会实话实说,评价碟子质量,基本就很少买到枪版了,因此都算精品,有不少朋友问我借。后来结婚,布置新房,买了一套音响,装修时就考虑到了5.1声道问题,因此墙里预留了音

2006-05-18 14:51:00 1898

原创 静态库中应慎用静态类成员

有各种各样的原因会用到类静态成员,一般是共享数据,但编写静态库的时候应慎重考虑,因为用在应用程序中没什么问题,但用在DLL中,可能灾难就开始了,看以下一个例子:静态库中有一个名为TestSQL的数据库操作类,有一个静态成员m_count记录对某一数据库的访问记数,每有一次数据库操作就将该值加一。当然在静态库里会把这个值初始化为0:int TestSQL::m_count = 0;为了应付多线程操作

2005-08-20 01:59:00 2807 2

原创 本机运行正常的ADO程序在别的机器上无法运行的问题

CSDN论坛上经常看到在本机编译运行正常的使用了ADO的程序放到别的机器上就不能运行了,我原来也碰到过这样的问题,后来发现是ADO引擎版本的问题,安装了VC的机器一般其数据库引擎版本都比较高,到低版本的系统就出问题了,解决方法就是把MDAC连同你的程序一起安装到目标机器,但是有没有更好的解决方法呢?答案是有的,就是改动一下你的源代码,一般调用ADO的程序代码里都会有这样一句:#import "c:

2005-08-02 15:01:00 4895 3

转载 Windows Sockets 2.0:使用完成端口高性能,可扩展性Winsock服务程序

翻译说明: 完成端口基本上公认为一种在windows服务平台上比较成熟和高效的IO方法,理解和编写程序都不是很困难。目前我正在进行这方面的实践,代码还没有完全调试和评价,只有这一篇拙劣的学习翻译文摘,见笑见笑。翻译这个文章,是因为我近期在学习一些socket服务程序的编写中发现(注意,只是在学习,我本人在这个领域经验并不充足到可以撰文骗钱的地步:P),如果不是逼着自己把这个文章从头翻译一遍,我怀疑

2005-07-22 15:13:00 3088

原创 关于WM_NOTIFY消息接收窗口的问题

WM_NOTIFY是控件发送给其父窗口的通知消息,一直没想过控件的父窗口变动的问题,直到想自己实现类似VC的停靠工具栏时才碰到这个问题。工具栏停靠时其父窗口是程序主窗口,当把工具栏拖出来,即拖出主窗口或是拖到客户区,必须创建一个POPUP窗口,工具栏的父窗口变为这个POPUP窗口。按照MSDN的说明,WM_NOTIFY是发送到父窗口,应该发送到这个POPUP窗口才对,结果POPUP窗口却截不到这个

2005-03-26 23:56:00 2851 2

原创 线程的封装技巧:把任意类的成员函数指针作为参数

线程的封装很简单,并没有多少东西,但是如果我告诉你,我封装的这个线程类里有个成员函数Start,作用是开启线程运行,可以这样调用:class a{public: DWORD ThreadFunca(LONG lParam); void StartThread(); CMyThread m_thread;}DWORD a::ThreadFunca(LONG lParam){ //线程执行代码

2004-10-18 13:48:00 8180 5

原创 打造自己的MFC:thunk技术实现窗口类的封装

MFC功能已经非常强大,自己做界面库也许没什么意思,但是这个过程中却能学到很多东西。比如说:窗口类的封装,从全局窗口消息处理到窗口对象消息处理的映射方法:    对界面进行封装,一般都是一个窗口一个类,比如实现一个最基本的窗口类CMyWnd,你一定会把窗口过程作为这个类的成员函数,但是使用WINAPI创建窗口时必须注册类WNDCLASS,里面有个成员数据lpfnWndProc需要WNDPR

2004-09-28 00:17:00 7332 6

仿QQ界面程序(6)

编译有问题的,请到以下地址去看: http://blog.csdn.net/ringphone/archive/2010/01/29/5271270.aspx 循序渐进实现仿QQ界面(六):异型菜单与内建滚动条自绘的配套源码,文章请见: http://blog.csdn.net/ringphone/archive/2010/03/13/5377522.aspx

2010-03-13

仿QQ界面程序(5)

编译有问题的,请到以下地址去看: http://blog.csdn.net/ringphone/archive/2010/01/29/5271270.aspx 循序渐进实现仿QQ界面(五):半透明窗体与不透明控件的配套源码,文章请见: http://blog.csdn.net/ringphone/archive/2010/02/11/5306231.aspx

2010-02-11

MFC调用RingSDK图象库示例

演示MFC调用RingSDK图象库,加载动画GIF生成异型动画窗口,按右键退出,左键可拖动。

2010-01-28

仿QQ界面程序(4)

缺头文件的,请到下面文章的地址去看。 http://blog.csdn.net/ringphone/archive/2010/01 循序渐进实现仿QQ界面(四):圆形按钮与工具栏自绘的配套源码,文章请见:http://blog.csdn.net/ringphone/archive/2010/01/26/5259819.aspx

2010-01-27

仿QQ界面程序(3)

循序渐进实现仿QQ界面(三):界面调色与控件自绘的配套源码,文章请见:http://blog.csdn.net/ringphone/archive/2010/01/15/5191809.aspx

2010-01-15

仿QQ界面程序(2)

缺头文件的,请到下面文章的地址去看。 循序渐进实现仿QQ界面(二):贴图按钮的三态模拟的配套源码,文章请见:http://blog.csdn.net/ringphone/archive/2010/01/10/5171490.aspx

2010-01-10

仿QQ2009界面1

仿QQ2009界面,详见http://blog.csdn.net/ringphone/archive/2010/01/08/5154760.aspx

2010-01-08

RingSDK使用说明(CHM格式)

RingSDK界面与图象库的帮助文档,CHM格式。

2008-11-19

RingSDK帮助文档

RingSDK帮助文档。关于RingSDK界面库请访问http://blog.csdn.net/ringphone/archive/2008/09/11/2911244.aspx

2008-11-19

RingSDK界面库

RingSDK界面库和图象库,包含源代码及示例程序代码。

2008-09-11

帮助文件示例

帮助文件示例

2007-10-12

helpmaker.zip

帮助文件制作工具

2007-10-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除