自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (5)
  • 收藏
  • 关注

原创 WM_GETMINMAXINFO 设置窗口最大最小尺寸(无边框窗口不遮挡任务栏)

以wtl为例,响应WM_GETMINMAXINFO消息:       LRESULT OnGetMinMaxInfo( UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/ ){MINMAXINFO *  p = (MINMAXINFO * )lParam;p->ptMinTrackSize.x

2011-11-10 13:41:43 5298

原创 加了 WS_THICKFRAME 风格,如何能无边框?

如果想无边框,直接去掉WS_THICKFRAME不就行了嘛。那为什么还要有WS_THICKFRAME风格,再费劲去掉边框了?没有WS_THICKFRAME会带来很多问题:1.没有WS_THICKFRAME,有WS_SYSMENU,就没办法通过相应WM_NCHITTEST,去处理窗口的缩放。2.没有WS_THICKFRAME,也没有WS_SYSMEN,在xp系统下任务栏就没有

2011-11-10 13:23:27 14147 3

原创 线程安全”是一个什么概念?

以前常听高手告诫MFC对象不要跨线程使用,因为MFC不是线程安全的。比如CWnd对象不要跨线程使用,可以用窗口句柄(HWND)代替。CSocket/CAsyncSocket对象不要跨线程使用,用SOCKET句柄代替.那么到底什么是线程安全呢?什么时候需要考虑?如果程序涉及到多线程

2011-07-18 16:10:49 863

原创 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 the window bene

2011-07-13 15:27:30 2350

原创 活动窗口(Active),焦点窗口(Focus),IsDialogMessage,

任何一个时候,我们的Windows桌面上总有一个最前台的窗口,其实说简单的,就是标题栏变成深蓝色的那个窗口,仅此一个,这个窗口就是前景窗口(Foreground Window),其他窗口就是后台窗口(Background Window)。那创建前景窗口的线程就是前景线程(Fore

2011-07-12 22:29:25 5092

转载 OpCode教程

<br />什么是OpCode?<br />不管计算机技术的发展如何日新月异,其最基本的东西是不会突然改变的。OpCode就是这其中的一样东西——因此,Bill Gates的这句话用在这里并不太合适。<br />在开始回答什么是OpCode之前,请让我先来提几个小问题。计算机只认识0和1吗?如果上面的回答是“是”,那么我们平时写的程序源代码是0和1吗?如果上面的回答是“不是”,那么计算机是怎么“知道”我们的程序的意思的?<br />按顺序作答,依次是:是不是???<br />最后一个问题的答案是……?我们来

2011-05-19 18:07:00 2838

转载 控制寄存器(CR0,CR1,CR2,CR3)

控制寄存器(控制寄存器(CR0,CR1,CR2,CR3)用于控制和确定处理器的操作模式以及当前执行任务的特性。)    从上表可见,80386有四个32位的控制寄存器,分别命名位CR0、CR1、CR2和CR3。但CR1被保留,供今后开发的处理器使用,在 80386中不能使用CR1,否则会引起无效指令操作异常。CR0包括指示处理器工作方式的控制位,包含启用和禁止分页管理机制的控制位,包含控制浮点协处理器操作的控制位。CR2及CR3由分页管理机制使用。CR0中的位5—位30及CR3中的位0至位11是保留位,这些

2011-05-19 17:18:00 1080

转载 Windows内存管理

本文主要内容:1.基本概念:物理内存、虚拟内存;物理地址、虚拟地址、逻辑地址;页目录,页表2.Windows内存管理3.CPU段式内存管理4.CPU页式内存管理一、基本概念1. 两个内存概念物理内存:人尽皆知,就是插在主板上的内存条。他是固定的,内存条的容量多大,物理内存就有多大(集成显卡系统除外)。但是如果程序运行很多或者程序本身很大的话,就会导致大量的物理内存占用,甚至导致物理内存消耗殆尽。虚拟内存:简明的说,虚拟内存就是在硬盘上划分一块页面文件,充当内存。当程序在运行时,有一部分资源还没有用上或者同时

2011-05-19 17:07:00 1358

转载 Windows 消息优先级

<br />也许题目有些夸张,但是Windows消息方面确实存在一些不去探究就摸不着头脑的事情,这种问题不是明显错误,不会抛出异常,但却是最棘手的问题,给调试带来很大麻烦,所以我将实际遇到的问题整理如下,以供参考。<br /> <br />一、Windows 消息以及消息处理算法<br />Windows以消息驱动的方式,使得线程能够通过处理消息来响应外界。Windows 为每个需要接受消息和处理消息的线程建立消息队列(包括发送消息队列,登记消息队列,输入消息队列,响应消息队列),其中发送消息队列保存其他线

2011-05-06 10:43:00 8298

转载 字符编码格式小结(ASCII/Unicode/UTF-8)

1. ASCII码我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。ASCII码一共规定了128个字符的编码,比如空格“SPA

2011-05-03 21:26:00 971

转载 更改MFC对话框dialog默认的窗口类名classname

<br />Windows操作系统中有一个概念——窗口类。窗口类是抽象的,它可以有很多窗口实例,即HWND/CWnd。在一个程序中,你可以定制并注册一个窗口类,然后用它创建窗口,也可以直接用已经注册的窗口类创建我们的窗口。<br />为了减轻我们的编程负担,也为了隐藏具体的实现,MFC已经为我们定制并注册了很多窗口类,我们可以直接使用它们。比如,对话框的窗口类为“#32770”,按钮的窗口类为“Button”,列表框的窗口类为“ListBox”……等等。<br />很多时候,我们需要用到FindWindow

2011-05-01 18:27:00 9202

转载 ring0下cr0的作用

<br />对于不可写的内存,如果在没打开内存保护模式下会BSOD,肯定会死的很惨,哈哈。下面就讲解下如何解决改问题:<br />为了安全起见,Windows XP及其以后的系统将一些重要的内存页设置为只读属性,这样就算有权力访问该表也不能随意对其修改,例如SSDT、IDT等。但这种方法很容易被绕过,我们只要将这些部分修改为可写属性就可以了,不过当我们的事情做完后记得把它们恢复为只读属性,不然会造成一些很难预料到的后果。<br />cr0是系统内的控制寄存器之一。控制寄存器是一些特殊的寄存器,它们可以控制C

2011-04-29 11:18:00 2625

转载 __stdcall,__cdecl,_cdecl,_stdcall,。__fastcall,_fastcall 区别简

1.今天写线程函数时,发现msdn中对ThreadProc的定义有要求:DWORD WINAPI ThreadProc(LPVOID lpParameter);不解为什么要用WINAPI宏定义,查了后发现下面的定义。于是乎需要区别__stdcall和__cdecl两者的区别; #define CALLBACK __stdcall#define WINAPI __stdcall#define WINAPIV __cdecl#define APIENTRY WINAPI#define APIPRIVATE __

2011-03-22 16:06:00 519

原创 多线程与多进程

<br />     关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有这么简单了,选的不好,会让你深受其害。<br />     经常在网络上看到有的XDJM问“多进程好还是多线程好?”、“Linux下用多进程还是多线程?”等等期望一劳永逸的问题,我只能说:没有最好,只有更好。根据实际情况来判断,哪个更加合适就是哪个好。<br />     我们按照多个不同的维度,来看看多线程和多进程的

2011-03-19 22:01:00 422

原创 内存分区

内存分区(stack/heap/global&static/free/const)五大内存分区 <br />在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 <br />栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 <br />堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自

2010-12-08 17:43:00 412

原创 callback回调函数的理解

<br />回调函数概念:<br /><br />  简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。<br />      <br />      模块A有一个函数foo,它向模块B传递foo的地址,然后在B里面发生某种事件(event)时,通过从A里面传递过来的foo的地址调用foo,通知A发生了什么事情,让A作出相应反应。 那么我们就把foo称为回调函数。<br /> <br />    

2010-11-10 17:13:00 657

原创 static_cast、dynamic_cast、reinterpret_cast、和const_cast

<br />关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行介绍。<br /><br />static_cast<br /><br />用法:static_cast < type

2010-11-09 22:04:00 512

原创 C运行时库(C Run-Time Libraries /MD/ML/MT)

    运行时库是程序在运行时所需要的库文件,通常运行时库是以LIB或DLL形式提供的。C运行时库诞生于20世纪70年代,当时的程序世界还很单纯,应用程序都是单线程的,多任务或多线程机制在此时还属于新观念。所以这个时期的C运行时库都是单线程的。      随着操作系统多线程技术的发展,最初的C运行时库无法满足程序的需求,出现了严重的问题。C运行时库使用了多个全局变量(例如errno)和静态变量,这可能在多线程程序中引起冲突。假设两个线程都同时设置errno,其结果是后设置的errno会将先前的覆盖,用户得不

2010-11-09 14:57:00 872

转载 【开源工程】MediaInfo

<br />MediaInfo <br /> <br />一、简介<br />MediaInfo 用来分析视频和音频文件的编码和内容信息。<br />MediaInfo可以获得多媒体文件的哪些信息?<br />内容信息:标题,作者,专辑名,音轨号,日期,总时间……<br />视频:编码器,长宽比,帧频率,比特率……  <br />音频:编码器,采样率,声道数,语言,比特率……  <br />文本:语言和字幕  <br />段落:段落数,列表  <br /> <br />MediaInfo支持哪些文件格式?<

2010-10-28 21:13:00 839

原创 有关CComPtr&CComQIPtr,CComBSTR,CComVariant,CAutoPtr的设计思想的分析

<br />这三种类型的封装类都对其封装类型进行包裹,尤其是提供分配内存以及释放内存。在设计思想上不同的是:<br />CComPtr<T>&CComQIPtr<T>:用于维护COM的接口,<br />l  对于构造函数和赋值等于,<br />n  无论传入T还是CComPtr<T>,都直接或间接AddRef(相当郁复制)并不是owner相应的T。也就是说通过构造函数或赋值等于传入的T还是由外部来owner释放。<br />不addRef直接owner T的办法只有两个:<br />l  使用Attach,

2010-10-28 15:03:00 899

原创 extern用法详解(转)

1 基本解释  extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。  另外,extern也可用来进行链接指定。2 问题:extern 变量  在一个源文件里定义了一个数组:char a[6];  在另外一个文件里用下列语句进行了声明:extern char *a;  请问,这样可以吗?   答案与分析:  1)、不可以

2009-11-09 01:19:00 345

转载 65个源代码网站

 1.51源码:http://www.51aspx.com/2.源码之家:http://www.codejia.com/3.源码网:http://www.codepub.com/4.虾客源码:http://www.xkxz.com/5.源码开发网:http://www.codedn.com/6.洪越源代码:http://www.softhy.net/7.锋网源码:http://www.fwvv.n

2009-11-08 22:03:00 1133

转载 软件开发经验总结——读源代码的艺术

     读取源代码是每一个开发人员成长的必经之路,一份优秀的源代码,是作者多年开发技术的心血结晶,研究一份优秀的源代码,总是能够让你的技术得到一定程度的提升。然后,读别人的源代码并不是拿着代码在那里瞎看,而是要充分了解作者的编程思路,了解代码的优点和缺点,在了解作者思路的基础上,自己尝试写出比该代码更优秀的代码,才能达到“通透”的境界。如果在读取源代码时能够遵守以下准则,那么效果就会更好。准则1

2009-09-13 19:02:00 549

转载 软件开发经验总结——解读高速读书之秘

计算机知识更新得飞快,作为一个软件开发人员,必须即时更新自己的知识结构,否则,将会被社会所淘汰,记得以前读书的时候,只会写HTML网页的开发人员都可以很轻松得拿10K以上的工资,时过境迁,如今,如果一个开发人员只会编写HTML,那么他可能连工作都找不到。在知识更新换代如此之快的今天,如何高速学习成为了我们软件开发人员一项艰巨的任务,然而苦中也有甜,当你看过几百本技术类书籍后,你会深刻感受到自己的进

2009-09-13 19:01:00 583

转载 软件开发经验总结——客观地认识程序员心中的恐惧

经常听到身边有很多搞开发的朋友说,“哎,程序员不好混,等到30岁后就要没有什么公司要了”、“计算机技术更新得太快了,过了30岁如果我的学习能力下降了,就跟不上了,到时候该怎么办”、“我的那些同学刚出来做其他行业每个月拿1000元,现在都每个月上万了,房子和车子都有了”、“如果有机会,我一定要转行”,”做技术在外国可以,但在中国行不通,国情不允许“,整天发这些牢骚的情况在我身边大有人在,尤其是一些入

2009-09-13 18:58:00 759

原创 超强TS流TSPlayer网络播放器,能解复用mpeg2、h.264码流、可播放256套节目

TSPlayer是一款DVB-TS流多画面播放器。1. 默认全屏,默认连接UDP多播网络。2. F5整个画面全屏,鼠标右键整个画面全屏,双击单个画面全屏。3. 可动态改变画面个数。4. 两种全屏都可ESC键退出。5. 可接收UDP多播(MultiCast)和单播(UniCast)网络,也可打开本地文件。6. 支持 "mpeg2和H.264" DVB-TS流。7. 当接收UDP多播(MultiCas

2009-08-12 20:43:00 17494 5

原创 CFile转FILE*

我们每个人编写程序时,都会或多或少的被一些小问题所困扰。这些问题有时就像是谜语,答案也许很简单,但解决的过程却像猜谜一样花时间。我的笨办法是日积月累,下面我介绍CFile如何转FILE*,从问题场景,方法和具体代码等方面写起,希望对大家能有所帮助。       比如原先有一个程序,其中的文件操作都是用CFile完成的,假定就操作一个文件a.dat,初始化时就用CFile::Open打开了文件,

2009-03-09 22:49:00 2963

原创 头文件和源文件的关系

一、源文件如何根据#include来关联头文件1,系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找。 #include  2,用户自定义的文件用双引号括起来,编译器首先会在用户目录下查找,然后在到C++安装目录(比如VC中可以指定和修改库文件查找路径,Unix和Linux中可以通过环境变量来设定)中查找,最后在系统文件中查找。 #include “xxx.h” 二、头文件如何来

2009-03-07 15:17:00 1261

原创 C++编译器及IDE(Dev_C++、WxDev_C++、VC等)

Dev-C++本软件就不用说了,这是pfan论坛上的首选IDE环境;他默认安装minGW作为编译器——就是windows化了的GCC编译器。版本应该是3.4;由于其编辑器使用简单,而内核gcc3.4对c99和c++2003的支持度都比较高,所以,这个软件比较适合标准C/C++初学者!除了支持外部库,Dev-C++还支持自己的开发包,你可以从升级“包”这个功能上获得许多有用的东西;你可以在http:

2009-03-07 15:16:00 3775

原创 VC++6.0编译器详解

大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解。原因是多方面的。大多数情况下,我们只停留在“使用”它,而不会想去“了解”它。因为它只是一个工具,我们宁可把更多的精力放在C++语言和软件设计上。我们习惯于这样一种“模式”:建立一个项目,然后写代码,然后编译,反反复复调试。但是,所谓:“公欲善其事,必先利其器”。如果我们精于VC开发环境,我们是不是能够做得更加游刃有余呢?   闲话少

2009-03-07 15:15:00 1161

转载 C和C++混合编程(__cplusplus 与 external "c" 的使用)

第一种理解比如说你用C++开发了一个DLL库,为了能够让C语言也能够调用你的DLL输出(Export)的函数,你需要用extern "C"来强制编译器不要修改你的函数名。通常,在C语言的头文件中经常可以看到类似下面这种形式的代码: #ifdef __cplusplus extern "C" { #endif /**** some declaration or so ****

2009-03-07 14:45:00 8871 2

editplus 3.5 破解版

EditPlus(文字编辑器)汉化版一套功能强大,可取代记事本的文字编辑器,EditPlus拥有无限制的撤消与重做、英文拼字检查、自动换行、列数标记、搜寻取代、同时编辑多文件、全屏幕浏览功能。而它还有一个好用的功能,就是它有监视剪贴板的功能,能够同步于剪贴板自动将文字粘贴进 EditPlus 的编辑窗口中,让你省去粘贴的步骤。另外它也是一个非常好用的 HTML 编辑器,它除了支持颜色标记、HTML 标记,同时支持 C、C++、Perl、Java,另外,它还内建完整的HTML & CSS1 指令功能,对于习惯用记事本编辑网页的朋友,它可帮你节省一半以上的网页制作时间,若你有安装 IE 3.0 以上版本,它还会结合IE 浏览器于 EditPlus 窗口中,让你可以直接预览编辑好的网页(若没安装IE,也可指定浏览器路径)。另外它也是一个好用的HTML网页编辑软件,除了可以颜色标记HTML Tag (同时支 援 C/C++、Perl、Java) 外,还内置完整的HTML和 CSS1 指令状态,支持 HTML, CSS, PHP, ASP, Perl, C/C++, Java, Javascript and VBscript;对于习惯用 记事本编辑网页的朋友,它可帮你节省一半以上的网页制作时间。

2013-01-13

走出软件作坊 doc 下载

本书提供了解决国内中小型IT 企业和创业团队发展过程中会遇到的管理问题的若干方法。本书形式活泼,内容独特,以作者自身多年工作的宝贵经验,来谈IT 企业的项目管理和团队建设,主要包括组织结构、团队文化、软件过程管理、团队激励、绩效考核、职业发展规划、未来业界发展趋势、个人素质提升等,具有极强的现实指导意义。本书主要读者对象是IT 企业的研发主管、项目经理和软件开发人员,以及即将到IT 企业工作的高校毕业生。   2008年CSDN名博阿朱7年职业经理人心得总结.   中小IT企业和创业团队的实战管理手册   形式活泼,内容独特的软件项目开发故事书..   具有中国特色的中小软件公司创业指引   完整讲述三五十条枪成为软件开发正规军的发展之路...

2009-08-27

基于mean-shift 算法的人脸实时跟踪方法

复杂环境下实时人脸跟踪方法在视觉监控系统中具有很重要的意义, 但目前的跟踪算法普遍存在目标 遮挡、 尺寸变化等过于敏感的不足, 限制了其应用范围。提出了一种人脸检测、 mean-shift 算法与卡尔曼滤波器 相结合的实时全自动人脸跟踪算法。实验结果表明该算法实时性很强, 可以实现对运动人脸的快速跟踪, 同时 对目标遮挡也有很好的鲁棒性。

2009-08-27

PSI Parser filter

The PSI Parser filter receives Program Specific Information (PSI) from an MPEG-2 transport stream and extracts program information from the Program Association Table (PAT) and Program Map Tables (PMT). This information enables an application to configure the MPEG-2 Demultiplexer. The filter supports a custom interface, IMpeg2PsiParser, for retrieving the PSI information.

2009-08-27

DSNetwork Filter

directshow source filter 实现了多播网络

2009-08-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除