
C++
文章平均质量分 74
eplanet
人生就像一杯茶,不会苦一辈子,但总会苦一阵子~
展开
-
C++/MFC——一个能作出PhotoShop工具栏的Button控件
这个控件能够制作出和PhotoShop几乎一样的工具栏。当然换了图片以后也能作出其他的效果。能够完美的支持三态(Normal,Mouse Over,Checked)。描画部分使用了GDI+,如果没有安装的话,安装一下就好了。GDI+是一个微软免费提供的描画库,是WIN平台上GDI库的改进版,拥有很多方便的功能。下载后,解压缩到一个位置,然后在VC6的Tools / Options / Direc原创 2007-09-13 10:32:00 · 3100 阅读 · 1 评论 -
C++/MFC/GDI+——获取Graphics中的图像数据
GDI+中的各种描画方法虽然很好用,但如果想获得一个Graphics中已经画好的内容却不那么容易了。做了一些尝试后,我用以下方法解决了这个问题。 首先,获得源Graphics的HDC,这个通过GetHDC()就能得到。 然后建立一个CDC,通过Attach(HDC hdc)使一个CDC与刚刚获取的HDC关联。 再建立一个目标CDC。 CBit原创 2007-11-28 12:24:00 · 8773 阅读 · 2 评论 -
C++/MFC——获得MFC窗口其它类指针的方法
获得CWinApp: -在CMainFrame,CChildFrame,CDocument,CView中直接调用AfxGetApp()或用theApp -在其它类中只能用AfxGetApp()获得CMainFrame: -在CMinApp中用AfxGetMainWnd()或者m_pMainWnd -在CChildFrame中可用GetParentFrame() -在其它类中用AfxG转载 2007-11-21 10:09:00 · 2042 阅读 · 1 评论 -
Visual Studio 2005 SP1 的几个Bug
1. 遇到了这样的问题,利用VS2005写MFC的时候,向导在我想添加消息和事件的处理时,一个劲的弹出“无法执行添加/移除操作,因为代码元素XXX是只读的”,在经过一轮检查后,确认所有相关的文件都是可写的之后,问题依然。尝试了如下方法:1. 删除.ncb文件——问题照旧。2. 删除项目对相关文件的引入,然后重新引入文件——第一次好用了。但再次遇到这个问题的时候(另一个类),就不好用了。原因不明。3原创 2007-11-21 09:56:00 · 1566 阅读 · 0 评论 -
C++/GDI+ 学习笔记(四)——实用技巧——调色板(ColorPalette)
在使用的过程中,遇到了这样的一个情况。维护很久前的一个项目的时候,想把之前的程序作成DLL。里面有一部分是描画一张8位DIB图片的,用的是纯C写的一段代码。可是在使用的时候发现,GDI+中由于使用了Alpha,所以老代码里面的调色板需要进行一些处理。ColorPalette类,这个是GDI+中的调色板类。在对调色板进行调整的时候,我们是一定要使用它的。在C#中,ColorPalette 是没有原创 2008-01-30 11:06:00 · 11343 阅读 · 2 评论 -
C++/GDI+ 学习笔记(四)——实用技巧——双缓冲(Double Buffer)
双缓冲在GDI+里可以有效的提高描画效率。改善显示的质量。 下面的代码是一个最简单的双缓冲的模板。可以根据需要,做简单的修改即可。 Bitmap CacheImage( [Width], [Height] ); Graphics CacheGraph原创 2007-10-12 09:44:00 · 4344 阅读 · 2 评论 -
C++/GDI+ 学习笔记(四)——实用技巧——颜色矩阵(ColorMatrix)
颜色矩阵在GDI+中是十分有用的。一位颜色信息,由ARGB四部分组成,分别是透明度和三个颜色分量。一个4×4的矩阵即可完整的表示出一个颜色的矩阵,但4*4矩阵无法完成一些变换(例如平移),所以补成了一个5×5的矩阵。最后的一位一直是1。 ColorMatrix colorMatrix =原创 2007-10-15 08:59:00 · 3681 阅读 · 3 评论 -
C++——测试工具CppUnit的安装和配置
The first port of JUnit to C++ was done by Michael Feathers. His versions can be found on the XProgramming software page. They are os-specific, so Jerome Lacoste provided a port to Unix/Solaris. His v原创 2007-10-26 10:24:00 · 11483 阅读 · 0 评论 -
C++/GDI+ 学习笔记(二)——几个例子
1. 第一个例子——“Hello World!”第一个最经典的例子当然是Hello World了:) Graphics mygraphics(*pDC); //创建一个Graphics对象 //创建一个原创 2007-10-09 09:25:00 · 5674 阅读 · 0 评论 -
C++/GDI+ 学习笔记(一)——安装、配置&使用
使用GDI+很简单。需要做的有一下几个步骤。1. 安装GDI+ SDK开发包。网上很多地方都有下载。解压到一个地方即可。2. 设置编译器的包含路径,VC6的设置方法是 Tools/Options/Directories下分别设置inlude和lib的路径即可。当然也可以在每个工程的Setting里修改相关的设置达到同样的效果。在包含相关的文件的时候,加上全路径也可以原创 2007-10-09 09:11:00 · 11594 阅读 · 3 评论 -
C++/GDI+ 学习笔记(三)——基础
GDI+ 的主要画刷 SolidBrush 单色画刷 SolidBrush(const Color&原创 2007-10-10 10:25:00 · 7075 阅读 · 0 评论 -
C++/MFC——一个能截获和屏蔽系统热键的钩子
BOOL installhook()...{ HINSTANCE hins=AfxGetInstanceHandle(); HHOOK Hook = SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)KeyboardProc,hins,0); return (BOOL)Hook;}第一句是获得当前应用实例的句柄。第二句是创建钩原创 2007-09-18 16:15:00 · 7495 阅读 · 1 评论 -
C++/GDI+ 学习笔记(五)——应用实例——半透明的阴影效果
利用 GDI+可以很容易的描画出逼真的半透明效果的阴影。void DrawShadow(Graphics &g, GraphicsPath ButtonPath)...{ g.SetPageUnit(UnitPixel); //设置Graphics的坐标单位为像素 GraphicsPath &ShadowPath = *(ButtonPath.Clone()); //拷贝原创 2008-01-16 14:18:00 · 5867 阅读 · 3 评论