
-------1.8 WIN32
文章平均质量分 91
启舰
今天就是未来,没有人能代替你奋斗!自己造的船,终有一天它会扬帆远航!
展开
-
SubClassWindow详解 子类化机制
许多Windows程序员都是跳过SDK直接进行RAD开发工具[或VC,我想VC应不属于RAD]的学习,有些人可能对子类化机制比较陌生。 我们先看看什么是Windows的子类化。Windows给我们或是说给它自己定义了许多丰富的通用控件,如:Edit、ComboBox 、ListBox……等,这些控件功能丰富,能为我们开发工作带来极大方面,试想:我们单单是自己实现一个EDIT控件是多么的艰难!但转载 2013-05-20 15:25:50 · 6600 阅读 · 0 评论 -
GDI+学习及代码总结之——GDI+双缓冲等问题总结
GDI+双缓冲技术转载地址:http://cnbeta2004.blog.163.com/blog/static/602313402010119104451537/早前曾为此问题在CSDN发帖求助(GDI+ 如何使用双缓冲绘制图像),得到了一个GDI+下较可行的方法,虽然绘制效果比直接绘制要好一些,不过还不能跟GDI的双缓冲方式比肩。现在,我终于找到了一个理想的实现方式,效原创 2013-06-25 10:46:02 · 5259 阅读 · 0 评论 -
WIN32界面开发之一:初试加载背景界面
前言:在实际开发中,虽然有已经成形的界面库DUILIB,但DUILIB无法加载异形窗体,对PNG图片的支持不到位,最终我下决心,自己开发一套界面库,利用GDI+完成2D和3D功能,在这里,我将要记录下,我所做的界面开发的过程,并将它们整理成博客分享给大家,一步步来学习吧。内容概要:这篇主要实现的功能是加载一个背景界面,向大家介绍下,如何用GDI+加载背景界面的问题,然后就是如何在指定位置托原创 2013-07-15 15:02:09 · 16235 阅读 · 6 评论 -
WIN32界面开发之二:GDI+中的局部刷新技术
前言:GDI+很好用,但要将所有图像混合,必须要用到UpdateLayeredWindow,但UpdateLayeredWindow注定每次刷新都要刷新整个窗体,也就是说,哪怕我们只是改变的只是一个像素,也都要重新绘制整个窗体,就没有像GDI中那样有区域裁剪的功能,真无语了,搜遍整个网络也没找到UpdateLayeredWindow的局部刷新方案,最后想到在MFC中是可以使用GDI+的,而MFC中原创 2013-07-17 15:13:14 · 16576 阅读 · 3 评论 -
WIN32界面开发之三:DUI雏形开发(二)
前言:上篇《WIN32界面开发之三:DUI雏形开发(一)》讲解了界面加载框架的创建,但我们的这些控件并没有起到控件的作用,现在还无法响应我们的点击事件和其它事件,所以我们先给我们的框架添加上EVENT事件机制,然后我们再讲解,为什么我们还要加上NOTIFY通知机制,以及如何添加NOTIFY机制。一、添加EVENT事件机制基本思想:以通知某个按钮LButtonDown为例,我们首先在Ha原创 2013-07-29 09:27:22 · 7741 阅读 · 0 评论 -
WIN32界面开发之三:DUI雏形开发(一)
前言:这部分涉及工程比较大,所以我打算分开为两篇来写,第一篇完成基本框架的构建,第二篇添加上EVENT和NOTIFY机制。完成目标:仿照DirectUI,完成一个基本雏形,开发一个布局控件(Dialog),和一个按钮控件(Button),通过XML来布局窗体,最后按钮响应点击、鼠标移动等事件信息,用户还可以通过NOTIFY机制来定制,用户具体行为时,界面所要做的动作。给大家看下最终界面吧,一个原创 2013-07-26 09:26:26 · 15316 阅读 · 13 评论 -
关于字符串
字符串的转换问题及赋值等等的问题确实很烦人,这里对遇到的问题总结一下字符串格式化一、unicode下字符串格式化 WCHAR tempStr[100]=L""; swprintf(tempStr,L"今年我%d岁了",25);结果:今年我25岁了ASCII与UNICODE间转换一、ASCII与UNICODE间字符串转换ASCII->UNICODE方法一原创 2013-06-03 02:46:15 · 3161 阅读 · 0 评论 -
_TrackMouseEvent 与 WIN32 ToolTip
一、_TrackMouseEvent默认情况下,窗口是不响应 WM_MOUSELEAVE 和 WM_MOUSEHOVER 消息的,所以要使用_TrackMouseEvent函数来激活这两个消息。调用这个函数后,当鼠标在指定窗口上停留超过一定时间或离开窗口后,该函数会 Post 这两个消息到指定窗口。1、添加头文件和库在stdafx.h中,添加所需要的头文件和库文件,代码如下:原创 2013-08-06 19:39:17 · 5810 阅读 · 2 评论 -
WIN32无边框窗体的缩放、移动与WM_NCHITTEST消息&&UpdateLayeredWindow重要心得
一、WM_NCHITTEST消息MSDN对它的解释是:The WM_NCHITTEST message is sent to a window when the cursor moves, or when a mouse button is pressed or released. If the mouse is not captured, the message is sent to原创 2013-08-06 08:46:44 · 24038 阅读 · 1 评论 -
GDI+在界面开发中遇到的问题汇总
一、利用UpdateLayeredWindow,在GDI+绘制字体时,FontStyleRegular样式的字体会变成透明,而其它的样式都可以正常显示;问题的原因是:层窗口(WS_EX_LAYERED),用UpdateLayeredWindow输出的文字(用常规方法输出的:TextOut、DrawText、DrawString...),并且设置了AC_SRC_ALPHA和ULW_ALPHA原创 2013-07-09 19:53:32 · 5762 阅读 · 1 评论 -
SetWindowLong 用法
我们这里主要讲两点用法,一:如何修改窗体样式;二、如何使用GWL_USERDATA保存值;一:修改窗体样式先贴出一段可行的,去掉窗体标题栏的代码: LONG styleValue = ::GetWindowLong(*this, GWL_STYLE); styleValue &= ~WS_CAPTION; ::SetWindowLong(*this, GWL_STYLE, st原创 2013-08-07 10:35:04 · 24273 阅读 · 0 评论 -
GDI+学习及代码总结之------区域
在GDI+中,对于区域的部分基本上使用了GDI的区域构造函数与合并方法,所以我们先看看GDI中的区域是如何构造与操作的。GDI中区域构建与操作一、基本函数创建矩形区域:HRGN CreateRectRgnIndirect(CONST RECT *lprc);HRGN CreateRectRgn( int nLeftRect, // left点坐标(X原创 2013-06-17 20:28:26 · 12033 阅读 · 2 评论 -
WIN32界面开发之四:CPaintManagerUI类构建
前言:前面我们完成了对DUI雏形的构建,但大家有没有注意到一个问题,我们对消息的处理都是在用户构建的类(CStartPage)中,还有,为了在控件中可以实时刷新,所以每个控件都必须带有一个变量m_hwnd,来保存当前窗体的句柄,而且在每次发送EVENT消息时都要赋值,相当麻烦,所以,我们将这些控件都具有的一些操作和变量,全部都集合起来,封装成一个类,这个类就是CPaintManagerUI原创 2013-07-30 20:50:04 · 10601 阅读 · 1 评论 -
WIN32 基本操作汇总
总结下我碰到的WIN32的操作,以免每次都百度。一、去掉WINDOW的某个STYLE LONG style=GetWindowLong(m_hWnd,GWL_STYLE); style=style&~WS_MAXIMIZEBOX; SetWindowLong(m_hWnd,GWL_STYLE,style);上面实现了,去掉最大化操作,如果想加上用|运算操,这个操作涉及到二进制运算符原创 2013-05-31 11:13:11 · 2272 阅读 · 1 评论 -
GDI+学习及代码总结之------图像的编码与解码
一、获取编、解码器信息获取编码器信息开发人员可以使用诸如GetImageEncodes来获取系统可用的编码器,用GetImageDecodes来获得系统可用的解码器;由于这两个函数都是一样的,所以我们只看GetImageEncodes函数的定义就好了;Status GetImageEncoders( UINT numEncoders, UINT size, Im原创 2013-06-24 21:20:14 · 5401 阅读 · 0 评论 -
GDI+学习及代码总结之------图像的基本处理
图像的基本操作在GDI+中,对图像的处理主要靠两个类,Image类和Bitmap类,Bitmap类是在Image类的基础上派生出来的。这里主要讲Image类的使用,Image类支持对BMP, GIF, JPEG, PNG, TIFF, 和 EMF,尤其注意,在PNG图像中,包含ALPHA通道,所以能实现不规则图像;一、图像的打开与显示图像打开我们在前言部分已经讲到,在GDI+中原创 2013-06-19 15:37:50 · 29774 阅读 · 3 评论 -
WIN32 完整的开发流程
转载地址:http://blog.csdn.net/tcjiaan/article/details/8497535感谢原作者!!上一篇中我给各位说了一般人认为C++中较为难的东西——指针。其实对于C++,难点当然不局限在指针这玩意儿上,还有一些有趣的概念,如模板类、虚基类、纯虚函数等,这些都是概念性的东西,几乎每一本C++书上都会介绍,而平时我们除了会接触到纯虚函数外,其他的不多用。纯转载 2013-05-20 16:37:29 · 2726 阅读 · 1 评论 -
指针相减(同类型与不同类型)
前言:本文是转载的,但由于转载地址仍然是转载的,所以不知原文出处,对此表示抱歉,但仍对原作者表示深深的敬意!!!谢谢!! 如果两个指针指向同一个数组,它们就可以相减,其结果为两个指针之间的元素数目。 假设我住在广场路124号,Mag住在广场路142号,每家之间的地址间距是2(在我这一侧用连续的偶数作为街道地址),那麽Mag家就在我家往前(142-124)/2家,也转载 2013-05-21 09:59:19 · 15297 阅读 · 0 评论 -
_tcstol 字符串到数字的转化
先看MSDN上对_tcstol的解释1、在不同平台上的不同形式TCHAR.H Routine _UNICODE & _MBCS Not Defined_MBCS Defined_UNICODE Defined_tcstolstrtolstrtolwcstol2、定义long strtol( const原创 2013-05-21 14:05:40 · 14163 阅读 · 3 评论 -
SDK中使用GDI+出现的编译问题解决方案
转载地址:http://blog.163.com/yxl80718@126/blog/static/247661322010015113755430/GDI+是从windows XP开始提供的图形库,基于GDI构建在MFC中使用GDI+,编译时不会出现什么大的问题,但是SDK中却会报告很多未定义的类型,其中主要是和COM有关的声明,这里就这一小问题进行解决。首先要知道,GDI+转载 2013-05-22 10:20:24 · 2991 阅读 · 0 评论 -
invalidateRect解析
先看函数结构:BOOL InvalidateRect(HWND hWnd, // handle of window with changed update regionCONST RECT *lpRect, // address of rectangle coordinatesBOOL bErase // erase-background flag);参数说明:1:hwnd原创 2013-05-23 10:11:09 · 4303 阅读 · 0 评论 -
GDI+学习及代码总结之-----画笔
画笔一、构造函数画笔有两个构造函数,分别看下:Pen( const Color& color, REAL width);Pen( const Brush* brush, REAL width);注意:第一个构造函数:从一个颜色构造一个单色画笔,平时用的比较多 第二个构造函数要特别注意,它可以从一个画刷构造一个画笔,当画刷是纯色时,构造的也是纯色画笔原创 2013-06-05 11:10:12 · 11599 阅读 · 1 评论 -
内存绘图、双缓冲绘图
写在前面:这两天在分析DUILIB代码,遇到GDI绘图,现在对内存绘图和双缓冲绘图还不是很清楚,写转两篇文章以留备用,等学好了再给大家讲吧。内存绘图转载地址:http://redbox.blogbus.com/logs/2299466.html首先理解内存绘图,即把要绘制的东西先在内存中画好,然后一次性的画到屏幕上来。内存绘图经常用来防止闪烁。因为闪烁的原因是因为反差太大。转载 2013-05-22 19:52:51 · 14715 阅读 · 0 评论 -
GDI+学习及代码总结之------色彩与图像
色彩在GDI+中,色彩是通过Color类来描述的,不是用RGB类,用RGB构造会出错!GDI+中的色彩信息值是由一个32位的数据来表示的,它包括8位alpha值和各8位的R、G、B值,对于alpha值是用来表示透明度的,0表示完全透明,255表示不透明。从本质上讲,透明度是像素之间的一种合成运算,它的计算公式是:输出色彩=前景色*Alpha值/255 + 背景色*(255-Alpha值)/原创 2013-06-05 09:44:11 · 6768 阅读 · 1 评论 -
GDI+学习及代码总结之------画刷Brush
画刷BrushGDI+中定义了五种画刷类型,他们都派生于Brush类,他们分别是:注意:画刷与画笔不同,画刷只是用来填充区域,所以,画刷无宽度、长度可言。单色画刷SolidBrush一、构造函数SolidBrush greenBrush(Color(255,0,255,0)); //在GDI+中颜色值,没有RGB()构造,只能用Color()构造二、所使用的原创 2013-06-10 16:44:00 · 19731 阅读 · 2 评论 -
GDI+学习及代码总结之------文本与字体
字体、字体系列基本概念与构造字体系列GDI+中将具有相同字样、包括不同风格的字体称为字体系列。字体从其系列中获得名称、重量(如粗体、规则、加亮)以及风格。例如Arial字体系列包含了下列4种字体:Arial Regular(规则)、Arial Bold(黑体)、Arial Italic(斜体)、Arial Bold Italic(粗斜体);在GDI+中输出文本之前,需要构造一个原创 2013-06-14 19:12:12 · 38541 阅读 · 12 评论 -
GDI+学习及代码总结之------画线、区域填充、写字
《精通GDI编程》里的代码,在学习过程中对它加以总结,以防以后用到,所有代码都是在MFC 单文档中实现的,写在View::OnDraw(CDC */*pDC*/)中画线/边框(Pen)1、画单线-------DrawLine Pen pen(Color(255,0,0,0),3); PointF L_PTStart(0,0); PointF L_PTEnd(100,10);原创 2013-06-04 16:27:47 · 27293 阅读 · 2 评论 -
GDI+学习及代码总结之-----坐标变换、矩阵变换及色彩变换
坐标变换、矩阵变换在Graphics类中,有几个函数实现了简单的坐标变换Graphics::TranslateTransform(dx, dy, order)//平移坐标系Graphics::RotateTransform(angle, order)//旋转坐标系Graphics::ScaleTransform(sx, sy, order)//缩放坐标系这里有个order参数着原创 2013-06-18 15:21:07 · 12538 阅读 · 2 评论 -
关于WIN32 窗口信息的各种获取
一、当前鼠标点击位置的获取首先拦截WM_LBUTTONDOWN消息,然后再用下面方法获取鼠标位置方法一:(不建议使用)在使用win32的一些特殊宏时,有必要注意一下宏的定义,例如:#define MAKEWORD(a, b) ((WORD)(((BYTE)((DWORD_PTR)(a) & 0xff)) | ((WORD)((BYTE)((DWORD_PTR)(b)原创 2013-07-10 13:25:41 · 15675 阅读 · 0 评论 -
如何将Debug文件夹下的资源打包成一个EXE文件直接执行
前言:前段时间写了个小程序,想分享给好友看看,可所以养料原创 2014-05-30 14:51:26 · 29368 阅读 · 19 评论