DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2013年11月6日

摘要: 一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁。先来谈谈闪烁产生的原因原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕上只是写到了显存里,而显卡每隔一段时间把显存的内容输出到屏幕上,这就是刷新周期。一般显卡的刷新周期是 1/80秒左右,具体数字可以自己设置的。这样问题就来了,一般画图都是先画背景色,然后再把内容画上去,如果这两次操作不在同一个刷新周期内完成,那么给人的视觉感受就是,先看到只有背景色的图像,然后看到画上内容的图像,这样就会感觉闪烁了。解决方法:尽量快的输出图像,使输出在一个刷新 阅读全文
posted @ 2013-11-06 14:14 DoubleLi 阅读(1503) 评论(0) 推荐(0)

摘要: 本文讨论的重点介于两者 之间 — 公共控件赋予您想要的大部分功能,但控件的外观并不是您想要的。例如,列表视图控件提供在许多视图风格中显示数据列表的方式 — 小图标、大图标、列表和详细列表(报告)。然而,如果您想要一个网格控件,那结果怎样呢?尽管公共控件库里没有特别包含网格,但是列表视图控件与它较为接 近,它以行和列显示数据,并有一个相关的标头控件。因此,许多人以一个标准的列表视图控件为起点创建自己的网格控件,然后重写该控件及其子项的呈现方式或 绘制方式。主宰绘图操作即使“只”进行绘制,您仍然有至少四种选项可用,它们都具有鲜明的优缺点:• 处理 WM_PAINT• 所有者绘制• 自定义绘制• 处 阅读全文
posted @ 2013-11-06 14:11 DoubleLi 阅读(1476) 评论(0) 推荐(0)

摘要: oid CMainFrame::OnLButtonDown(UINT nFlags, CPoint point){ if (!IsZoomed() && !IsIconic()) { SendMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y)); } CUIWnd::OnLButtonDown(nFlags, point);} 阅读全文
posted @ 2013-11-06 14:09 DoubleLi 阅读(380) 评论(0) 推荐(0)

摘要: 一. GDI编程基础字幕叠加,应当是属于图形、图像处理的范畴。在Windows平台上,图形、图像处理的方法当然首选GDI(Graphics Device Interface,图形设备接口)。GDI是什么?GDI其实是一套API函数;它们功能丰富,使用起来简单、灵活。下面,我们首先来介绍一些GDI编程的基础知识。 GDI函数有很多,我们大致可以把它们分成如下几类: · 设备上下文(Device Context,简称DC)函数,如GetDC、CreateDC、DeleteDC等; · 画线函数,如LineTo、Polyline、Arc等; · 填充画图函数,如Elli 阅读全文
posted @ 2013-11-06 13:54 DoubleLi 阅读(958) 评论(0) 推荐(0)

摘要: 原帖地址:http://blog.joycode.com/yaodong/archive/2004/11/26/39764.aspx一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁。先来谈谈闪烁产生的原因原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕上只是写到了显存里,而显卡每隔一段时间把显存的内容输出到屏幕上,这就是刷新周期。一般显卡的刷新周期是 1/80秒左右,具体数字可以自己设置的。这样问题就来了,一般画图都是先画背景色,然后再把内容画上去,如果这两次操作不在同一个刷新周期内完成,那么 阅读全文
posted @ 2013-11-06 13:46 DoubleLi 阅读(810) 评论(0) 推荐(0)

摘要: 一、什么是虚拟列表控件虚拟列表控件是指带有LVS_OWNERDATA风格的列表控件。。二、为什么使用虚拟列表控件我们知道,通常使用列表控件CListCtrl,需要调用InsertItem把要显示的数据插入列表中,之后我们就不必关心数据在哪里了,这是因为控件自己开辟了内存空间来保存这些数据。现在假设我们要显示一个数据库,里面的信息量很大,有几十万条记录。通常有两种方法解决这个问题:1是仅仅在 ListCtrl中插入少量的数据,比如100个,然后通过[上一页][下一页]两个按钮进行控制,某一时刻显示的只是从xxx到xxx+100之间的记录。2是把所有数据全部插入到ListCtrl中,然后让用户通过 阅读全文
posted @ 2013-11-06 13:42 DoubleLi 阅读(742) 评论(0) 推荐(0)

摘要: 一.引言上一篇我们讲了如何使用VC 2005来开发MFC ActiveX控件,我们开发ActiveX控件最终目的是将ActiveX控件发布出来并嵌入在Web网页中,随着控件的版本更新自动在客户端浏览器自动更新。这一篇我们就来讲讲这方面的实现。使用工具:PackageForTheWeb二.编译ActiveX控件在发布之前我们最好用VS2005将控件编译成“Release”版本,还有一个值得注意的地方是我们在使用MFC类库来开发ActiveX控件时要考虑客户端是否有MFC类库,解决方法有两种:1.在下面打包的时候将MFC的类库DLL附带上。2.通过“项目”—》“属性”打开项目属性对话框,将“MFC 阅读全文
posted @ 2013-11-06 09:50 DoubleLi 阅读(1719) 评论(0) 推荐(0)

摘要: 包含透明色的位图的绘制方法有多种,最简单的方法是调用现成的函数:TransparentBlt,也可以通过自己的代码实现类似 TransparentBlt的功能,实现过程也有两种形式,一种是事先做一张掩码位图,另一种是动态生成掩码位图。本文将介绍动态生成掩码位图绘制具有 透明区域位图的方法。一、TransparentBlt 函数的使用TransparentBlt 函数在Windows98/Windows2000以上版本运行,系统中需要包含 Msimg32.dll,使用时可以链接 Msimg32.lib。Windows98下的TransparentBlt会产生资源泄漏,所以不建议在WIN98下使用 阅读全文
posted @ 2013-11-06 09:44 DoubleLi 阅读(454) 评论(0) 推荐(0)

摘要: 由于项目中要实现子窗口的透明的功能,在网上找到了这一段提示:子窗口的透明和主窗口完全不同, 主窗口是通过layeredwindow实现的, 而子窗口则必须自己实现, 尤其是半透明, 必须自己对获取的透明背景图进行操作。 要实现子窗口的透明需要做到下面几步:1. windows的ExStyle中需要包含WS_EX_TRANSPARENT属性2. windows的Style中要去掉WS_CLIPSIBLING属性3. 对继承自windows标准控件的子窗口( 比如edit, scrollbar等等 ), 需要截获WM_CTLCOLORxxx消息并返回一个style为BS_HOLLOW的brush的 阅读全文
posted @ 2013-11-06 09:42 DoubleLi 阅读(1107) 评论(0) 推荐(0)