- 博客(29)
- 资源 (16)
- 收藏
- 关注
原创 C + windows API
做Windows程序开发,windows API一定是要学习的。虽然现在windows平台下的开发环境有很多,也很方便,但通常只会提供windows服务的一个子集,有些特性还得调用API。分层是软件开发中一个永久的解决方案,很多难以解决的问题都可以用多加一层来解决。操作系统就是一个很好的例子。操作系统在软件开发人员与计算机硬件之间,这样就使开开发人员从繁杂的硬件处理中解脱出来,然而又能
2010-04-13 19:51:00
749
原创 字符集的问题
使用_T宏修改字符串常量可以是字符串变成中性的,但还应注意以下事项:1.将字符串声明为TCHAR类型而不是char类型。如果定义了_UNICODE符号,TCHAR将求值为wchar_t,它是一个16位的Unicode字符。如果没有定义_UNICODE,TCHAR将变为普通古老的char。2.不要使用char*或者wchar_t*来声明TCHAR字符串的指针,而应当使用TCHAR*,或者
2010-03-07 14:37:00
516
原创 MFC消息映射的工作方式
MFC的DECLARE_MESSAGE_MAP宏在类声明中添加了3个成员:一个名为_messageEntes的私有的AFX_MSGMAP_ENTRY结构数组,其中包含消息与消息处理函数相关联的信息;一个名为messageMap的静态AFX_MEGMAP结构,其中包含一个指向类中的_messageEntries数组的指针和一个指向基类中的messageMap结构的指针;以及一个名为GetMess
2010-03-07 14:05:00
777
原创 MFC程序的生死概述
运行一开始,AfxWinMain就调用AfxWinMain函数来初始化主框架,并将hInstance,nCmdShow以及其他AfxWinMain函数参数复制给应用程序对象的数据成员,然后它调用InitApplication和InitInstance。在MFC的16位版本中,只有传递给AfxWinMain的hPrevInstance参数是空时才调用InitApplication,这表明当前运行
2010-03-07 10:44:00
938
原创 windows驱动分类
windows下的设备驱动程序分以下几类:1.硬件设备驱动程序通过HAL操纵硬件,从而将输出写到物理设备或网络中,或者从物理设备或网络上接受输入。硬件设备驱动程序也有许多类型,比如总线驱动程序、人机界面驱动程序、大容量存储驱动程序,等等。2.文件系统驱动程序是指这样的windows驱动程序:可以接受面向文件的I/O请求,并且将这些请求转换成针对某一特定设备的I/O请求。3.文件系统
2010-02-05 11:11:00
2056
1
原创 用户模式和保护模式
为了避免用户应用程序访问或修改关键字的操作系统数据,windows使用了两种处理器访问模式:用户模式和内核模式。用户程序代码运行在用户模式下,而操作系统代码(比如系统服务和设备驱动程序)运行在内核模式下。内核模式是指这样一种处理器执行模式:它允许访问所有的系统内存和所有的CPU指令。处理器让操作系统软件比应用软件有更高的特权级,从而为操作系统设计者提供了一层保护的基础,确保一个行为不正常的应用
2010-02-01 20:06:00
842
原创 线程
线程是一个进程内部的实体,也是windows执行次进程时的调度实体。如果没有线程,则进程的程序不可能运行。线程包括以下一些最基本的部件:1.一组代表处理器状态的CPU寄存器中的内容。2.两个栈,一个用于当线程在内核模式下执行的时候,另一个用于线程在用户模式下执行的时候。3.一个被称为线程局部存储区的私有存储区域,各个子系统、运行库和DLL都会用到该存储区域。4.一个被称为线程ID的
2010-02-01 19:30:00
526
原创 windows进程内部信息
一个windows进程是由以下元素构成的。1.一个私有的虚拟地址空间,这是指该进程可以使用的一组虚拟内存地址。2.一个可执行的程序,它定义了初始的代码和数据,并且被映射到该进程的虚拟地址空间中。3.一个已打开的句柄列表,这些句柄指向各种系统资源,比如信号量,通信端口和文件,该进程内所有的线程都可以访问这些系统资源。4.一个被称为访问令牌的安全环境,它表示了与该进程关联的用户,安全组
2010-01-31 16:15:00
642
原创 windows API的分类
Windows API包括几千个可调用的函数,他们可以被分为以下几个大类:1.基本服务2.组件服务3.用户界面服务4.图形和多媒体服务5.消息和协作6.网络7.Web服务
2010-01-31 15:45:00
612
原创 为什么C语言不检查数组的下标?
最早的C编译器并不检查下标,而最新的编译器依然不对它进行检查。这项任务之所以很困难,是因为下标引用可以作为任意的指针,而不仅仅是数组名。作用于指针的下标引用的有效性既依赖于该指针当时恰好指向什么内容,也依赖于下标的值。结果,C的下标检查所涉及的开销比你开始想象的要多。编译器必须在程序中插入指令,证实下标的结果所引用的元素和指针表达式所指向的元素属于同一个数组。这个比较操作需要程序中所有数组的位
2009-12-29 16:30:00
3518
2
原创 static的作用
当它用于函数定义时,或用于代码块之外的变量声明时,static关键字用于修改标识符的链接属性,从external改为internal,但标识符的存储类型和作用域不受影响,用这种方式声明的函数或变量只能在声明他们的源文件中访问。当用于代码块内部的变量声明时,static关键字用于修改变量的存储类型,从自动变量修改为静态变量,但但变量的链接属性和作用域不受影响。用这种方式声明的变量在程序执
2009-12-23 13:27:00
648
原创 程序设计中的环境
在ANSIC的任何一种实现中,存在两种不同的环境。第一种是翻译环境,在这个环境里,源代码被转换成可执行的机器指令。第2种是执行环境,它用于实际执行代码。标准明确说明,这两种环境不必位于同一台机器上,例如,交叉编译器就是在一台机器上运行,但它所产生的可执行代码运行于不同类型的机器上。操作系统也是如此。标准同时讨论了独立环境,就是不存在操作系统的环境。你可能在嵌入式中(如微波炉控制器)遇到这种类型
2009-12-20 08:56:00
706
原创 数组下标的本质
#include using namespace std;void Out(const char* ch){ cout}int main(int argc,char*argv[]){ Out("HanPwngfei"); int i = 0; cin>>i;}这段代码告诉我们,数组下标的使用,最终会被编译器转换
2009-12-18 17:27:00
959
原创 c函数的参数传递
在C语言中,所有传递给函数的参数都是按值传递的。#include using namespace std;void Out(int* p){ int j = 11; p = &j; *p = 12; cout}int main(int argc,char*argv[]){ int i = 10; O
2009-12-18 16:33:00
519
原创 编程小Tip
假如这个程序的源代码中由几个源文件组成,那么使用该函数的源文件都必须写明该函数的原型。把原型放在头文件中并使用#include指令包含他们,可以避免由于同一个声明的的多份拷贝而导致的维护性问题。编程过程中,恰当的使用空行和Tab缩进,可以大大提高代码的可读性。如今软件开销的最大之处并非在于编写,而是在于维护。在修改一段代码时所遇到的第一个问题就是搞清楚代码的功能。所以,如果你在代码中插
2009-12-18 09:33:00
669
原创 cons成员函数的约束有多大?
const成员函数的作用是保护类型不在此函数中不修改。#include using namespace std;class A{private: int i;public: A() { i = 10; } void F() const { i = 11;
2009-12-18 09:18:00
808
原创 VC6中的文件后缀名含义总结
.APS:存放二进制资源的中间文件,VC把当前资源文件转换成二进制格式,并存放在APS文件中,以加快资源装载速度。.BMP:位图资源文件。.BSC:浏览信息文件,由浏览信息维护工具(BSCMAKE)从原始浏览信息文件(.SBR)中生成,BSC文件可以用来在源代码编辑窗口中进行快速定位。.C:用C语言编写的源代码文件。.CLW:ClassWizard生成的用来存放类信
2009-12-18 08:30:00
1634
转载 为什么选择C语言
为什么C语言依然如此流行?历史上,由于种种原因,业界选择了C,其中最主要的原因就在于它的效率。优秀的C程序的效率几乎和汇编语言程序一样高,但C程序明显比汇编语言程序更易于开发。和许多其他语言相比,C给予程序员更多的控制权,如控制数据的存储位置和初始化过程等。C缺乏“安全网”特性,这虽有助于提高它的效率,但也增加了出错的可能性。例如,C对数组下标引用和指针访问并不进行有效性检查,这可以节省时间,
2009-12-16 11:19:00
1337
原创 ZThread在VC6下的构建
从http://zthread.sourceforge.net/上下载ZThread最新版(Version 2.3.2)。解压缩下载好的文件,把include文件夹下的内容复制到src中把src文件下的内容添加到你的工程中设置引用多线程运行库编译编译过程中,会出现一个小问题,不过容易就可以解决。
2009-12-15 17:24:00
671
原创 程序员成长的六个阶段
第一阶段此阶段主要是能熟练地使用某种语言。这就相当于练武中的套路和架势这些表面的东西。第二阶段此阶段能精通基于某种平台的接口(例如我们现在常用的Win32的API函数)记忆所对应语言的自身的库函数。到达这个阶段后,也就相当于可以进行真实散打对练了,可以真正地在实践中做些应用。第三阶段此阶段能够深入地了解某个平台系统的底层,已经具有了初级的内功的能力,也就
2009-12-04 08:28:00
597
原创 内存的管理
大多数主流的语言或运行环境都支持3种最基本的内存分配方式,它们分别是:静态分配。静态变量和全局变量的分配形式。我们可以把静态分配的内存看成是家用的耐用家具。通常,它们无须释放和回收,因为没人会天天把大衣柜当作垃圾扔到窗外。自动分配。在栈中为局部变量分配内存的方法,栈中的内存可以随着代码块推出时出栈操作被自动释放。这类似于家中串门的访客,天色一晚就要各自回家,除了个别不识时务者以外,我们
2009-12-02 10:21:00
434
原创 整数字符串转化
1.用编程的方法将整数转化成字符串整数转化成字符串,可以采用加‘0’,再逆序的办法,整数加0就会隐性转换成char类型的数。#include #include using namespace std;int main(void){ int num = 12345; char temp[5]; char str[5]; int i = 0; int j = 0; while(
2009-11-30 15:40:00
636
原创 排序
所谓排序,就是整理文件中的记录,使之按关键字递增(或递减)的顺序排列起来。1.被排序的对象--文件被排序的对象--文件由一组记录组成。记录则由若干数据项(或域)组成。其中有一项可用来标识一个记录,称为关键字项。该数据项的值称为关键字(Key)。2.排序运算的依据--关键字用来做排序运算依据的关键字,可以是数字类型,也可以是字符类型。关键字的选取应根据问题的要求而定。3.排序
2009-11-30 13:57:00
715
原创 c++中的四种类型转换操作符
Dynamic_cast主要用于执行“安全的向下转型”。也就是说,要确定一个对象是否是一个继承体系中的一个特定类型。它是唯一不能用旧风格语法执行的强制类型转换,也是唯一可能有重大运行时代价的强制转换。Static_cast可以被用于强制类型转换(例如,non-const对象转换为const对象,int转换为double,等等),它还可以用于很多这样的转换的反向转换(例如,void*指针转换为有
2009-11-30 13:54:00
583
原创 sizeof 小结
古人云:万事预则立,不预则废。所以,最近看了好多面试题。现在把有关sizeof的知识总结一下,大部分内容是从网上所搜出来的,写在这里只是为了做了记录,如果正好触碰到您的原版权,见谅!首先,sizeof倒是什么?在许多关于c/c++的语法书籍中,我们会看到sizeof和诸如+,-,×等这些操作符放在一起,而且还有优先级。sizeof是一元操作符,它的作用是返回操作数的大小,以字节为单位。它的语
2009-11-09 16:38:00
833
原创 vs2008编译错误fatal error C1902: 程序数据库管理器不匹配;请检查安装解决
重装了本本上的Xp系统,如往常一样,升级,装杀毒软件,开发工具。一些进行的非常顺利。然而,在我打开VS2008准备耕作的时候,尽然出现了一邪恶的错误提示:vs2008编译错误fatal error C1902: 程序数据库管理器不匹配;请检查安装解决。进过多家的方法,均无效,重装VS也不行,最后终于百度到一无名大侠的解决方案,问题解决了,在这里记录下来,以备再有不测。到C:/Program
2009-11-09 10:58:00
11548
3
原创 最炫的桌面软件
在windows用过类似Mac下的Dock工具吗?Linux下的Cairo-Dock可以提供超级炫的Mac Dock效果。今天在Ubuntu下体验了以下效果,很吸引眼球。安装很简单,如下:1.下在软件包(提供deb包的下载地址)http://download.berlios.de/cairo-dock/cairo-dock-plug-ins_v1.6.3.1_i686
2009-11-08 14:22:00
815
原创 Begin from today
今天开始耕作我荒废已久的博客。记录生活点滴,回首往事,原来我这样走过...... 我是一个怎么的人,不擅言谈,但真诚待人.......
2009-11-08 13:46:00
479
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人