Windows
zwz1984
这个作者很懒,什么都没留下…
展开
-
重绘编辑控件
在MFC中,编辑控件的重绘,通常只涉及到边框。本文将讨论如何实现具有“高亮边框”的编辑控件。要实现具有“高亮边框”的编辑控件,首先要解决两个问题:问题一、怎样设计编辑控件的“高亮边框”?问题二、怎么实现编辑控件的“高亮边框”?我个人认为,“高亮”效果源于同类颜色的亮度切换(由暗色到亮色)。为此,我做了如下设计:常态时,编辑控件的边框颜色为“暗色”;激活时,边框颜色变为“亮色原创 2012-12-06 18:12:19 · 810 阅读 · 0 评论 -
duilib学习笔记
前段时间对皮肤引擎比较感兴趣,于是在VS第一人称快的无法直视的dot大神推荐下,看了一个小巧又好用的皮肤引擎:duilib。1. duilib简介duilib是一个开源的DirectUI界面库,简洁但是功能强大。而且还是BSD的license,所以即便是在商业上,大家也可以安心使用。现在大家可以从这个网站获取到他们所有的源码:http://code.google.com/p/d转载 2013-12-26 09:52:02 · 1099 阅读 · 0 评论 -
NPAPI开发详解,Windows版
本文通过多图组合,详细引导初学者开发NPAPI的浏览器插件。如需测试开发完成的插件请参考http://mozilla.com.cn/kb/dev/A.88/1. 准备工作开发工具本例使用的是visual studio 2008 英文版,下图是关于信息Windows SDK本例使用Windows7操作系统 这里下载SDKNPAPISDK本例使用的是Firefox4转载 2015-06-03 17:39:59 · 1186 阅读 · 0 评论 -
Windows下利用CMake和VS2013编译OpenCV
获取OpenCV有两种途径,一是预编译好的库,二是下载源代码自己编译。OpenCV官网http://opencv.org/提供。下载的OpenCV既包含编译好的库,也包含源代码。通过OpenCV官网右上角的彩带,可以获取托管在GitHub上的OpenCV最新源代码。本篇博文就是利用CMake和VS2013编译GitHub上获取的最新源代码。先来说一下自己编译的好处。由于获取的是转载 2016-01-28 10:41:20 · 682 阅读 · 0 评论 -
实现一个简单的压测工具
公司开发了一些服务器程序;上生产前需要进行压力测试,测试点包括:并发数、响应时间、吞吐量等指标。领导说,能不能仿照LoadRunner实现一个简单的压测工具(并发数在10000以上,结果指标以曲线图的形式展示)。任务下达后,我琢磨着这两个难点,怎么去实现?一、并发数支持 我使用过压测客户端StressMark,我就想能不能简单的改造下StressMark,来满足现...原创 2017-03-26 16:20:46 · 5045 阅读 · 3 评论 -
视频画中画的实现(图像合成)
在研发公司视频的过程中,兄弟部门提了一个需求:在客户端能不能以画中画(或矩阵)的形式来展示双向视频?摄像头采集的原始图像格式是YUV,如果我能把本地采集和远端传输的YUV图像合成到一起,问题就能得到解决。但是,怎么合成还是一头雾水。于是,上网找资料,终于发现了一篇类似的文章《YUV图像合成原理》,见http://blog.csdn.net/zwz1984/article/details/50403原创 2017-03-26 17:04:55 · 6461 阅读 · 4 评论 -
开源一个简单的VC界面库
转摘惯了,一时要主动码字,竟发现无从下笔。简单的说,就是我把工作中一些常用的控件,整理成一个简单的VC界面库。界面库命名为:TzUI,支持控件包括:Static、Button、Edit、Slider、Progress、ComboBox、RadioBox、CheckBox。源码托管在csdn上,地址为:https://download.csdn.net/download/zwz1984...原创 2017-03-19 22:12:56 · 3530 阅读 · 7 评论 -
视频中字幕的实现(分层窗口)
某客户的视频项目中,需要在视频上加入滚动字幕。粗略想了下,有两种实现方式:1. 在一个窗口上绘制视频帧和字幕实现方式:底层将视频帧数据通过回调传递给上层。上层在渲染窗口中,先绘制视频帧,再绘制上层字幕。这种方法,用惯了GDI绘制的人比较容易想到。但是,这样做并不是一种特别合理的方式。1)视频SDK中需要暴露视频帧数据。2)上层绘制视频帧可能会影响到底层的音视频同步。3)原创 2017-03-29 09:42:35 · 1464 阅读 · 0 评论 -
Windows程序崩溃定位
上传资源见:http://download.csdn.net/detail/zwz1984/9800293一、目录说明目录下有三个文件夹:Src、Lib、Tool。Src存放生成dmp文件(崩溃转储文件)所需要的源文件,需要集成到程序源码中的。Lib存放生成dmp文件的依赖库(dbghelp.dll)。现在的Window系统(Win7以上)都已集成了此库;如果系统中没有,则原创 2017-03-31 16:50:37 · 2944 阅读 · 0 评论 -
视频画中画的实现(窗口剪裁)
在视频后续的研发过程中,采用“图像合成”来实现画中画的模式,逐渐被舍弃。原因有两点:其一、图像合成会占用较多的资源;其二、展示方式不是太灵活(比如:当画中画中小窗口的大小、位置涉及调整时,需要动底层代码)。 在开发视频SDK时,我们通常给底层传入要渲染的窗口句柄;也就是说,窗口的绘制完全交于底层来处理。那画中画如何在上层控制呢?简单的将两个窗口叠加在一起,会因为视频的同时渲染而导原创 2017-03-26 17:51:58 · 3430 阅读 · 0 评论 -
操作系统管理内存的机制——为什么要设置虚拟内存?
在进入正题前先来谈谈操作系统内存管理机制的发展历程,了解这些有利于我们更好的理解目前操作系统的内存管理机制。一 早期的内存分配机制 在早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址。当计算机同时运行多个程序时,必须保证这些程序用到的内存总量要小于计算机实际物理内存的大小。那当程序转载 2013-11-12 09:45:19 · 1340 阅读 · 0 评论 -
TCP/IP 校验和算法简介
1. 前言校验和计算是NAT功能和内容修改功能的基本功,这些操作进行后都需要修改数据头中的校验和。2. 16位校验和计算2.1 基本原理IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,采用的都是将数据流视为16位整数流进行重复叠加计算。为了计算检验和,首先把检验和字段置为0。然后,对有效数据范围内中每个16位进行二进制反码求和,结果存在检验和字段中转载 2013-04-26 17:52:31 · 870 阅读 · 0 评论 -
重绘静态控件
MFC提供的静态控件,仅满足文本显示的简单需求。如果要实现“类似于超链接”的功能,我们需要在原有控件的基础上进行扩展。具体实现步骤如下:1. 从CStatic类派生一个子类CStaticEx2. 重载虚函数PreSubclassWindow,添加控件风格SS_NOTIFY说明:静态控件需要设置SS_NOTIFY风格,才能响应鼠标事件。void CStaticEx::Pr原创 2012-12-06 14:06:16 · 858 阅读 · 0 评论 -
重绘按钮控件
在MFC中,对按钮控件进行重绘;通常的做法是:当按钮处于不同状态时,贴上相应的背景图片。具体实现分四步:1. 从CButton类派生一个子类CButtonEx2. 重载虚函数PreSubclassWindow,将按钮的风格修改为BS_OWNERDRAW3. 从外部加载按钮处于不同状态下的背景图片4. 重载虚函数DrawItem;并在函数中,根据按钮的不同状态贴图原创 2012-12-08 10:32:09 · 1978 阅读 · 0 评论 -
重绘进度条控件
计算机在处理耗时任务时,常以进度条实时的显示处理速度,完成量等信息。我在做一个文件下载程序时,需要定制一个进度条(类似于迅雷)。具体需求:1. 支持文本显示。2. 文本以小数表示。3. 文本被进度条覆盖时,覆盖部分显示一种颜色,未覆盖部分显示另一种颜色。处理方法:需求1、默认进度条不包含显示文本。文本需要在OnPaint函数里手动绘制。需求2、默认进度条以整原创 2012-12-10 14:50:03 · 810 阅读 · 0 评论 -
重绘复选框控件
复选框的绘制与按钮基本相同,因为复选框本质上还是按钮。与按钮稍有区别的地方是:复选框的状态需要手动维护。我们可以定义一个名为m_nCheck 的成员变量,维护复选框状态。主要代码如下:LRESULT CCheckBoxEx::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) {// TODO: Add your spe原创 2012-12-13 14:28:00 · 2541 阅读 · 1 评论 -
重绘单选框控件
单选框的本质也是按钮,但是,基于单选框的显示逻辑,它的界面绘制比复选框要复杂。单选框有:BS_RADIOBUTTTON、BS_AUTORADIOBUTTON两种显示风格。具有BS_AUTORADIOBUTTON风格的单选框,只要选中一个子项,同组的其它子项就会自动变成非选中状态。本文主要讨论后者的绘制。绘制难点:确定同组中的所有子项解决方法:以WS_GROUP标识为原创 2012-12-13 16:04:05 · 1024 阅读 · 0 评论 -
如何在VC6.0中使用winhttp.h
手头一个项目,需要在VC6.0中,直接使用winhttp.h。但是,在工程中加入代码后,编译出错:fatal error C1083: Cannot open include file: 'winhttp.h': No such file or directory。在网上找到资料,解决了此问题。现把解决过程贴出:一、下载并安装SDK最后一个支持VC6的SDK:Platfor原创 2013-02-28 10:24:15 · 3577 阅读 · 0 评论 -
ASCII 、GB2312、GBK、GB18030、Unicode、UTF-8字符集编码详解
ASCII字符集编码 ASCII码是7位编码,编码范围是0x00-0x7F。ASCII字符集包括英文字母、阿拉伯数字和标点符号等字符。其中0x00-0x20和0x7F共33个控制字符。只支持ASCII码的系统会忽略每个字节的最高位,只认为低7位是有效位。HZ字符编码就是早期为了在只支持7位ASCII系统中传输中文而设计的编码。早期很多邮件系统也只支持ASCII编码,为了传输中文邮件转载 2013-03-15 10:08:22 · 1074 阅读 · 0 评论 -
Unicode详解
基本知识介绍Unicode之前,首先要讲解一些基础知识。虽然跟Unicode没有直接的关系, 但想弄明白Unicode,没这些还真不行。字节和字符的区别咦,字节和字符能有什么区别啊?不都是一样的吗?完全正确,但只是在古老的DOS时代。 当Unicode出现后,字节和字符就不一样了。字节(octet)是一个八位的存储单元,取值范围一定是0~255。而字符(charac转载 2013-03-14 16:48:25 · 593 阅读 · 0 评论 -
IP头结构详解
版本号(Version)长度4比特。标识目前采用的IP协议的版本号。一般的值为0100(IPv4),0110(IPv6)IP包头长度(Header Length)长度4比特。这个字段的作用是为了描述IP包头的长度,因为在IP包头中有变长的可选部分。该部分占4个bit位,单位为32bit(4个字节),即本区域值= IP头部长度(单位为bit)/(8*4),因此,一个IP包头的长度最长转载 2013-04-26 17:27:02 · 1028 阅读 · 0 评论 -
ActiveX相关
一、ActiveX控件重命名通过新建VS2005中的“MFC ActiveX Control”项目开发的ActiveX控件,需要改名字。 开始在工程配置中修改了输出文件的名字,也修改了*.idl及*.def文件中与控件名字相关的字符串,但是在系统中注册之后显示的仍然是之前的名字。 后来发现控件名字是在工程中以ctrl为后缀的*.cpp文件中的“IMPLEMENT_OLECTLTYP转载 2017-07-05 15:41:22 · 461 阅读 · 0 评论