2012年5月18日
摘要: 首先,先从简单的说起,本地时间(LocalTime),也就是系统设置时区的当前时间!比如说当前系统设置的时区为“(UTC+08:00)北京,重庆,香港特别行政区,乌鲁木齐”(东八区),系统的右下角通知区域显示的时间为“2012/5/18 16:57”,那么这个时间就是当前系统的本地时间! 要说清楚什么是系统时间(SystemTime)之前先来了解一下格林威治时间。本初子午线被定义为通过格林威治经线的位置,相对这条经线的时区向东递增,向西递减,每隔一个时区,相差一个小时。那么,上面例子中的东八区的时间就是相对于格林威治时间加上了八个小时!而Windows的系统时间是就是格林威治时间!知道... 阅读全文
posted @ 2012-05-18 21:16 克劳德曼 阅读(3219) 评论(3) 推荐(4) 编辑
  2012年4月18日
摘要: 先来看一段简单的Win32汇编代码: .386 .model flat, stdcall option casemap:noneinclude windows.incinclude kernel32.incincludelib kernel32.libinclude msvcrt.incincludelib msvcrt.lib .datafNum1 REAL4 999.999dwNum2 DWORD 3fNum3 REAL4 ? .constszF... 阅读全文
posted @ 2012-04-18 20:25 克劳德曼 阅读(1664) 评论(3) 推荐(3) 编辑
  2012年4月14日
摘要: 一、连连看简介: 两张图片之间存在一条通路,这条通路最多拐两个弯。 如下图所示,A,B两点之间的一条有两个拐点的通路。 二、下面开始来分析,如何判断连个点位可以通过小于等于2个的拐点来联通。 1、相邻,可连通。 2、不相邻:如下图的A,B两张图片,A周围连续空缺处(无图片、通路)的标记为**,用集合Ca来表示,B周围连续空缺处标记为蓝色,用集合Cb来表示。黄蓝相交处标记为红色。记为C点。 (1)如果这样的C点存在(可能会有很多个),则问题解决,在A,B之间存在这样一条通路A-C-B,且最多只有1个拐弯点(有可能A,C,B共线,没有拐弯)。 (2)如果不存在这样的C点,也就是说... 阅读全文
posted @ 2012-04-14 08:50 克劳德曼 阅读(1119) 评论(0) 推荐(0) 编辑
  2012年4月9日
摘要: VKDebug调试工具是Masm32开发包中附带的一个调试工具,在Masm32程序中做输出调试是很方便的。 使用VKDebug很简单,只需像下面这样将debug.inc、debug.lib包含到程序中就可以了:include debug.incincludelib debug.lib 这里要注意的是:VKDebug中的调试宏用到了Windows.inc头文件中定义的常量,以及使用了一些Kernel32.dll和Masm32库中的函数,因此必须在包含debug.inc和debug.lib之前包含windows.inc, kernel32.inc, kernel32.lib, masm32... 阅读全文
posted @ 2012-04-09 20:07 克劳德曼 阅读(465) 评论(2) 推荐(1) 编辑
摘要: Masm32 SDK包中有一个msvcrt.inc头文件和msvcrt.lib导入库文件。这个头文件中的函数是由Masm32爱好者从VC的运行时库中导出整理的,msvcrt.inc头文件开头就说了:“prototypes for EXPORT msvcrt functions”。因此,在Win32汇编中用这个头文件来使用VC运行库的函数对编写Win32汇编程序来说是非常方便的。 从msvcrt.inc中各个函数的原型可以看出,VC运行时中的各个函数名称前都多了一个crt__xxx,crt_xxx的前缀,使用这些函数只需要将msvcrt.inc和msvcrt.lib包含到源代码中,然后... 阅读全文
posted @ 2012-04-09 19:18 克劳德曼 阅读(1836) 评论(0) 推荐(1) 编辑
  2012年3月13日
摘要: 如何在对话框程序中让对话框捕获WM_KEYDOWN消息作者:孙鑫日期:2003-9-4 在对话框程序中,我们经常是利用对话框上的子控件进行命令响应来处理一些事件。如果我们想要让对话框(子控件的父窗口)类来响应我们的按键消息,我们可以通过ClassWizard对WM_KEYDOWN消息进行响应,当程序运行后,我们按下键盘上的按键,但对话框不会有任何的反应。这是因为在对话框程序中,某些特定的消息,例如按键消息,它们被Windows内部的对话框过程处理了(即在基类中完成了处理,有兴趣的读者可以查看MFC的源代码),或者被发送给子控件进行处理,所以我们在对话框类中就捕获不到按键的消息了。 既然我们.. 阅读全文
posted @ 2012-03-13 18:45 克劳德曼 阅读(327) 评论(0) 推荐(0) 编辑
  2012年2月28日
摘要: 【转载】VC++6.0 MFC应用程序使用XP主题外观一、实现原理 微软为Windows XP提供了Themes服务。Themes可以让程序具有“XP风格”,看起来更美观,因为微软更新了Comctl32.dll(ver 6.0)这个“XP风格”的控件。微软还为了保留传统的Windows界面风格,特地留下了Comctl32.dll v5.8。VC6的推出时间早于WinXP,因此VC6的程序默认是不使用“xp风格”的。 程序使用xp风格主要是内置了manifest这东东。因此只要让VC6的程序中包含即可。包含可以外置,也可以内置为资源。二、实现方法1.打开你的VC6 工程,找到资源试图(Reso. 阅读全文
posted @ 2012-02-28 22:30 克劳德曼 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解。原因是多方面的。大多数情况下,我们只停留在“使用”它,而不会想去“了解”它。因为它只是一个工具,我们宁可把更多的精力放在C++语言和软件设计上。我们习惯于这样一种“模式”:建立一个项目,然后写代码,然后编译,反反复复调试。但是,所谓:“公欲善其事,必先利其器”。如果我们精于VC开发环境,我们是不是能够做得更加游刃有余呢? 闲话少说。我们先来看一下VC的处理流程,大致分为两步:编译和连接。源文件通过编译生成了.obj文件;所有.obj文件和.lib文件通过连接生成.exe文件或.dll文件。下面,我们分别讨论这两个步骤的一些细节... 阅读全文
posted @ 2012-02-28 19:09 克劳德曼 阅读(179) 评论(0) 推荐(0) 编辑
  2012年2月27日
摘要: 实现库函数sqrt的功能(C代码)正数 n 的平方根可以通过计算一系列近似值来获得,每个近似值够比前一个更加接近准确值。第一个近似值是 1 ,接下来的近似值则通过下面的公式来获得。 每进行一次计算得到的结果都是 n 的平方根的一个近似值,原则上,这种计算可以永远进行下去,它会不断产生更加精确的结果。但在实际中,由于浮点变量的精度限制,程序无法一直计算下去。当计算得到某个近似值与前一个近似值相等的时候,就可以停止计算。得到的这个值也就是 n 的平方根。#include <stdio.h>#include <stdlib.h> double Sqrt( double dNu 阅读全文
posted @ 2012-02-27 22:11 克劳德曼 阅读(1000) 评论(0) 推荐(1) 编辑
摘要: 问题:CPU是如何检测溢出的? 在加法和减法运算完成后,CPU使用一种非常有趣的方法确定溢出标志的值:运算结果最高有效位的进位值(即CF的值)与到最高有效位的进位值异或,其结果放到溢出标志中。例如8位二进制数 1000 0000 和 1111 1110 相加,第6位向最高有效位(第7位)无进位,但是第7位向高位有进位值(CF=1):第6位到第7位没有进位CF = 1← 1000 0000+ 1111 1110--------------------------------- = 0111 1110由于1 XOR 0 = 1,因此:OF = 1注:《Intel汇编语言程序设计》第五版 阅读全文
posted @ 2012-02-27 22:04 克劳德曼 阅读(563) 评论(0) 推荐(1) 编辑