
界面/图形
mynamelj
这个作者很懒,什么都没留下…
展开
-
创建一个CTabView类
// 头文件#pragma once// CTabViewclass CTabView : public CCtrlView...{ DECLARE_DYNCREATE(CTabView)public: CTabView(); virtual ~CTabView(); CTabCtrl& GetTabCtrl() const;protected: DECLARE_MESSAGE_MAP(原创 2006-10-09 19:52:00 · 6220 阅读 · 2 评论 -
使用GDI+保存带品质的JPG
<br /> 由于使用CImage将图像转换成JPG后品质严重受损,如果使用第三方库程序体积会很大,所以使用GDI+是最合适的选择。下面的代码示例了将位图格式的图像转换成不同品质的JPG格式,注意在使用之前要初始化GDI+库。<br /> <br /> HRESULT SaveImage(BITMAPINFO *pbi, void *pBits, LPCTSTR pszFileName, LONG lQuality){ ASSERT(pbi!=NULL && pBits!=NULL); A原创 2010-10-23 14:52:00 · 2650 阅读 · 0 评论 -
使用CImage显示透明的PNG图片
CImage的AlphaBlend函数可以显示半透明或透明的图片,但是当使用这个函数显示PNG图片时,经常会发现PNG图片的背景没有透明,而是被显示为白色.在网上多处搜索都没有找到原因,只能自己动手了.通过调试代码可以发现,CImage的AlphaBlend函数内部调用的是全局的Window API函数:AlphaBlend(HDC hdcDest, int n转载 2009-11-07 15:56:00 · 3050 阅读 · 1 评论 -
进度条控件的绘制
在许多自绘控件中进度条的绘制是相对要非常容易得多的一件事情,因为进度条只作为进度信息的显示并不需要做其它的鼠标键盘事件处理,设置一下最小进度和最大进度基本上就可以用了。 我就说说我自绘进度条的方法,首先要绘制它就必须先获得进度相关的一些参数信息,列如最小进度最大进度和当前进度值,这些值获得的方法也很简单通常的办法就是向进度条控件发消息,例如PBM_GETPOS得到原创 2009-10-02 19:22:00 · 1633 阅读 · 0 评论 -
窗口控件透明的通用解决方案
这篇文章我最早在codeproject上发布,原文地址http://www.codeproject.com/KB/dialog/transparent-control.aspx. 反馈还不错,有时间把它翻译一下。 Download demo - 191 KB Download source - 205 KB IntroductionIn UI development, we have t转载 2009-05-14 02:19:00 · 1671 阅读 · 1 评论 -
类似于AlphaBlend,对24位位图进行透明混合
/*********************************************************************/ * ** Create24BPPDIBSection(HDC, int, int);原创 2009-03-26 20:38:00 · 1773 阅读 · 1 评论 -
使用CxImage库的初体验
众所周知CxImage库是个功能非常强大的图片处理库,它支大部分常用的图片格式,使用它最主要的理由是它能很好的支持带有Alpha通道的PNG格式图片。之前也尝试过使用微软的ATL::CImage类,这个类也支持大部分的图片格式包括PNG格式的,相比CxImage库而言它,它只是一个轻量级的ATL组件类在Windows平台下只要支持GDI+都可以很方便的使用这个库。原创 2008-12-28 22:11:00 · 4671 阅读 · 5 评论 -
SkinSB皮肤滚动条库的使用
说明 SkinSB库能为Windows标准控件或制定控件设置自定义滚动条皮肤,从而去达到美化控件的目的,如果觉得原Windows滚动条样式无法与你的程序界面搭配的话,那么SkinSB能帮你轻松的完成滚动条皮肤问题。该源代码为C语言编译通过,以标准API调用规范导出来函数,因此它可以在其它语言中使用,只需要将静态连接库改为动态链接库即可。 作者 : 李俊E-Mail : n原创 2009-02-16 12:29:00 · 10312 阅读 · 53 评论 -
位图的一些相关知识
从位图中创建一个区域窗口需求:时候在制作一些特殊的界面时可能要用到异形窗口。解决方案:制一张位图,在位图中指定一个透明色,这个透明色大多作为背景,也就是窗口中要切除的部分,即在一张位图中提取一个区域窗口是一个再方便不过的事情了,实现原理实际上是读取位图中的每个像素和指定的透明色进行对比,如果是相同的颜色就排除,否则就合并起来。 ///////////////////////////原创 2008-05-22 14:51:00 · 1180 阅读 · 0 评论 -
画一个透明背景的位图
// 该函数摘自MSDN.void DrawTransparentBitmap(HDC hdc, HBITMAP hBitmap, short xStart, short yStart, COLORREF cTransparentColor)...{ BITMAP bm; COLORREF cColor; HBI原创 2006-08-29 09:19:00 · 1793 阅读 · 0 评论 -
利用封装的一个函数显示一个弹出式菜单
BOOL AfxShowPopupMenu(CWnd* pWnd, UINT nID){ ASSERT(nID!=NULL && pWnd!=NULL); CMenu menu; CPoint pt; GetCursorPos(&pt); if(!menu.LoadMenu(nID)) { TRACE0("Falied to load menu source./n"); return FAL原创 2006-08-29 11:22:00 · 1097 阅读 · 0 评论 -
转换一个JPG/GIF格式的图片到BITMAP位图格式.
说明:在这里写个函数反回一个位图句柄,用法类似于LoadImage函数,指定一个图片的路径就行了.注意:用完后记得释放.HANDLE LoadAnImage(LPCTSTR FileName){ // Use IPicture stuff to use JPG / GIF files IPicture* p; IStream* s; HGLOB原创 2006-08-28 11:08:00 · 3398 阅读 · 0 评论 -
利用ITaskbarList接口隐藏窗口在任务栏上的显示.
这种方法实际上是利用COM提供的ITaskbarList接口来实现的,在这里写个函数来完成这项工作.注意:在用该函数之前必需初始化COM库.BOOL ShowInTaskbar(HWND hWnd, BOOL bShow){ HRESULT hr; ITaskbarList* pTaskbarList; hr = CoCreateInstance( CLSID_Task原创 2006-08-25 11:18:00 · 3544 阅读 · 3 评论 -
无边框窗口实现拖拉效果
实现效果需要处理以下这三个消息:WM_NCHITTEST WM_SETCURSOR WM_NCLBUTTONDOWN 消息处理函数:UINT CXXXDlg::OnNcHitTest(UINT nHitTest, CPoint point)...{ CRect rect; GetWindowRect(&rect); if(point.x rect.left+3) ret原创 2006-12-16 16:02:00 · 3214 阅读 · 2 评论 -
自绘CListCtrl防止闪烁的方法
自绘控件中经常会遇到闪烁的问题,主要原因是某个区域发生了重复性的绘制而导致的,而列表控件在自绘后闪烁原因是WM_ERASEBKGND消息所导致的。解决定办法可以将这个消息屏蔽掉,然后使用双缓存,在Windows 5.1版本以后可以使用LVS_EX_DOUBLEBUFFER样式,为了各个版本的兼容性我个人不建议使用这个样式,因此我们可以拦截WM_PAINT消息来使用我们自已创建的双缓存,具体看代码所原创 2011-06-27 23:03:00 · 3074 阅读 · 1 评论