
Windows编程
fmddlmyy
伐木丁丁鸟鸣嘤嘤
展开
-
时标和历法
1、时标时标(Time Scale)就是标度时间的方法。在时间的标度上,存在着两个相互独立的需求:一方面,我们希望时间标度能与地球的自转相吻合,可以称作天文学需求;另一方面,我们要求时间标度的单位是精确的,便于大家获得准确的时间。由于地球自转的不均匀性,从这两个需求出发制定的时标会有细微的差异。世界时(UT1)是基于地球自转的时标,下文会详细介绍。国际原子时(TAI)是基于单位时间的时标,原创 2005-08-02 21:40:00 · 2960 阅读 · 1 评论 -
MFC最近文件列表的问题和改进方法
在改进cnbook时发现MFC的一个小问题。MFC框架支持最近文件列表。我们不用写一行代码就可以实现文件列表功能。在资源文件的菜单资源中,ID_FILE_MRU_FILE1表示最近文件列表: MENUITEM "最近文件", ID_FILE_MRU_FILE1,GRAYED MENUITEM SEPARATOR MENUITEM "退出(&X)原创 2008-12-19 23:23:00 · 1889 阅读 · 1 评论 -
将程序添加到资源管理器的右键菜单
添加右键菜单可以用注册表的shell项或shellex项。1 shell项我用过的每台电脑都会被我加上:Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT/Folder/shell/command prompt/command]@="cmd.exe"即将注册表“HKEY_CLASSES_ROOT/Folder/s原创 2008-12-20 19:16:00 · 6913 阅读 · 0 评论 -
pcm2wav: 将PCM数据转换成WAV文件
1 perl脚本在北大中文论坛看到一位网友问起怎样把大尾的PCM数据播放出来。我以前在工作中碰到过8K采样的PCM数据,当时不清楚wav文件的格式,正好perl模块中有个Audio::Wav模块可以写wav文件,就写了个perl脚本:use Audio::Wav;my $wav = new Audio::Wav;my $sample_rate = 8000;my $bits原创 2008-12-05 22:45:00 · 11397 阅读 · 6 评论 -
VC调试:两个有个性的bug
昨天在用VC调试cnbook时碰到两个有个性的bug:bug1仅在直接运行Release版本时出现,用F5运行Debug版本或Release版本都不会出现。 bug2仅在用F5运行Debug版本时出现,直接运行Release版本不会出现。 1 bug1和Release版本调试这个bug不能用调试器。我用加打印的方式调试。对于GUI程序,将打印输出送到另一个窗口就可以原创 2008-11-23 12:14:00 · 1352 阅读 · 0 评论 -
几个文本处理的小题目(续一):使用awk
在飞机上用《sed与awk》消磨时间时,想起网友以前提过的一个问题:1 按指定列的长度排序1.1 问题这个网友有以下格式的词库(in.txt):w=我 bm=标 ceq=陈 wm=我们 nnyl=努 wm,=我们 djh=大家好 tdmd=他们 tzm=同志们 tzm,=同志们 djhnv=大家好 ppaa=平平安安 tzmdv=同志们原创 2008-11-04 23:57:00 · 3125 阅读 · 11 评论 -
几个文本处理的小题目
在北大中文论坛的中文信息处理版有时会看到一些与文本处理有关的问题。想想怎么解答这些问题,其实也挺有意思,有点像解谜游戏。例如今天看到的一个问题:1 找重码1.1 问题怎么找出码表中的重码?假设有码表test.txt:甲 AB雅 AB弟 AC大 AD发 BC收 BC回 BC收 CE名 CE其中有的汉字有相同的编码原创 2008-11-01 19:02:00 · 2270 阅读 · 3 评论 -
使用procomm plus执行串口脚本
1 串口脚本有些串口工具(例如串口调试助手)有定时发送功能,但只能发送一条固定的命令。我需要发送几百条命令,又懒得写程序,就希望找一个可以执行串口脚本的工具。然后我找到了procomm plus。procomm plus的功能很多。我只需要串口脚本功能,所以没有执行安装程序,解压后直接执行Programs目录的PW5.EXE。在菜单中选择Options->System Options->M原创 2008-10-23 20:15:00 · 7568 阅读 · 5 评论 -
穷举和推理:用C++程序求解“谁养鱼”
穷举和推理:用C++程序求解“谁养鱼”这期《程序员》提到“爱因斯坦的谜题”,我才注意到“谁养鱼”这个题目。问题如下:1、在一条街上,有5座房子,喷了5种颜色2、每个房里住着不同国籍的人3、每个人喝不同的饮料,抽不同品牌的香烟,养不同的宠物已知:1、英国人住红色房子 2、瑞典人养狗 3、丹麦人喝茶 4、绿色房子在白色房子左面 5、绿色房子主人喝咖啡 6、抽Pall Mall 香烟的人养鸟 7原创 2007-06-10 16:28:00 · 3999 阅读 · 3 评论 -
眼见为实(2):介绍Windows的窗口、消息、子类化和超类化
眼见为实(2):介绍Windows的窗口、消息、子类化和超类化这篇文章本来只是想介绍一下子类化和超类化这两个比较“生僻”的名词。为了叙述的完整性而讨论了Windows的窗口和消息,也简要讨论了进程和线程。子类化(Subclassing)和超类化(Superclassing)是伴随Windows窗口机制而产生的两个复用代码的方法。不要把“子类化、超类化”与面向对象语言中的派生类、基类混淆起来。“原创 2007-04-08 18:10:00 · 6638 阅读 · 8 评论 -
更简单的编辑框菜单定制方法
更简单的编辑框菜单定制方法Paul DiLascia的方法在使用MFC时,我们有时需要定制编辑框(CEdit或其派生类)的右键菜单。我们可以通过重载OnContextMenu函数装载自己的菜单,并添加每个菜单项的COMMAND和UPDATE_COMMAND_UI函数。但在缺省情况下,UPDATE_COMMAND_UI函数不会被调用,导致菜单状态不能正确显示。如果我们在网上搜索解决这个问原创 2007-04-01 23:54:00 · 3043 阅读 · 0 评论 -
当程序突然无法运行
当程序突然无法运行某些程序在反安装时会取消一些控件的注册,使得其它需要这些控件的程序无法运行。 在发现某些程序突然无法运行时,可以在另外一台可以运行的电脑上用LordPE等工具查看该程序依赖什么控件,然后在出问题的电脑上注册这些控件,应该就可以了。例如有一次我的电脑突然不能打开chm文档,总是提示"Cannot open the file: mk:@msitstore C:/.../[原创 2006-07-20 21:02:00 · 1880 阅读 · 1 评论 -
函数调用约定和堆栈
函数调用约定和堆栈1 什么是堆栈编译器一般使用堆栈实现函数调用。堆栈是存储器的一个区域,嵌入式环境有时需要程序员自己定义一个数组作为堆栈。Windows为每个线程自动维护一个堆栈,堆栈的大小可以设置。编译器使用堆栈来堆放每个函数的参数、局部变量等信息。函数调用经常是嵌套的,在同一时刻,堆栈中会有多个函数的信息,每个函数占用一个连续的区域。一个函数占用的区域被称作帧(frame)。原创 2005-09-26 19:48:00 · 4608 阅读 · 2 评论 -
CString的一个问题
CString的一个问题CString的Release函数实现如下: void CString::Release(){ if (GetData() != _afxDataNil) { ASSERT(GetData()->nRefs != 0); if (InterlockedDecremen原创 2005-09-26 19:49:00 · 2668 阅读 · 1 评论 -
从subsystem开始概述NT内核
什么是subsystem?NT架构(Windows NT、Windows XP、Windows 2003)的初始设计是很有野心的,它希望在NT上可以不加修改地运行OS2、UNIX程序。所以在NT中有subsystem的概念,每个subsystem针对一个平台,ntdll.dll是所有subsystem的基础。或者说ntdll.dll统一提供NT系统的API接口,subsystem为各个平台的应用程原创 2005-05-03 20:02:00 · 2987 阅读 · 3 评论 -
VC中缺省库冲突的解决
VC在编译程序时有两个习惯:1、在从头开始编译时(即生成makefile时),将源文件名按字母排序后,依次处理;2、一边编译一边决定需要哪些缺省库。 它的这些习惯有时会造成奇怪的编译错误,例如项目中有两个文件:charutil.cgbuni.cpp其中gbnni.cpp用到了MFC库。编译器先处理charutil.c,然后觉得需要link一个C Runtime库,根据项目设置选择了LIBCMTD.原创 2005-04-28 22:58:00 · 7874 阅读 · 8 评论 -
在VC中编译、运行程序的小知识点
1、Run-Time LibraryRun-Time Library是编译器提供的标准库,提供一些基本的库函数和系统调用。我们一般使用的Run-Time Library是C Run-Time Libraries。当然也有Standard C++ libraries。 C Run-Time Libraries实现ANSI C的标准库。VC安装目录的CRT目录有C Run-Time库的大部分源代码。原创 2005-04-28 22:53:00 · 3329 阅读 · 2 评论 -
在Vista上使用工行U盾
原来我在Vista上使用U盾付款总有问题,所以都用装XP的电脑付款。最近在外面出差,身边只有Vista,就研究了一下,发现在Vista上也可以使用U盾。为了解决U盾和VMware的冲突,我写了一个批处理程序,可以节约几秒时间。原创 2010-07-16 02:40:00 · 1621 阅读 · 0 评论