- 博客(20)
- 资源 (33)
- 论坛 (34)
- 收藏
- 关注
原创 Windows API一日一练(81)FormatMessage函数
在开发软件的过程里,经常要做的工作就是调试程序,许多问题的出现,不但是逻辑的问题,还有可能是对API的不熟悉,或者某种条件下调用API会出错的。那么这些出错的原因是什么呢?通常只获取到错误码,也就是通过函数GetLastError得到。当然可以根据这个错误码去查找MSDN就可以知道出错的原因,但有时在客户那里并没有MSDN,那么就需要把调用API函数出错的信息显示出来,或者写到LOG里去。这时就需
2007-11-30 22:28:00
9308
原创 Windows API一日一练(80)MultiByteToWideChar函数
在软件的使用过程中,经常碰到乱码的情况,那么乱码的原因是什么呢?其实很多情况下,就是字符集的不同,也就是说同一个数字代表不同意思。在Windows里,目前主要有ANSI和UNICODE的方式。如果在UNICODE的方式里直接显示ANSI的字符串是出现乱码的,同样在ANSI函数里也不能显示UNICODE的字符串,而是要进行相互转换才能显示正确的字符串。在NT以后的操作系统里,Windows底层函数已
2007-11-29 18:59:00
4503
2
原创 Windows API一日一练(79)GlobalMemoryStatusEx函数
在开发软件的过程中,经常会碰到不同用户的PC系统配置不一样。比如有些用户的系统内存配置比较差,这样处理大量数据时,就不能把大量的数据读取到内存里处理了。而又有一些用户的内存比较多,或者是机器比较新,那么就可以加载大量的数据到内存里处理,这样可以随着系统的更新,软件的处理能力能大幅地提高性能。这样就需要了解系统的配置信息了,最重要的资源之一内存,就是最需要了解的,需要调用函数GlobalMemory
2007-11-27 21:36:00
11126
2
原创 Windows API一日一练(78)HeapAlloc函数
前面已经介绍两个分配内存的函数,一个全局的内存分配,一个是私有的内存分配。在进程私有的内存里分配里,又有两种分配情况,一种上基于栈式的内存分配,另一种是基于堆内存的分配。在c++里使用堆内存分配是使用HeapAlloc函数来实现的,也就是实现new操作符分配内存时会调这个函数。 函数HeapAlloc声明如下:WINBASEAPI__bcount(dwBytes)LPVOID
2007-11-26 22:07:00
17843
5
原创 Windows API一日一练(77)VirtualAlloc函数
上一次学习了全局内存的分配,在Windows里内存管理是分为两部份,全局内存是系统管理的内存,因而所有进程都可以访问的内存,而每一个进程又有自己的内存空间,这就是虚拟内存空间了,而虚拟内存的空间比较大,当物理内存不足时,系统会把虚拟内存的数据保存到硬盘里,这样只要硬盘的空间足够大,每个进程就可以使用3G的内存。虚拟内存分配可以作为程序里分配内存的主要方式,比如大量的数据缓冲区,动态分配内存的空间。
2007-11-20 20:42:00
21610
7
原创 Windows API一日一练(76)GlobalAlloc函数
在Windows系统里,有一项功能非常实用,就是剪贴板功能,它能够从一个程序里与另一个程序进行数据交换的功能,也就是说两个进程上是可以共享数据。要实现这样的功能,Windows系统在底层上有相应的支持,就是高端地址的内存是系统内存,这样就可以不同的进程进行共享数据了。因此,调用函数GlobalAlloc来分配系统内存,让不同的进程实现共享数据,也就是剪贴板功能,可以在一个进程内分配内存,在另一个进
2007-11-19 20:54:00
8171
5
原创 Windows API一日一练(75)SystemParametersInfo函数
面对华丽的Windows桌面,工作的心情或许好很多,但是久了总会失去兴趣,总想定期地更新桌面的图片。软件开发人员又面对这样的需求了,需要怎么样去做呢?努力去找API函数吧。到目前为止,还有很多变桌面图片的软件,并且还能很挣钱的。其实设置桌面图片的需求,在目前数码相片处理软件也有现实的需求,比如当你去旅游回来后,想把照片当作桌面图片,就可以在处理图片时就设置为桌面图片。这样就需要使用函数System
2007-11-16 20:57:00
10920
原创 Windows API一日一练(74)GetSystemInfo函数
有一次,我正在开发一个视频压缩程序,而压缩算法是需要非常高效的,也就是需要使用到CPU的多媒体指令。在X86的领域里,目前主要有两家CPU,就是INTEL和AMD。它们的多媒体指令是不一样的。为了区分这种不同的指令,就需要调用函数GetSystemInfo来获取CPU的信息,然后再调用不同的动态连接库来进行多媒体数据压缩。 函数GetSystemInfo声明如下: WINBASEA
2007-11-15 20:44:00
11519
3
原创 Windows API一日一练(73)GetVersionEx函数
Windows发展还是非常快速的,从Win95,到Win98,再到Win2000和XP系统。每个系统的功能也有所不同,要想在程序里区别不同的系统,就需要获取系统的版本信息。比如XP里有防火墙,而其它以前的系统里没有带有的。但有时编写了一个服务器程序,或者编写BT程序,又需要设置一个端口对外面接收连接,因此在XP系统里就需要设置防火墙的端口,而在XP以前的系统里就没有必要设置端口了。这样的需求,就可
2007-11-14 21:45:00
5787
原创 Windows API一日一练(72)GetUserName函数
随着系统安全性的加强,每个系统里越来越多不同的帐号登录。假如你正在开发一个上网安全软件,让不同的用户有不同的上网权限,这样就需要识别当前的用户是什么帐号登录了,然后再作出权限分配。还有出错时,也需要对当前帐号进行记录下来,因为不同的帐号有不同的权限,有些磁盘是不允许操作的。面对这些需求,就需要使用函数GetUserName。 函数GetUserName声明如下: WINADVAPI
2007-11-13 19:55:00
7390
原创 Windows API一日一练(71)GetComputerName函数
当你在一个大公司里面,当一个网络管理员时,发现成千上万个电脑需要你去管理时,怎么去区分这些电脑呢?那肯定是通过计算机的名称。而这个网络管理员又需要你开发一套软件,它可以把所有电脑的名称自动地上报给他。面对这样的需求,就可以使用下面的函数GetComputerName来获取计算机的名称,并通过网络传送给管理员。 函数GetComputerName声明如下: WINBASEAPIB
2007-11-12 21:32:00
5758
原创 Windows API一日一练(70)GetSystemTime和GetLocalTime函数
时间是一个非常重要的信息,比如写LOG时,就需要把时间输出来,跟踪程序是什么时候出错的。或者当你开发一个银行交易系统时,就要记录当前交易的时间,以便后面可以输出报表,打印给信用卡用户。根据不同的需求,可能需要使用不同的时间,目前有UTC和本地时间。UTC是格林威治时间,也就是全球标准时间。本地时间就是相对于UTC而言的,比如中国北京是在东8区,相对于UTC就多了8个小时。一般使用到的时间都是使用本
2007-11-11 10:11:00
23497
3
原创 Windows API一日一练(69)GetTickCount函数
时间计时,也不是越精确越好,有时只需要有一个计时就行了。这样就可以使用毫秒级别的计时函数GetTickCount。这个函数是记录了系统启动以来的时间毫秒,当超过49.7天,这个值变为从0开始,也就是说49.7天是一个周期。当不同的两次函数调时,就返回两次时间差值。 函数GetTickCount声明如下: WINBASEAPIDWORDWINAPIGetTickCount
2007-11-09 22:02:00
8824
1
原创 Windows API一日一练(68)QueryPerformanceCounter函数
精确的时间计时,有时候是非常必要的。比如播放多媒体时视频与音频的时间同步,还有在测试代码的性能时,也需要使用到非常精确的时间计时。还有测试硬件的性能时,也需要精确的时间计时。这时就需要使用QueryPerformanceCounter来查询定时器的计数值,如果硬件里有定时器,它就会启动这个定时器,并且不断获取定时器的值,这样的定时器精度,就跟硬件时钟的晶振一样精确的。 函数QueryPer
2007-11-08 21:20:00
7926
7
原创 Windows API一日一练(67)SetTimer和KillTimer函数
在前面介绍了一对定时器的API函数使用,现在又介绍另外一对API函数的使用。它使用起来比前的函数要简单一些,但它一般是使用到有窗口的程序里,并且它的精度也没有前面的API函数高,对于一些要求不高的场合还是非常合适的。它是采用消息通知的方式,每当定时到了就会收到一条消息。 函数SetTimer和KillTimer声明如下: WINAPISetTimer( __in_op
2007-11-07 22:34:00
14223
5
原创 Windows API一日一练(66)CreateWaitableTimer和SetWaitableTimer函数
用户感觉到软件的好用,就是可以定时地做一些工作,而不需要人参与进去。比如每天定时地升级病毒库,定时地下载电影,定时地更新游戏里的人物。要想实现这些功能,就可以使用定时器的API函数CreateWaitableTimer和SetWaitableTimer来实现了,这对API函数创建的时钟是比较精确的,可以达到100倍的10亿分之一秒。 函数CreateWaitableTimer和SetWai
2007-11-06 21:20:00
10526
4
原创 Windows API一日一练(65)RegQueryValueEx函数
上一次介绍怎么样保存数据到注册表里,这次就需要从注册表里读取数据出来了。在这个例子里是读取字符串数据出来,主要调用函数RegQueryValueEx来实现。下面的例子里就是先查询键值的长度,然后再读取内容出来。 函数RegQueryValueEx声明如下: WINADVAPILONGAPIENTRYRegQueryValueExA ( __in HKEY hK
2007-11-05 21:42:00
25570
3
原创 Windows API一日一练(64) RegSetValueEx和RegDeleteValue函数
上一次说到怎么创建注册表的键,但接着下来的问题就是怎么样保存数据到注册表里。注册表使用树形的方式管理数据,所以它的扩展和访问都是比较灵活的。不过注册表是系统重要信息库,每当Windows系统加载时,都首先从硬盘里读取它出来,才知道每台电脑所有硬件配置信息,然后再加载不同的驱动程序。因此,注册表作为系统重要的文件,不要往里面写超过2K的数据大小,这样可以提高系统的速度。下面就来介绍一下怎么样保存一个
2007-11-04 20:18:00
18592
原创 Windows API一日一练(63)RegOpenKeyEx和RegCreateKeyEx函数
由于电脑经常会关闭,或者应用程序也会经常关闭,但有一些参数是经常需要保存。比如当你打开程序,并设置了窗口的大小,想每次打开时都设置窗口为上次打开的大小。这样就需要保存窗口的大小,那么窗口大小的参数保存到那里呢?其实在Windows里最方便的做法,就是保存到注册表里。又比如游戏登录时,总是想保存最后一个登录的用户,那么也需要保存这个用户到注册表里。其实注册表是Windows保存系统配置的数据库,比如
2007-11-02 22:10:00
38112
7
原创 Windows API一日一练(62)GetDiskFreeSpaceEx函数
有一次客户给我打来了投诉电话,说我的软件太不好用了,导致他们丢失了很多数据。后来我仔细地查看LOG,分析出来的原因,其实是很简单的,就是磁盘的空间不够了。我给客户说他们的电脑磁盘空间不够了导致出错的问题,但客户反问我为什么不提示磁盘空间不足。是啊,为什么不提示磁盘的空间不足呢?为了解决这个需求,就需要使用到这个函数GetDiskFreeSpaceEx。 函数GetDiskFreeSpace
2007-11-01 20:57:00
40286
6
python抓取天气并分析 实例源码
2017-08-28
国产8051模拟器
2016-09-10
python web py入门配套源代码
2018-02-23
milang 1.0.5
2014-08-03
milang 1.0.4
2014-07-13
milang 1.0.3
2014-06-07
Milang 1.0.2
2014-06-02
svm_hog_data.rar
2020-03-02
实现numpy的C++库扩展
2019-11-24
webpy演示例子1
2018-02-21
胶囊模型的代码
2018-02-02
书《深度学习》
2017-03-13
tinyxml2配套源码
2016-06-27
selenium的浏览器驱动
2016-06-14
caimouse的留言板
发表于 2020-01-02 最后回复 2020-05-14
开发大联盟,VC人员开放大聚会
发表于 2001-11-05 最后回复 2012-05-23
C++编译器源程序学习!!!!!!!!!!!!!!!!!1
发表于 2003-12-26 最后回复 2004-01-07
FastBT下载 1.0.3.66版 2003.12.25 放分 一小时结.
发表于 2003-12-26 最后回复 2003-12-26
发布最新版本FastBT 1.0.1.27 高兴放分
发表于 2003-11-21 最后回复 2003-12-10
有没有分析过传奇网络通迅?
发表于 2003-07-10 最后回复 2003-11-28
Visual Studio.net 2003 7cd 下载
发表于 2003-08-27 最后回复 2003-09-01
Visual Studio.net 2003 7cd 下载
发表于 2003-08-27 最后回复 2003-08-28
怎么样实现在资源管理器多一个盘号?
发表于 2003-07-24 最后回复 2003-07-31
深圳治安真差,我差点就被打死了!
发表于 2003-05-12 最后回复 2003-05-23
开放源码的P2P文件共享研究Gnucleus
发表于 2002-07-24 最后回复 2003-05-06
怎么样实现从播放器播放的声音录下来?
发表于 2003-03-11 最后回复 2003-03-19
QQ死机的BUG?不信你就试试了。
发表于 2003-02-20 最后回复 2003-02-26
大家把自己有的技能交流一下
发表于 2003-01-24 最后回复 2003-01-28
有不有程序员取这么好有GF啊?
发表于 2003-01-15 最后回复 2003-01-24
在C++BUILDER里怎么调试进入PASCAL?
发表于 2003-01-08 最后回复 2003-01-08
猜谜语送分
发表于 2003-01-07 最后回复 2003-01-07
操作系统源码分析网
发表于 2002-12-17 最后回复 2003-01-03
有人写过硬盘驱动程序吗?
发表于 2002-12-16 最后回复 2002-12-17
怎么样才能写出一个像TObject类CObject来?
发表于 2002-12-04 最后回复 2002-12-11
有空来我cbuilder论坛
发表于 2002-11-21 最后回复 2002-12-04
有空来我VC论坛
发表于 2002-11-25 最后回复 2002-11-26
开发DOS的操作系统,作为实时操作系统
发表于 2001-10-29 最后回复 2002-02-17
在局部网内用UDP通过代理服务器连接外面的人,怎么样用VC写通过代理呢?
发表于 2001-09-24 最后回复 2002-02-05
UDP 代理问题?
发表于 2002-01-24 最后回复 2002-01-24
怎么样设置像ICQ或OICQ这样服务器?
发表于 2001-12-29 最后回复 2001-12-29
我的钱哪去了?
发表于 2001-12-17 最后回复 2001-12-17
在VC中这个错误为什么出现的?
发表于 2001-11-30 最后回复 2001-12-13
谁能说出ICQ目录下各个DLL文件用处?给高分!!!!
发表于 2001-11-27 最后回复 2001-11-27
怎么样更新CLISTBOX
发表于 2001-11-14 最后回复 2001-11-14
谁有空就用C写个DOS操作系出来?XP可没有DOS啊
发表于 2001-10-26 最后回复 2001-11-13
为什么国内没有人写出像<<深入浅出MFC>>这样的好书
发表于 2001-11-08 最后回复 2001-11-08
用C++能写DOS操系统吗?
发表于 2001-10-31 最后回复 2001-10-31
我们能不能把NASM的使用手册译成中文吗
发表于 2001-10-30 最后回复 2001-10-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝