- 博客(37)
- 资源 (2)
- 收藏
- 关注
原创 Windows客户端开发简介(五)
讲完了DC的创建,接下来就要来说说DC的使用,如何调用GDI函数在DC上进行绘制,包括绘制文字,绘制图形以及绘制图片。先来说说如何绘制文字,之所以我把文字放在图形和图片之前,是因为绘制文字往往在常用的GDI操作中是个比较频繁调用的功能,其实在界面自绘时的图形绘制是个相对少用的功能,原因很简单,复杂的图形根本不可能用代码来生成,基本上都是保存在图片里嘛。所以我这里对图形绘制只会简单介绍几
2016-11-18 18:15:48 4227 2
原创 我对VR的看法
1.虽然以VIVE为代表的头显VR设备品质过硬,体验美妙,但短时间内手机看VR仍然是主流,原因很简单,前者价格高昂,VIVE现在的售价是6888,除此之外还要购买一台价格不菲的电脑主机,这不是每个人可以承受起的。2.一体机不会成为主流,表面上看一体机兼得了头显和cardbox的优点,实际上另一个角度看是囊括了两边的缺点,既无法得到主机的性能,也无法兼顾手机的灵活性。3.长时间来说头显还是应
2016-11-18 18:10:52 5772
原创 Windows客户端开发简介(四)
在上一篇文章里,我简单扼要的给大家介绍了一下GDI的基础知识,包括DC,HDC,GDI对象等等,总的来说都是些偏理论的知识,属于概念的范畴。 今天这篇文章里,我就要正式开始有点实际的东西了,我会教大家一些GDI的基本功能代码编写,基本的技巧,当然还有如何避免基本的坑,哈哈,对的,基本的坑而不是高级的。 那么我要如何说起呢,首先我要告诉大家如何创建
2015-06-10 15:16:19 3123 3
原创 如何用int 3
int 3就是我们常说的软件断点,问题是,在什么时候我们需要用到int 3呢? 我们经常会碰到这样一种场景,有时候一个软件会由多个EXE组成,其中的某些EXE是由另外的EXE调用的,这时候我们通常调用其它EXE创建进程的时候必须用Visual Studio 的Attach Process把VS的调试器和进程关联上(同样用WinDbg也是如此)。这时候我们会碰到一个问题,就是因为
2015-05-23 01:45:05 3504
原创 个人简介
其实我的个人简介可以参考我的个人网站www.godbirdzonet.net。我是怎样一个人呢?在朋友眼里我是个有点文艺范的程序员,虽然我并不喜欢给自己贴上这个标签,我还是更喜欢别人称呼我:“技术人员”或者“工程师”。在工作中和生活中,我都是个乐于分享的人,习惯把自己的工作经验和生活感悟分享给周围的人,虽然我的技术博客写的并不多,那是因为我觉得自己的技术还不够好,虽然有很多后辈的小朋友们会屁颠屁颠
2015-05-20 18:18:34 2077 5
原创 Windows客户端开发简介(三)
之前的一篇文章里,我简单概要的介绍了一下界面库的知识。既然是跟界面有关,那么必然少不了很多关于绘制的内容。对于Windows开发而言,界面绘制使用的一类API就是所谓的“GDI”。 GDI这个东西可有历史了,但是我们就不去追根朔源了。首先,我不能免俗的要先介绍一下它的全称:“Graphic Device Interface”,即“图形设备接口”,从这个名称我们可以大略吸收到的信
2015-03-21 00:59:09 4815 6
原创 C++代码的汇编实现之二(循环语句的实现)
首先来看看for循环,C++的代码如下 int temp =0; for (int i = 0; i { temp = i; } 对应汇编代码是:0116136E mov dword ptr [temp],0 01161375 mov dword ptr [i],0 0116137C
2015-02-16 15:09:47 2289 1
原创 C++代码的汇编实现之一(++i与i++的区别)
以int类型为例C++编译器为++i生成的代码是013E1375 mov eax,dword ptr [i] 013E1378 add eax,1 013E137B mov dword ptr [i],eax很简单,基本不用分析第一行是把i的值放到eax中,然后调用add对eax进行+1,最后将eax再放到i中
2015-02-16 14:35:18 3927
原创 Windows客户端开发简介(二)
Windows客户端开发简介(二)一个典型的Windows客户端程序要有哪几部分构成呢?下面我会以一个国内比较流行的互联网客户端程序的基本架构来跟大家逐步展开分析,由于涉及到知识产权的问题,请大家不要问我是什么产品,当然,如果你能猜到,那我就管不着了^_^。某视频影音互联网PC客户端产品基本架构 如上只是个粗略的分层架构图,没有更细致的划分,但是有几个地方是
2015-02-12 13:25:26 7764
原创 Windows客户端开发简介(一)
在这样一个移动当道的年代,我跟大家讨论Windows客户端开发,似乎有些倚老卖老的意思了。然而我却觉得无论什么时候,Windows客户端开发其实还是有着不少实用经典的技术的。对了,确切说我是要说说Windows C++客户端开发,什么WinForm,WPF,并不在讨论范围之内,我承认用.NET ,C#做Windows客户端对开发人员来说确实是件轻松愉快的事,但是因为这些技术由于种种原因(主要还是效
2015-02-12 10:52:46 22697 1
原创 如何开始编程
今天要谈谈“如何”而不是“为何”的问题。其实我在我的空间里写了这么多东西,大部分是关于人生感悟的,当然也有少数几篇是关于我的本职工作-编程相关的。我喜欢在晚上写东西,尤其是凌晨十二点一过,我就灵感勃发,键盘敲的根本停不下来。写东西也是有快感的,就像编程和打乒乓球一样,作为一个高级生命体,思考问题带来的快乐有时候也是无与伦比的,所以我会不停的写。。。曾经看到个段子,讲文艺程序员,普通程序员和二逼
2015-01-10 02:25:40 2667
原创 我的互联网时代(一)
我想写写我的互联网时代,以向我逝去的青春致敬。一切的变化其实同时也是我的一段段心路历程,也许这篇文章会有些乏味,但我会努力的让它更有趣点,因为我将有趣视为我的职责,这是让我变得更好的一种动力。 有些原始的记忆我已经依稀有些模糊了,哦对了,我想说的是,其实我是个老网民了,我第一次上网的时候大概是在99年初,那一年,能发封电子邮件,访问一个三W的网站,去聊天室聊聊天还是件很时髦的事,甚
2014-12-20 01:25:44 1534 3
原创 为什么我要以写代码为生?
先说一些题外话。在我每次写下一篇文章的标题之后,其实我都要思考很久,思考这篇文章里要出现什么样的东西,我想表达什么,我思考到了什么程度。我基本不会考虑一篇文章有多少人爱看,多少人欣赏,多少人喜欢,但是我真心愿意看到文章后面的评论,因为这是一种互动,一种交流,不同思想风格的碰撞,每个独特的火花,都能让我兴奋良久。开门见山的说,为什么我要以写代码为生,因为一个字:“爱”,因为这个字是简单的,但
2014-06-06 23:32:06 2653 5
原创 阿里面试总结
这次面的是阿里旺旺的客户端开发职位,P6级别,总共三轮,其中前两轮都是电面(我在上海),遗憾的是最后一轮去杭州没有过,不过阿里还是家很不错的公司,BAT的面试我都经历过了,阿里的面试是最让我印象深刻的。主要问题的问题有SEH,结构化异常处理C++的智能指针类设计模式MFC的消息映射内存泄漏STL算法COMWTL一些架构方面的问题 第一面主要是综合
2014-04-17 16:34:29 7258 5
原创 如何学习Windows编程
有很多初入门的小朋友跟我说,他们想学“底层”的技术,因为觉得技术含量高,所以想学Windows C++开发,看着调用一个个的参数超级多,调用起来超级麻烦的Windows API,觉着很酷。于是我念头一转,就有了这篇文章,根据我多年来做Windows 客户端的经验,跟大家谈谈Windows C++,该从哪一方面入手,这不会是一个有技术深度的文章,只是偶尔会涉及到一些术语以及一些入门书籍而已,对于Windows开发的老鸟们来说,只当是看着好玩了。
2013-07-20 01:57:11 32580 12
原创 Windows Phone 7 的Http网络库使用技巧
WebClient实际上是一个在HttpWebRequest之上的库,它的主要优点就是使用起来比较简单,但是它有两个致命缺陷,一是程序的回调在UI线程执行,会导致程序性能下降。另外一个,他没有实现本地缓存的控制策略。 那么HttpWebRequest呢,虽然它仍然无法支持GET方法下的本地缓存策略控制,但是它的性能实在是要好的太多,而且由于HttpWebRequest是个比WebClien
2012-02-26 00:32:48 2257
原创 Windows Phone执行模型
Windows Phone7 特性介绍 一.Windows Phone执行模型Windows执行模型会监管一个Windows Phone程序的生命周期,从开始运行到终止。当Windows Phone程序不在前台执行时,操作系统会将程序置入休眠状态,注意,这一点是芒果之后才有的特性,之前的版本是不支持的,之前的版本采取的办法是直接终止程序的运行。但是,在某些情况下,比如前台程序运行需
2012-02-26 00:04:24 1187
原创 爱情是什么?
不管你愿不愿意承认,我要告诉你,爱情其实是一种幻觉。当你死心塌地的爱上一个人,你就会发现这个人是完美的,至少对你来说,他/她找不到任何明显的缺陷,即便有,那也是可爱的,对这个人的完美而言,是锦上添花的。其实如果你能够冷静的多思索一会儿,你应该明白,这个世界上是不应该存在这种完美的,于是,你就想通了,这种所谓的完美,是你的幻觉,或者,至少是一种错觉。问题是,因为爱情是一种幻觉,我们就不应该追
2011-12-30 04:24:53 1535 2
原创 泪与剑(原创长篇武侠小说)
一 逃亡 大漠沙如雪,夜色的映衬下,所有的东西仿若包裹了一层银色的纱布,空气里还隐约弥漫着些许白昼里火烫的气息,这里的一切是那样简单,又那样神秘。仿佛在倾听,又仿佛在诉说。。。。。。 “驾,驾。。。。。。快点”,在大漠的深处传来一男一女的催赶声。 “还有多远了,大哥?”女的问道。 “应该快了,沿着这个方向,走出这里应该不会超过五个时辰”,男子应道。 “好,
2011-12-12 00:10:01 3440
原创 ffmpeg在Windows平台上的编译方法
由于ffmpeg不能在vc的环境下编译,因此我们需要下载一个MinGW安装好后打开msys.bat文件编辑,在最开始处添加一行call "E:\Program Files (x86)\MicrosoftVisual Studio 10.0\VC\bin\vcvars32.bat"我这里是64位系统+VC2010,安装在E盘,大家可以根据自己的情况进行修改然后运行MinGW因为M
2011-12-12 00:01:59 1167
原创 Windows Phone7退出对话框的一点心得
首先问题是,何时调用? 根据我的经验,在按下Back键的时候程序会收到一个事件:1. 如果是App类在VS生成的代码中有一个InitializePhoneApplication函数,在里面创建了RootFrame对象,这个对象有一个事件BackKeyPress,添加一个函数响应它,按下Back键的时候这个函数会被响应,比如:private void OnBackKey
2011-12-06 23:31:18 2171
原创 一些对科学与宗教,神的感悟
今天在看霍金的新作:大设计,忽然浮想联翩,于是随手写下了很多感想,跟大家分享一下,看看各位的看法。 我原来一直有一种想法,如果说宗教,有神论在很长的时间内一直在抑制科学的进步,是否如果消除这些东西,科学就会大踏步的向前进。但是现在我觉得,这种从反方向的抑制可能恰恰催生了科学的发展,正如一个将死之人对生命的渴望。 人是有自由意志的,所以人类不会甘心被神,被自然所奴役,因为我不是一个基督
2011-12-02 23:01:39 2456
原创 一个LoadLibrary导致程序死机的Bug的诊断
前一阵子做一个项目,封装了Libtorrent这个BT库,然后我把它封装了一下,导出了几个函数,然后奇怪的发现,在LoadLibrary这个封装好的DLL时候,程序发生了死锁,就是在LoadLibrary该DLL的时候,程序无论如何也执行不下去了。这时候我们一般的思路是调试一下该DLL,于是我也这样做了,结果我惊奇的发现,DllMain没有被调用,也就是说,程序在调用DllMain之前就死
2011-12-02 12:40:41 4156
原创 一种常见的数据挖掘的算法SPRINT算法的简单实现
#include #include #include #include #include #include #include #include #include using namespace std;map xmap;typedef struct attr
2011-07-16 02:07:43 3112 2
原创 如何抓取QQ2010的聊天框
做这件事难点在于,QQ2010的聊天框用的是无窗口RichEdit,因此不能像普通的RichEdit那样通过FindWindow找到窗口然后发送WM_GETTEXT来获取文本,但是是不是就没有办法了呢,当然不是,这篇文章就要告诉大家抓取QQ2010(以及之后版本)的QQ聊天框信息的一些基本思路。大家先用Dependency Walker看一下RICHED20.dll这个文件,这个文件位于T
2011-04-29 18:42:00 3501 13
原创 获取无窗口RichEdit的HostWindow的方法
一般来说是无法直接通过调用接口的方式来获取无窗口RichEdit所处的HostWindow的,但是可以利用ITextHost的一些函数配合Win32API来得到HostWindow的窗口句柄比如:ITextHost *pHost;//此处可以通过ITextServices的QueryInterface得到ITextHost的指针然后调用pHost->TxSetCapture(TRU
2011-04-28 19:29:00 2158 1
原创 将16进制字符串转换为整数的函数
<br />稍加处理就可以支持负数。字符串必须以'0x'打头,表示是一个16进制字符串<br /><br />__int64 ahextoi64(const char *str)<br />{<br /> <br />char szFlag[3]={0};<br />strncpy(szFlag,str,2);<br />if (strcmp(szFlag,"0x"))<br />return 0;<br />int len = strlen(str+2);<br />char szNum[16];<br
2010-08-20 14:11:00 1827
原创 如何将自己的窗口置为顶层窗口
今天结合MSDN研究了一下,大致是以下的步骤:1.对于主窗口,可以直接用AfxGetMainWnd()->SetWindowPos(&wndTopMost, rect.left, rect.top, rect.Width(), rect.Height(), SWP_SHOWWINDOW)。2.对于子窗口,方法与面类似,但是先要取消子窗口的父窗口,即调用子窗口的SetParent(NULL)
2008-11-19 22:25:00 2665
原创 如何将自己的程序设置为默认浏览器
首先要在每个shell子键下创建你的程序的程序组子键,比如你的程序是MyBrowser那么就要创建RegCreateKeyEx(HKEY_CLASSES_ROOT, _T("http//shell//MyBrowser//command"), NULL,NULL,NULL, KEY_ALL_ACCESS,NULL, &hKey , NULL) 在该子键中写入你的浏览器的命令行比如:TC
2008-10-28 00:29:00 1805 2
原创 Reading Plan for The Rat Year
I think the most important thing you should do if you are a programmer,like me, is reading,.Every time when you are in coding a program but suddenly found that there were some problem in your code but
2008-01-09 23:59:00 898
原创 新年第一帖,一点问题,一些随想
现在是1月5日2点左右,昨天晚上从小i的网站上下载了MSN机器人开发的SDK,准备做一个有用的MSN机器人程序,捣鼓了半天,总算是把登陆弄妥了,本来以为直接调用Login函数得到的返回值可以用来判断登陆是否正确,但是结果发现这是不准确的的,你必须等到OnLogin这个回调函数被调用的时候才能确切的弄明白,在这个函数的参数里会给出服务器的反馈信息,但是问题就是出在显示这些信息上,本来我打
2008-01-05 03:32:00 838
转载 2008 微软产品期待列表
Bink.nu上公布了新一期的微软产品“期待列表”,在2008年我们可能从微软看到哪些新产品的发布呢?下面就来看看这张列表。需要注意的是,这个列表并不一定是100%准确的,只是基于事实的一些假想和猜测,往年的“期待列表”2005年和2006年是比较准确的。Windows "Windows Server 2008 Standard" Edition (x64, with Hyper-V)"
2007-12-21 16:00:00 971
翻译 深入了解CCtrlView
如果我们要将一个控件转换成视图类,我们一般会想到CCtrlView,用它实现的控件视图一般添加一个GetXXXCtrl函数,函数的作用是返回视图中控件的引用,如果在MFC程序中跟踪它的调用我们会发现它的实现是这样的(以CEdit控件为例)_AFXEXT_INLINE CEdit& CEditView::GetEditCtrl() const { return *(CEdi
2007-12-18 15:22:00 3564
原创 如何实现由列表控件控制的属性表
(本文发表于VCKBase,可从如下链接获取源代码:http://www.vckbase.com/code/downcode.asp?id=3110欢迎讨论) 很多MFC程序都用到了属性表和属性页来实现选项设置的界面,但是MFC本身提供的属性表页功能有限,一些新软件都实现了自己定义的属性页。MFC原始的属性页是通过CTabCtrl进行切换控制的,这里给出了一种现在较为常见的用CLis
2007-12-17 12:27:00 3375 3
原创 对程序添加系统托盘图标支持-一个简单的C++封装
实现的关键是调用Windows Shell 的API Shell_NotifyIcon,该函数有两个参数,第一个参数指名操作类型,第二个参数是一个NOTIFYICONDATA结构,保存了操作相关的信息,比如图标,工具提示文本等等。关于该函数的详细情况可以在MSDN上查阅得知,这里不多叙述。下面贴出类的实现代码,后面会有使用方法的介绍(这个Blog居然没有C++的Language Filter,
2007-10-09 03:20:00 3574
抓取QQ2010聊天框的源码
2011-05-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人