- 博客(39)
- 收藏
- 关注

原创 【Windows编程】系列第七篇:Menubar的创建和使用
上一篇我们学习了利用windows API创建工具栏和菜单栏,与上一篇紧密联系的就是菜单栏,菜单栏是一个大多数复杂一些的Windows应用程序不可或缺的部分。比如下图就是Windows自带的记事本的菜单栏:菜单一般都是在标题栏下,工具栏以上,常常叫主菜单或顶级菜单(top-level menu),顶级菜单可能还会有弹出菜单(popup menu)或子菜单(submenu)。弹出菜单
2015-07-30 11:24:54
1046

原创 【Windows编程】系列第五篇:GDI图形绘制
上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图。Windows的GDI函数包含数百个API可供我们使用,本篇把最常用的GDI绘图做一个讲解。GDI可以绘制点、直线曲线、填充封闭区域、位图以及文本,其中文本部分已经在上一篇中将了,请参考【Windows编程】系列第三篇:
2015-07-09 23:15:58
992
原创 适用的字符串hash函数
就当做一个笔记吧:unsigned int BKDRHash(char *str){ unsigned int seed = 131; // 31 131 1313 13131 131313 etc... unsigned int hash = 0; while (*str) { hash = hash * seed + (*str++); } return (hash
2016-09-02 20:52:33
405
原创 颠倒32位数二进制位序
#include #include unsigned int GetRevertBit(unsigned int v){ v = ((v >16) & 0x0000FFFF); v = ((v > 8) & 0x00FF00FF); v = ((v > 4) & 0x0F0F0F0F); v = ((v > 2) & 0x33333333
2016-01-28 14:42:53
2669
原创 获得32位数二进制位的第一个1的位置
#include #include int getfirstone(unsigned int v){ v ^= v - 1; v = (v & 0x55555555) + ((v >> 1) & 0x55555555); v = (v & 0x33333333) + ((v >> 2) & 0x33333333); v = (v + (v
2016-01-27 22:15:04
3695
原创 【Windows编程】系列第十一篇:多文档界面框架
前面我们所举的例子中都是单文档界面框架,也就是说这个窗口里面的客户区就是一个文档界面,可以编写程序在里面输入或者绘制文本和图形输出,但是不能有出现多个文档的情况。比如下面的UltraEdit就是一个典型的多文档界面,他可以同时编辑多个文档,每个文档还可以最大化,最小化等等,我们今天就来看看多文档的基本框架是怎么实现的。多文档界面的框架创建需要几下几步。主框架窗口创建主框
2015-09-04 14:32:24
509
原创 【Windows编程】系列第十篇:文本插入符
大家知道,在使用微软的编程环境创建工程时会让你选择是控制台模式还是Windows应用程序。如果选择控制台的console模式,就会在运行时出现一个黑洞洞的字符模式窗口,里面就有等待输入一闪一闪的插入符。输入光标从DOS时代就存在,但是在Win32中赋予了更强大的功能。下图就是Windows的CMD窗口,其中的输入点就是插入光标:要注意的是这里的插入符或插入光标并不是Windows中
2015-08-20 21:23:33
1223
原创 【Windows编程】系列第九篇:剪贴板使用
上一篇我们学习了常见的通用对话框,本篇来了解剪贴板的使用,它常用于复制粘贴功能。剪贴板是Windows最早就加入的功能,由于该功能非常实用,我们几乎每天都会使用到。通过剪贴板,我们就可以将数据从一个应用程序传递到另一个应用程序,是一种简单的进程间通信。许多文档处理软件都有复制、剪切、粘贴功能,这些都是用Windows剪贴板实现的,当然我们也可以在我们的程序中实现自己的剪贴板功能,本
2015-08-13 22:50:57
1875
原创 【Windows编程】系列第八篇:通用对话框
上一篇我们学习了菜单的基本编程,本篇来了解一下通用对话框的使用。Windows系统之所以是目前最流行的桌面系统,也是因为Windows有一套标准化,统一友好的交互界面,比如菜单、工具栏、状态栏以及各个控件。当然除了这些单独的控件之外,对于像文件打开、保存对话框,字体对话,颜色对话框等对于Windows本身会用到,在很多第三方的应用程序中也会用到。因此微软公司也早就清楚这种现实情况会存在,所
2015-08-06 22:27:35
2505
原创 【Windows编程】系列第六篇:创建Toolbar与Statusbar
上一篇我们学习了解了如何使用Windows GDI画图,该应用程序都是光光的静态窗口,我们使用Windows应用程序,但凡稍微复杂一点的程序都会有工具栏和状态栏,工具栏主要用于一些快捷功能按钮。比如典型的windows应用程序的上面是菜单栏,从菜单栏我们可以选择应用程序提供的各种功能,但是有的功能比较常用,且不能放在第一级菜单,需要进入二级、三级甚至更多的菜单才能选择。显然这样使用起来
2015-07-23 08:19:46
2702
原创 【Windows编程】系列第四篇:使用Unicode编程
上一篇我们学习了Windows编程的文本及字体输出,在以上几篇的实例中也出现了一些带有“TEXT”的Windows宏定义,有朋友留言想了解一些ANSI和Unicode编程方面的内容,本章就来了解和学习一些Windows下关于ANSI和Unicode方面的编程基础。计算机最早在美国诞生,所以最开始都是以英语为作为交互语言,由于只有26个字母,用一个字节(范围-128 ~ 127)表示
2015-07-02 21:36:55
588
原创 【Windows编程】系列第三篇:文本字符输出
上一篇我们展示了如何使用Windows SDK创建基本控件,本篇来讨论如何输出文本字符。在使用Win32编程时,我们常常要输出文本到窗口上,Windows所有的文本字符或者图形输出都是通过图形设备接口(GDI)进行的,Windows的三大核心组件之一的GDI32.dll封装了所有的文本和图像输出。GDI基本知识Windows下要绘图和输出文本,都是通过GDI(Graph
2015-06-25 20:19:00
1020
原创 【Windows编程】系列第二篇:Windows SDK创建基本控件
在Win32 SDK环境下,怎么来创建常用的那些基本控件呢?我们知道如果用MFC,简单的拖放即可完成大多数控件的创建,但是我们既然是用Windows SDK API编程,当然是从根上解决这个问题,实际上MFC的下层也是通过这些API完成的。实际上控件也是窗口,只不过是被微软预先创建好的一种窗口类,比如button就是一个类名为“BUTTON”的类。既然控件实际上是窗口,当然也是用C
2015-06-18 21:54:02
709
原创 ubuntu编译最新版本WebKit
好久都没更新webkit 源码在ubuntu上编译了,网上搜了一下,基本上都是早期编译的webkit版本。可能是大家都去搞高大上的谷歌浏览器了吧。今天就以ubuntu14.04版本作为编译环境来讲讲webkit编译一、下载源码wget http://builds.nightly.webkit.org/files/trunk/src/WebKit-r174650.tar.bz2或者...
2015-04-22 22:10:48
253
转载 ubuntu编译最新版本WebKit
好久都没更新webkit 源码在ubuntu上编译了,网上搜了一下,基本上都是早期编译的webkit版本。可能是大家都去搞高大上的谷歌浏览器了吧。今天就以ubuntu14.04版本作为编译环境来讲讲webkit编译一、下载源码wget http://builds.nightly.webkit.org/files/trunk/src/WebKit-r174650.tar.bz2
2015-04-22 22:03:17
481
转载 android apk 防止反编译技术第四篇-对抗JD-GUI
又到周末一个人侘在家里无事可干,这就是程序员的悲哀啊。好了我们利用周末的时间继续介绍android apk防止反编译技术的另一种方法。前三篇我们讲了加壳技术(http://my.oschina.net/u/2323218/blog/393372)、运行时修改字节码(http://my.oschina.net/u/2323218/blog/396203)和伪加密(http://my.os
2015-04-20 21:02:00
491
原创 android apk 防止反编译技术第四篇-对抗JD-GUI
又到周末一个人侘在家里无事可干,这就是程序员的悲哀啊。好了我们利用周末的时间继续介绍android apk防止反编译技术的另一种方法。前三篇我们讲了加壳技术(http://my.oschina.net/u/2323218/blog/393372)、运行时修改字节码(http://my.oschina.net/u/2323218/blog/396203)和伪加密(http://my.oschina...
2015-04-20 20:59:23
764
解密FFmpeg播放track mode控制
上一篇文章我们解决了在FFmpeg下如何处理H264和AAC的扩展数据,根据解出的NALU长度恢复了H264的起始码和AAC的ADTS头,这样一般来说播放是没有问题。本篇文章来谈谈如何实现基于FFmpeg的track mode控制,也就是如何用FFmpeg提供的功能来实现基本的seek、快进、快退。好了,废话少了,下面开始基于FFmpeg的track mode之旅。FFmpeg提供了一个se...
2015-04-19 22:27:54
203
原创 解密FFmpeg播放track mode控制
上一篇文章(http://blog.youkuaiyun.com/yang_danny/article/details/45016593)我们解决了在FFmpeg下如何处理H264和AAC的扩展数据,根据解出的NALU长度恢复了H264的起始码和AAC的ADTS头,这样一般来说播放是没有问题。本篇文章来谈谈如何实现基于FFmpeg的track mode控制,也就是如何用FFmpeg提供的功能来实现
2015-04-19 22:11:01
660
原创 小菜学Chromium之OpenGL学习之二
在这个教程里,我们一起来玩第一个OpenGL程序.它将显示一个空的OpenGL窗口,可以在窗口和全屏模式下切换,按ESC退出.它是我们以后应用程序的框架.在CodeBlock里创建一个新的GLUT Win32程序(不是console控制台程序)后,我们还需要链接OpenGL库文件。代码的前4行包括了我们使用的每个库文件的头文件。如下所示:#include <windows.h> //...
2015-04-17 22:35:31
104
转载 小菜学Chromium之OpenGL学习之二
在这个教程里,我们一起来玩第一个OpenGL程序.它将显示一个空的OpenGL窗口,可以在窗口和全屏模式下切换,按ESC退出.它是我们以后应用程序的框架.在CodeBlock里创建一个新的GLUT Win32程序(不是console控制台程序)后,我们还需要链接OpenGL库文件。代码的前4行包括了我们使用的每个库文件的头文件。如下所示:#include // Windo
2015-04-17 22:28:05
363
转载 webkit浏览器常见开发问题
前段时间有人问我一个简单的问题,html如何创建解析的? 我讲了一大堆,什么通过DocumentLoader, CachedResourceLoader, CacheResource, ResourceLoaderScheduler, ResourceHandle这些类一步一步的完成cache查找然后请求下载等等。 滔滔不绝,直到我调试xml解析时,我才发现好多问题都与理解的
2015-04-15 23:16:34
306
原创 webkit浏览器常见开发问题
前段时间有人问我一个简单的问题,html如何创建解析的? 我讲了一大堆,什么通过DocumentLoader, CachedResourceLoader, CacheResource, ResourceLoaderScheduler, ResourceHandle这些类一步一步的完成cache查找然后请求下载等等。 滔滔不绝,直到我调试xml解析时,我才发现好多问题都与理解的不一致...
2015-04-15 23:08:13
179
转载 程序猿的健康之路
当我第一次听到加班的时候,其实我是是拒绝的,我对领导说我拒绝;领导说可以加工资,就这样我加了一个月的班之后,我的工资就DUANG的一下,上去了。之后我每个月都在加班,我也告诉我身边的朋友加班,白天不用怎么干活,晚上可以加班,周末可以加班,假期可以加班,之后工资就duang duang duang 的上去了;就这样我的加了几年的班之后,我的工资在duang duang duang的向
2015-04-15 22:53:51
378
转载 Android图片开发内幕--基础篇
前言:本来我是做电视应用的,但是因为公司要出手机,人员紧张,所以就抽调我去支援一下,谁叫俺是雷锋呢!我做的一个功能就是处理手机中的应用ICON,处理无非就是美化一下,重新与底板进行合成和裁剪,用到了很多Bitmap的知识。本来之前一直想写一些关于Bitmap的博客,正好这是个机会,因此Bitmap那些事系列博客诞生了。这个系列我会把学习Bitmap的一些知识发布出来供大家参考和交流。
2015-04-14 21:16:46
429
原创 解密H264、AAC硬件解码的关键扩展数据处理
通过上一篇文章,我们用ffmpeg分离出一个多媒体容器中的音视频数据,但是很可能这些数据是不能被正确解码的。为什么呢?因为在解码这些数据之前,需要对解码器做一些配置,典型的就是目前流行的高清编码“黄金搭档”组合H264 + AAC的搭配。本文将讲述H264和AAC的关键解码配置参数的解析,如果没有这些配置信息,数据帧往往不完整,导致了解码器不能解码。H264的配置信息解析前...
2015-04-14 20:53:31
176
原创 解密H264、AAC硬件解码的关键扩展数据处理
通过上一篇文章,我们用ffmpeg分离出一个多媒体容器中的音视频数据,但是很可能这些数据是不能被正确解码的。为什么呢?因为在解码这些数据之前,需要对解码器做一些配置,典型的就是目前流行的高清编码“黄金搭档”组合H264 + AAC的搭配。本文将讲述H264和AAC的关键解码配置参数的解析,如果没有这些配置信息,数据帧往往不完整,导致了解码器不能解码。H264的配置信息解
2015-04-13 00:37:08
1617
转载 解密多媒体封装解封装框架
上一篇文章我们搭好了环境并编译出所需的ffmpeg库,本篇我们讨论如何利用ffmpeg提供的API函数进行多媒体文件的解封装(demux)过程。在讲解之前,我们需要了解一些基本的多媒体文件知识,大虾请飘过。容器格式:不管是音频文件还是视频格式的文件,都是一个多媒体的容器,即container,比如常见的视频容器格式有avi、mp4、mkv、flv、rm/rmv
2015-04-11 20:56:06
547
原创 android apk 防止反编译技术第一篇-加壳技术
做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习。现在将最近学习成果做一下整理总结。学习的这些成果我会做成一个系列慢慢写出来与大家分享,共同进步。这篇主要讲apk的加壳技术,废话不多说了直接进入正题。一、加壳技术原理所谓apk的加壳技术和pc exe的加壳
2015-04-11 20:42:03
659
转载 Android Metro风格的Launcher开发系列第三篇
前言:各位小伙伴,又到了每周更新文章了时候了,本来是周日能发出来呢,这不是赶上清明节吗,女王大人发话了,清明节前两天半陪她玩,只留给我周一下午半天时间写博客,哪里有女王哪里就有压迫呀有木有!好了闲话少说,上一篇博客(Android Metro风格的Launcher开发系列第二篇)说到Launcher主体框架用ViewPager来实现,这一篇博客咱们来说说每一个page的具体实现。
2015-04-11 20:33:17
419
转载 Android Metro风格的Launcher开发系列第二篇
前言:各位小伙伴们请原谅我隔了这么久才开始写这一系列的第二篇博客,没办法忙新产品发布,好了废话不说了,先回顾一下:在我的上一篇博客 Android Metro风格的Launcher开发系列第一篇写了如何配置Android开发环境,只是用文字和图片展示了开发Metro风格Launcher的初步设计和产品要求,这一篇文章将会从代码上讲解如何实现对应的UI效果,好了,评书开讲!
2015-03-30 22:25:36
442
FFMPEG在嵌入式硬件上应用之 —— 基本环境搭建及编译
前段时间在翻看电脑里面资料时,发现了以前做的在嵌入式硬件上面运行以ffmepg为基础,以嵌入式硬件解码的多媒体播放工作,发现都快忘记完了。今日得闲整理温习了一下ffmpeg在嵌入式上的运用,这里给大家分享一下,顺便做了一下记录以备以后使用时参考。本文(记录)与目前网上很多关于ffmpeg的文章相比有两个特点:一、重点不在于ffmpeg的解码部分(这个本来是ffmpeg最大的亮...
2015-03-29 23:44:14
763
原创 FFMPEG在嵌入式硬件上应用之 —— 基本环境搭建及编译
前段时间在翻看电脑里面资料时,发现了以前做的在嵌入式硬件上面运行以ffmepg为基础,以嵌入式硬件解码的多媒体播放工作,发现都快忘记完了。今日得闲整理温习了一下ffmpeg在嵌入式上的运用,这里给大家分享一下,顺便做了一下记录以备以后使用时参考。本文(记录)与目前网上很多关于ffmpeg的文章相比有两个特点:一、重点不在于ffmpeg的解码部分(这个本来是ffmpeg最大的亮点),为什么?
2015-03-29 23:31:12
2768
转载 chromium浏览器开发系列第一篇:如何获取最新chromium源码
背景: 最近摊上一个事儿,领导非要让写一篇技术文章,思来想去,自己接触chrome浏览器时间也不短了,干脆就总结一下吧。于是乎,本文顺理成章。由于有些细节必需描述清楚,所以这次先讲如何拿到chromium的源码,下次直接把编译过程写出来,供大家参考。前期准备: 之前的chromium源码都是用svn来维护,所以源码地址网上贴的到处都是,我看了一下,svn的版本最新的
2015-03-26 21:46:32
526
原创 【转载】vim带你装逼带你飞(一)
前言:逃离windows有很长时间了,特别是当今android盛行的时代,我们没有理由不选择ubuntu作为编译开发android之首选。其实操作系统只是我们使用的一个工具,windows也好linux也罢,自己用的好才是真的好。但是好的开发工具能让我们事半功倍。 先谈谈我的编程开发工具之路,source insight3.5这都是刚工作必备之工具,简直就代码阅读开发之神器。但...
2015-03-25 22:07:22
153
转载 vim带你装逼带你飞(一)
前言:逃离windows有很长时间了,特别是当今android盛行的时代,我们没有理由不选择ubuntu作为编译开发android之首选。其实操作系统只是我们使用的一个工具,windows也好linux也罢,自己用的好才是真的好。但是好的开发工具能让我们事半功倍。 先谈谈我的编程开发工具之路,source insight3.5这都是刚工作必备之工具,简直就代码阅读开发之神
2015-03-25 21:51:03
361
原创 【转载】Android Metro风格的Launcher开发系列第一篇
前言:从毕业到现在已经三年多了,回忆一下这三年基本上没有写过博客,总是觉得忙,没时间写,也觉得写博客没什么大用。但是看到很多大牛们都在写博客,分享自己的东西,所以嘛本着向大牛看齐,分享第一,记录第二的目的开始写一个系列的文章,我会把我做一个项目的详细过程分享给大家,供大家参考和交流。好了,评书开讲!可能大家做Android机顶盒或者Android电视开发的比较少,这类开发基本上都是基于...
2015-03-23 22:46:21
72
转载 Android Metro风格的Launcher开发系列第一篇
前言:从毕业到现在已经三年多了,回忆一下这三年基本上没有写过博客,总是觉得忙,没时间写,也觉得写博客没什么大用。但是看到很多大牛们都在写博客,分享自己的东西,所以嘛本着向大牛看齐,分享第一,记录第二的目的开始写一个系列的文章,我会把我做一个项目的详细过程分享给大家,供大家参考和交流。好了,评书开讲!可能大家做Android机顶盒或者Android电视开发的比较少,这类开发基本上都是基于源码
2015-03-23 21:26:36
350
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人