- 博客(21)
- 资源 (33)
- 收藏
- 关注
转载 Windows 2D绘图引擎的发展及联系
背景知识 : Windows 图形编程 在 Windows 7 操作系统中,微软花费了很大的力气构建了一套新的 2D 绘图 API。我们称之为 Direct2D ,隶属于 DirectX 家族。这个 API 的开发填补了 Windows 图形平台的一些缺陷。其中非常重要的一点就是普通的 2D 程序渲染不再缺乏硬件加速。而在 Windows Vista 中,我们知道 GDI 是无法进行
2015-01-30 18:31:50 3433
原创 Direct2D能否在XP上运行
D2D能否在XP上运行?答案当然是不能。我尝试过把所有需要依赖的DLL都拷贝到XP中去,但是运行时还是会弹出一些无法定位的错误通过DEPENDS来查看依赖项的情况就会发现原因了,下面是WIN7中msvcrt.dll的依赖项:你会发现这个DLL依赖的很多系统关键DLL在XP中都不存在然后,愚蠢地把WIN7中所有的DLL复制过来运行还是出错,查看依赖。NTD
2015-01-30 14:14:33 2176 2
转载 Windows 7图形架构解析
Windows XP的Direct3D/GDI驱动架构Windows Vista核心图形架构,比起XP来要丰富了很多Windows 7核心图形架构,老的GDI/GDI+仍被单独支持,不过,Windows 7提供了它们对应功能的新的实现方法 相比Vista带的DirectX 10,Windows 7自带了DirectX 11,和WDDM 1.0到1.1的变化不同,D
2015-01-30 11:17:23 2211
原创 Windows核心编程笔记(6)----用户模式下的线程同步
1、原子锁使用InterlockedExchangeAdd函数来实现原子增长,InterlockedExchange\InterlockedExchangePointer用来交换两个变量的值,InterlockedCompareExchange对比数值,相等则交换(对应的InterlockedCompareExchangePointer)。对应的还有64位函数。Interlocke
2015-01-29 15:04:51 1310 2
原创 Windows核心编程笔记(5)----线程调度,优先级
1、操作系统线程调度过程每个线程都有一个上下文CONTEXT结构体,保存在线程的内核对象中,这个上下文中保存了线程上一次执行时CPU寄存器的状态。每隔固定时间,Windows会查看所有当前存在的线程内核对象,其中只有一些是可调度的。Windows在可调度的线程中选择一个,并将上次保存到线程上下文中的数据载入CPU寄存器中。(上下文切换)CPU时间片到后,Windows移出这个线程,
2015-01-28 11:12:01 2850
原创 Windows核心编程笔记(4)----线程
1、进程与线程 进程是惰性的,从来不执行任何东西,它只是一个线程的容器。线程必定是在某个进程的上下文中创建的, 而且其生命周期都在该进程中。因为句柄表是针对每一个进程的,因此同一个进程中的多个线程可以共享 内核对象句柄。进程运行需要占用许多的内存资源(加载DLL等),进程只需要一个内核对象和一个进程栈, 无需占用多少内存。2、终止线程的几种方式: 2.1线程函数返回(强烈推荐) 2.
2015-01-27 15:26:29 866
原创 Windows核心编程笔记(3)----作业
/*1、如果进程已经与一个作业相关联,就无法将当前进程及其任何子进程从作业中移除,这个安全特性可以保证/* 进程无法摆脱对它施加的限制。/*2、在调试程序时,调试器是从资源管理器启动的,程序会从调试器继承带“PCA”前缀的作业。因此,调试程序/* 时总是显示进程已经加入了作业。使用命令行来运行程序时就不会有这个问题了。/*3、关闭一个作业对象,并不会终止作业内所有的进程。作业对象实际上只是
2015-01-26 15:59:14 864
原创 开源一个VC++实现的MP3播放器(支持换肤、截屏、半透明)源码
一、说明:这个项目是在2012年写的,大学期间比较无聊。程序是基于MFC的,当时初接触开发很多东西都做得不太好(代码规范、效率等),工作后也没再用MFC了,而且个人也不看好MFC的前途,所以就没再去维护更改了。今天把它开源出来,仅供初学者学习。主要用到的技术有:MFC控件自绘、GDI双缓冲绘图。(网上一大推资料,暂且叫技术吧)。包括几大模块:主界面、歌词面板模块、截屏模块、公用函数模块。M...
2015-01-25 09:58:59 3528 3
转载 在Windows下编译OpenSSL
本文转载自:http://lwglucky.blog.51cto.com/1228348/325483,感谢原作者需要说明的是请一定安装openssl-0.9.8a 。 openssl-1.0.0我没有编译成功.如何在Windows下编译OpenSSL (Vs2005使用Vc8的cl编译器)1、安装ActivePerl//初始化的时候,需要用到perl解释器2、使用V
2015-01-23 18:21:02 4234
转载 Python编码格式说明及转码函数encode和decode的使用
字符串编码常用类型:utf-8,gb2312,cp936,gbk等。python中,我们使用decode()和encode()来进行解码和编码在python中,使用unicode类型作为编码的基础类型。即 decode encodestr ---------> unicode --------->stru = u'中文' #
2015-01-23 17:47:33 25811
原创 使用libcurl下载文件小例
libcurl是一个很强大的开源网络处理库,支持包括HTTP、HTTPS、FTP……一系列网络协议。用它来进行HTTP的get\post 或者下载文件更是小菜一碟,chrome内核都用到了它,本文主要讲解一个使用curl下载文件的小例。首先是去下载curl的最新源代码,然后编译成动态库或者静态库;然后把头文件和库文件拿出来加入到我们自己的工程中,引用声明:#include "curl.h"
2015-01-23 10:40:55 22989
原创 VS调试_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));崩溃原因及解决方法
今天下午对面的老大调试遇到这个问题,大家一起讨论好久才解决这个问题crt源代码都是可以看到的,为了了解清楚原因,十分有必要查看源码,源码一般在你的VS安装路径下VC\crt\src下。点击重试,定位到崩溃源码地方dbgdel.c的第52行。为了了解原因,我的测试代码是这样写的:int _tmain(int argc, _TCHAR* argv[]){ char* p
2015-01-22 18:23:53 20026 9
原创 VS调试程序_ASSERTE(_CrtIsValidHeapPointer(pUserData))崩溃的原因以及解决方法
调试程序,对动态申请的内存用free或者delete释放时程序崩溃,跳出如下对话框:点击重试,定位到具体的CRT源码部分:_ASSERTE(_CrtIsValidHeapPointer(pUserData));1、原因分析:查看CRT源码,一步一步看看里面都干了什么吧: _CrtIsValidHeapPointer----->_CrtIsValidPointer---->Hea
2015-01-22 17:53:49 20135 3
原创 设计模式之观察者模式的C++实现
当一个对象改变时需要同时通知其他多个对象,或者说一个对象依赖另一个对象的时候,使用观察者模式可以将这两者封装在独立的对象中使他们各自独立地改变和复用。观察者模式所做的工作就是在接触耦合,让相互耦合的双方都依赖于抽象而不是具体类,从而使得各自的改变都不会影响到对方。(引用自 《大话设计模式》)下面提供一个观察者模式的C++实现版本:#pragma once#include #incl
2015-01-19 12:34:48 940
原创 开源一个C++实现的简单HTTP协议处理库
HTTP协议库有两个版本,一个是基于WININET,一个则是使用socket实现的。可以支持POST 、GET请求,断点下载、重定向下载、下载进度回调,不支持HTTPS。接口头文件声明如下:#pragma once#include using std::string;using std::wstring;#include #include enum REQUEST_T
2015-01-15 17:38:35 25325 3
原创 Windows核心编程笔记(2)----进程
6 进程实例句柄6.1 每一个EXE或者DLL被加载到内存中后,都会被赋予一个独一无二的句柄(HINSTANCE),该句柄在WinMain函数调用时传入。获取应用程序相关信息(资源、路径)时,有的需要传入HINSTANC有的需要传入HMODULE,实际上HINSTANC与HMODULE完全是一回事,这是16位Windows系统上不同数据类型造成的。WinMain函数的第一个参数:实例句柄是
2015-01-14 14:23:04 991
原创 VS检测内存泄漏,定位泄漏代码位置方法
1、什么是内存泄漏?内存泄漏指的是在程序里动态申请的内存在使用完后,没有进行释放,导致这部分内存没有被系统回收,久而久之,可能导致程序内存不断增大,系统内存不足……引发一系列灾难性后果;(关于程序申请内存分配方式,详见:内存分配方式)2、零容忍排除内存泄漏对于程序的稳健型特别重要,尤其是程序需要长时间、稳定地运行时。C++这类动态内存申请释放都是由程序员控制的语言,稍不注意,很有可能就...
2015-01-13 11:13:03 34068 9
转载 sqlite数据库中的sql语句大全
最近用到sqlite3,发现有些SQL语句好像不适用于这个小型数据库,上网查了下,这篇文章挺详细的,转载自:http://hunankeda110.iteye.com/blog/1143258,感谢原作者。2010年SQLite学习笔记之一一. 如何获取SQLite最新版本官方站点:http://www.sqlite.org/从http://ww
2015-01-11 11:02:55 2003
转载 IOCP之accept、AcceptEx、WSAAccept的区别
1. accept、WSAAccept是同步操作,AcceptEx是异步操作2. WSAAccept函数早accept函数基础上添加了条件函数判断是否接受客户端连接3. AcceptEx是异步的,可以同时发出多个AcceptEx请求,支持重叠IO操作.转载自:http://blog.csdn.net/zhongguoren666/article/de
2015-01-05 16:13:03 2432
转载 setsockopt设置socket状态
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经
2015-01-05 16:11:08 878
libjpeg-turbo编码、解码实例代码
2016-09-23
Windows上编译的libx264(源码+生成DLL、lib、def)
2016-07-05
windows上使用Libcef实例源码
2015-12-11
WebsocketPP C++构建Web服务器源代码
2015-11-30
VC++实现支持换肤半透明的MP3播放器
2015-01-25
C++实现HTTP处理类
2015-01-15
VC++图像分割、灰度处理源码
2013-10-12
MFC硬件检测
2011-09-18
MFC多用途文件编辑器
2011-04-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人