【笔记】应用程序中使用系统主题外观
摘要:【转载】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.
阅读全文
【转载】亲密接触VC6.0编译器
摘要:大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解。原因是多方面的。大多数情况下,我们只停留在“使用”它,而不会想去“了解”它。因为它只是一个工具,我们宁可把更多的精力放在C++语言和软件设计上。我们习惯于这样一种“模式”:建立一个项目,然后写代码,然后编译,反反复复调试。但是,所谓:“公欲善其事,必先利其器”。如果我们精于VC开发环境,我们是不是能够做得更加游刃有余呢? 闲话少说。我们先来看一下VC的处理流程,大致分为两步:编译和连接。源文件通过编译生成了.obj文件;所有.obj文件和.lib文件通过连接生成.exe文件或.dll文件。下面,我们分别讨论这两个步骤的一些细节...
阅读全文
【笔记】实现库函数sqrt的功能(C代码)
摘要:实现库函数sqrt的功能(C代码)正数 n 的平方根可以通过计算一系列近似值来获得,每个近似值够比前一个更加接近准确值。第一个近似值是 1 ,接下来的近似值则通过下面的公式来获得。 每进行一次计算得到的结果都是 n 的平方根的一个近似值,原则上,这种计算可以永远进行下去,它会不断产生更加精确的结果。但在实际中,由于浮点变量的精度限制,程序无法一直计算下去。当计算得到某个近似值与前一个近似值相等的时候,就可以停止计算。得到的这个值也就是 n 的平方根。#include <stdio.h>#include <stdlib.h> double Sqrt( double dNu
阅读全文
【笔记】CPU是如何检测溢出的?
摘要:问题: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汇编语言程序设计》第五版
阅读全文
【笔记】汇编标志位 - FLAGS
摘要:·汇编标志位:------------------------------------------------------------------------------------标志名 标志 1 标志 0------------------------------------------------------------------------------------OF (溢出标志) OV NVDF (方向标志) UP DNIF (中断标志) EI DISF (符号标志位) PL NGZF (零标志) ZR NZAF (辅助进位标志位) AC...
阅读全文
【转载】通用存储器的作用
摘要:通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。除此之外,它们还各自具有一些特殊功能。汇编语言程序员必须熟悉每个寄存器的一般用途和特殊用途,只有这样,才能在程序中做到正确、合理地使用它们。表2.1 通用寄存器的主要用途寄存器的分类寄存器主 要 用 途通用寄存器数据 寄存器AX乘、除运算,字的输入输出,中间结果的缓存AL字节的乘、除运算,字节的输入输出,十进制算术运算AH字节的乘、除运算,存放中断的功能号BX存储器指针CX串操作、循环控制的计数器CL移位操作的计数器DX字的乘、除运算,间接的输入输出变址寄存器SI存储器指针、串指令中的源操作数指针DI存储器指针、串指令中的目
阅读全文
【转载】标志(专用)寄存器的作用
摘要:16位CPU内部有一个16位的标志寄存器,它包含9个标志位。这些标志位主要用来反映处理器的状态和运算结果的某些特征。各标志位在标志寄存器内的分布如图2.2所示。1514131211109876543210OFDFIFTFSFZF AF PF CF31…17161514131211109876543210……VMRFNTIOPLOFDFIFTFSFZF AFPFCF图2.2 16位/32位标志寄存器的示意图上面9个标志位可分为二组:运算结果标志位(有背景色的标志位)和状态控制标志位。前者受算术运算和逻辑运算结果的影响,后者受一些控制指令执行的影响。有些指令的执行会改变标志位(如:算术运算指令等)
阅读全文