博文

Windows消息大全(3)(2005-12-15 12:32:00)

摘要:程序发送此消息给一个编辑框或combobox来删除当前选择的文本 WM_COPY = $0301; 程序发送此消息给一个编辑框或combobox来复制当前选择的文本到剪贴板 WM_PASTE = $0302; 程序发送此消息给editcontrol或combobox从剪贴板中得到数据 WM_CLEAR = $0303; 程序发送此消息给editcontrol或combobox清除当前选择的内容; WM_UNDO = $0304; 程序发送此消息给editcontrol或combobox撤消最后一次操作 WM_RENDERFORMAT = $0305; WM_RENDERALLFORMATS = $0306; WM_DESTROYCLIPBOARD = $0307; 当调用ENPTYCLIPBOARD函数时 发送此消息给剪贴板的所有者 WM_DRAWCLIPBOARD = $0308; 当剪贴板的内容变化时发送此消息给剪贴板观察链的第一个窗口;它允许用剪贴板观察窗口来 显示剪贴板的新内容; WM_PAINTCLIPBOARD = $0309; 当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区需要重画; WM_VSCROLLCLIPBOARD = $030A; WM_SIZECLIPBOARD = $030B; 当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区域的大小已经改变是此消息通过剪贴板观察窗口发送给剪贴板的所有者; WM_ASKCBFORMATNAME = $030C; 通过剪贴板观察窗口发送此消息给剪贴板的所有者来请求一个CF_OWNERDISPLAY格式的剪贴板的名字 WM_CHANGECBCHAIN = $030D; 当一个窗口从剪贴板观察链中移去时发送此消息给剪贴板观察链的第一个窗口; WM_HSCROLLCLIPBOARD = $030E; 此消息通过一个剪贴板观察窗口发送给剪贴板的所有者 ;它发生在当剪贴板包含CFOWNERDISPALY格式的数据并且有个事件在剪贴板观察窗的水平滚动条上;所有者应滚动剪贴板图象并更新滚动条的值; WM_QUERYNEWPALETTE = $030F; 此消息发送给将要收到焦点的窗口,此消息能使窗口在收到焦......

阅读全文(2811) | 评论:0

Windows消息大全(2)(2005-12-15 12:31:00)

摘要:发送此消息给某个与对话框程序关联的控件,widdows控制方位键和TAB键使输入进入此控件 通过响应WM_GETDLGCODE消息,应用程序可以把他当成一个特殊的输入控件并能处理它 WM_NCMOUSEMOVE = $00A0; 当光标在一个窗口的非客户区内移动时发送此消息给这个窗口 //非客户区为:窗体的标题栏及窗 的边框体 WM_NCLBUTTONDOWN = $00A1; 当光标在一个窗口的非客户区同时按下鼠标左键时提交此消息 WM_NCLBUTTONUP = $00A2; 当用户释放鼠标左键同时光标某个窗口在非客户区时发送此消息; WM_NCLBUTTONDBLCLK = $00A3; 当用户双击鼠标左键同时光标某个窗口在非客户区时发送此消息 WM_NCRBUTTONDOWN = $00A4; 当用户按下鼠标右键同时光标又在窗口的非客户区时发送此消息 WM_NCRBUTTONUP = $00A5; 当用户释放鼠标右键同时光标又在窗口的非客户区时发送此消息 WM_NCRBUTTONDBLCLK = $00A6; 当用户双击鼠标右键同时光标某个窗口在非客户区十发送此消息 WM_NCMBUTTONDOWN = $00A7; 当用户按下鼠标中键同时光标又在窗口的非客户区时发送此消息 WM_NCMBUTTONUP = $00A8; 当用户释放鼠标中键同时光标又在窗口的非客户区时发送此消息 WM_NCMBUTTONDBLCLK = $00A9; 当用户双击鼠标中键同时光标又在窗口的非客户区时发送此消息 WM_KEYFIRST = $0100; WM_KEYDOWN = $0100; //按下一个键 WM_KEYUP = $0101; //释放一个键 WM_CHAR = $0102; //按下某键,并已发出WM_KEYDOWN, WM_KEYUP消息 WM_DEADCHAR = $0103; 当用translatemessage函数翻译WM_KEYUP消息时发送此消息给拥有焦点的窗口 WM_SYSKEYDOWN = $0104; 当用户按住ALT键同时按下其它键时提交此消息给拥有焦点的窗口; WM_SYSKEYUP = $0105; 当用户释放一个键同时ALT 键还按着时提交此消息给拥有焦点的窗......

阅读全文(2646) | 评论:0

Windows消息大全(1)(2005-12-15 12:30:00)

摘要:消息中有什么? 是否觉得一个消息记录中的信息像希腊语一样?如果是这样,那么看一看下面的解释: hwnd 32位的窗口句柄。窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可视对象的句柄(窗口、对话框、按钮、编辑框等)。 message 用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也可以是自定义的常量。 wParam 通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。 lParam 通常是一个指向内存中数据的指针。由于W P a r a m、l P a r a m和P o i n t e r都是3 2位的,因此,它们之间可以相互转换。 WM_NULL = $0000; WM_CREATE = $0001; 应用程序创建一个窗口 WM_DESTROY = $0002; 一个窗口被销毁 WM_MOVE = $0003; 移动一个窗口 WM_SIZE = $0005; 改变一个窗口的大小 WM_ACTIVATE = $0006; 一个窗口被激活或失去激活状态; WM_SETFOCUS = $0007; 获得焦点后 WM_KILLFOCUS = $0008; 失去焦点 WM_ENABLE = $000A; 改变enable状态 WM_SETREDRAW = $000B; 设置窗口是否能重画 WM_SETTEXT = $000C; 应用程序发送此消息来设置一个窗口的文本 WM_GETTEXT = $000D; 应用程序发送此消息来复制对应窗口的文本到缓冲区 WM_GETTEXTLENGTH = $000E; 得到与一个窗口有关的文本的长度(不包含空字符) WM_PAINT = $000F; 要求一个窗口重画自己 WM_CLOSE = $0010; 当一个窗口或应用程序要关闭时发送一个信号 WM_QUERYENDSESSION = $0011; 当用户选择结束对话框或程序自己调用ExitWindows函数 WM_QUIT = $0012; 用来结束程序运行或当程序调用postquitmessage函数 WM_QUERYOPEN = $0013; 当用户窗口恢复以前的大小位置时,把此消息发送给某个图标 WM_ERASEBKGND = $0014; 当......

阅读全文(3107) | 评论:0

GCC中文使用手册(8)代码生成选项(2005-12-08 13:04:00)

摘要:代码生成选项(CODE GENERATION OPTION)下面的选项和平台无关,用于控制目标码生成的接口约定. 大部分选项以`-f'开始.这些选项拥有确定和否定两种格式; `-ffoo'的否定格式是 `-fno-foo'.后面的描述将只列举其中的一个格式---非默认的格式.你可以通过添加或去掉 `no-'推测出另一个格式. -fnonnull-objects 假设通过引用(reference)取得的对象不为null (仅C++). 一般说来, GNU C++对通过引用取得的对象作保守假设.例如,编译器一定会检查下似代码中的a不为 null: obj &a = g (); a.f (2); 检查类似的引用需要额外的代码,然而对于很多程序是不必要的.如果你的程序不要求这种检查,你可以用 `-fnonnull-objects'选项忽略它. -fpcc-struct-return 函数返回struct和union值时,采用和本地编译器相同的参数约定.对于较小的结构, 这种约定的效率偏低,而且很多机器上不能重入;它的优点是允许GCC编译的目标码和PCC编译的目标码互相调用. -freg-struct-return 一有可能就通过寄存器返回struct和union函数值.对于较小的结构,它比 -fpcc-struct-return更有效率. 如果既没有指定-fpcc-struct-return ,也没有指定-freg-struct-return, GNU CC默认使用目标机的标准约定.如果没有标准约定, GNU CC默认采用-fpcc-struct-return. -fshort-enums 给enum类型只分配它声明的值域范围的字节数.就是说, enum类型等于大小足够的 最小整数类型. -fshort-double 使double类型的大小和float一样. -fshared-data 要求编译结果的数据和非const变量是共享数据,而不是私有数据.这种差别仅在某些操作系统上面有意义, 那里的共享数据在同一个程序的若干进程间共享,而私有数据在每个进程内都有副件. -fno-common 即使未初始化的全局变量也分配在目标文件的bss段,而不是把它们当做普通块......

阅读全文(5334) | 评论:0

GCC中文使用手册(7)(2005-12-08 13:02:00)

摘要:除了SVr4配置, `-msvr3'是所有m88K配置的默认选项. -mtrap-large-shift -mhandle-large-shift 包含一些指令,用于检测大于31位的位移(bit-shift);根据相应的选项,对这样的位移发出自陷 (trap)或执行适当的处理代码.默认情况下, GCC对大位移不做特别处理. -muse-div-instruction 很早以前的88K型号没有(div)除法指令,因此默认情况下GCC避免产生这条指令.而这个选项告诉GCC该指令是 安全的. -mversion-03.00 在DG/UX配置中存在两种风格的SVr4.这个选项修改-msvr4 ,选择hybrid-COFF或 real-ELF风格.其他配置均忽略该选项. -mwarn-passed-structs 如果某个函数把结构当做参数或结果传递, GCC发出警告.随着C语言的发展,人们已经改变了传递结构的约定, 它往往导致移植问题.默认情况下, GCC不会发出警告. 下面的选项用于IBM RS6000: -mfp-in-toc -mno-fp-in-toc 控制是否把浮点常量放到内容表(TOC)中,内容表存放所有的全局变量和函数地址.默认情况下, GCC把浮点常量放到 这里;如果TOC溢出, `-mno-fp-in-toc'选项能够减少TOC的大小,这样就可以避免溢出. 下面的`-m'选项用于IBM RT PC: -min-line-mul 对于整数乘法使用嵌入代码.这是默认选项. -mcall-lib-mul 对于整数乘法使用lmul$$ . -mfull-fp-blocks 生成全尺寸浮点数据块,包括IBM建议的最少数量的活动空间(scratch space).这是默认选项. -mminimum-fp-blocks 不要在浮点数据块中包括额外的活动空间.这样就产生较小但是略慢的可执行程序,因为活动空间必须动态分配. -mfp-arg-in-fpregs 采用不兼容IBM调用约定的调用序列,通过浮点寄存器传送浮点参数.注意,如果指定了这个选项, varargs.h和stdargs.h将无法支持浮点单元. -mfp-arg-in......

阅读全文(5121) | 评论:0

GCC中文使用手册(6)(2005-12-08 13:02:00)

摘要:目标机选项(TARGET OPTION)缺省情况下, GNU CC编译出本机类型的目标码.然而也可以把他安装成交叉编译器, 为其他机型编译程序.事实上,针对不同的目标机,可以同时安装GNU CC相应的配置.然后用`-b'选项指定 目标机种. 顺便提一下,新版本和旧版本的GNU CC可以共存.其中一个版本(可能是最新的那个)为缺省版本,但是有时候你希望使用 其他版本. -b machine 参数machine指出编译的目标机种.这个选项用于安装为交叉编译器的GNU CC. 参数machine的值和配置GNU CC交叉编译器时设置的机器类型一样.例如,如果交叉编译器配置有 `configure i386v',意思是编译80386上的System V目标码,那么你可以通过`-b i386v'运行交叉编译器. 如果没有指定`-b'选项,通常指编译本机目标码. -V version 参数version指出运行哪个版本的GNU CC.这个选项用于安装了多个版本的GCC.例如,如果 version是`2.0',意味着运行GNU CC 2.0版. 如果没有指定`-V'选项,缺省版本取决于GNU CC的安装方式,一般说来推荐使用通用版本.   机器相关选项(MACHINE DEPENDENT OPTION)每一种目标机型都有自己的特别选项,这些选项用`-m '开关引导,选择不同的硬件型号或配置---例如, 68010还是68020,有没有浮点协处理器.通过指定选项,安装 编译器的一个版本能够为所有的型号或配置进行编译. 此外,编译器的某些配置支持附加的特殊选项,通常是为了在命令行上兼容这个平台的其他编译器. 下面是针对68000系列定义的`-m'选项: -m68000 -mc68000 输出68000的目标码.如果编译器按基于68000的系统配置,这个选项就是缺省选项. -m68020 -mc68020 输出68020的目标码(而不是68000).如果编译器按基于68020的系统配置,这个选项就是缺省选项. -m68881 输出包含68881浮点指令的目标码.对于大多数基于68020的系统这是缺省选项,除非设置编译器时指定了 -nfp . ......

阅读全文(4258) | 评论:0

GCC中文使用手册(5)-优化选项(2005-12-08 13:00:00)

摘要:优化选项(OPTIMIZATION OPTION)这些选项控制多种优化措施: -O -O1 优化.对于大函数,优化编译占用稍微多的时间和相当大的内存. 不使用`-O'选项时,编译器的目标是减少编译的开销,使编译结果能够调试.语句是独立的:如果在 两条语句之间用断点中止程序,你可以对任何变量重新赋值,或者在函数体内把程序计数器指到其他语句,以及从源程序中 精确地获取你期待的结果. 不使用`-O'选项时,只有声明了register的变量才分配使用寄存器.编译结果比不用 `-O'选项的PCC要略逊一筹. 使用了`-O'选项,编译器会试图减少目标码的大小和执行时间. 如果指定了`-O'选项, `-fthread-jumps'和`-fdefer-pop'选项将被 打开.在有delay slot的机器上, `-fdelayed-branch'选项将被打开.在即使没有帧指针 (frame pointer)也支持调试的机器上, `-fomit-frame-pointer'选项将被打开.某些机器上 还可能会打开其他选项. -O2 多优化一些.除了涉及空间和速度交换的优化选项,执行几乎所有的优化工作.例如不进行循环展开(loop unrolling)和函数内嵌(inlining).和-O选项比较,这个选项既增加了编译时间,也提高了生成代码的 运行效果. -O3 优化的更多.除了打开-O2所做的一切,它还打开了-finline-functions选项. -O0 不优化. 如果指定了多个-O选项,不管带不带数字,最后一个选项才是生效的选项. 诸如`-fflag'此类的选项描述一些机器无关的开关.大多数开关具有肯定和否定两种格式; `-ffoo'开关选项的否定格式应该是`-fno-foo'.下面的列表只展示了一种格式---那个不是 默认选项的格式.你可以通过去掉或添加`no-'构造出另一种格式. -ffloat-store 不要在寄存器中存放浮点变量.这样可以防止某些机器上不希望的过高精度,如68000的浮点寄存器(来自 68881)保存的精度超过了double应该具有的精度. 对于大多数程序,过高精度只有好处.但是有些程序严格依赖于IEEE浮点数的定义.对这样的程序可以使用 `-fflo......

阅读全文(6031) | 评论:0

GCC中文使用手册(4)-调试选项(2005-12-08 13:00:00)

摘要:调试选项(DEBUGGING OPTION)GNU CC拥有许多特别选项,既可以调试用户的程序,也可以对GCC排错: -g 以操作系统的本地格式(stabs, COFF, XCOFF,或DWARF).产生调试信息. GDB能够使用这些调试信息. 在大多数使用stabs格式的系统上, `-g'选项启动只有GDB才使用的额外调试信息;这些信息使GDB 调试效果更好,但是有可能导致其他调试器崩溃,或拒绝读入程序.如果你确定要控制是否生成额外的信息, 使用`-gstabs+', `-gstabs', `-gxcoff+', `-gxcoff', `-gdwarf+',或`-gdwarf' (见下文). 和大多数C编译器不同, GNU CC允许结合使用`-g'和`-O'选项.优化的代码偶尔制造 一些惊异的结果:某些声明过的变量根本不存在;控制流程直接跑到没有预料到的地方;某些语句因为计算结果是常量或已经确定而 没有执行;某些语句在其他地方执行,因为他们被移到循环外面了. 然而它证明了调试优化的输出是可能的.对可能含有错误的程序使用优化器是合理的. 如果GNU CC支持输出多种调试信息,下面的选项则非常有用. -ggdb 以本地格式(如果支持)输出调试信息,尽可能包括GDB扩展. -gstabs 以stabs格式(如果支持)输出调试信息,不包括GDB扩展.这是大多数BSD系统上DBX使用的格式. -gstabs+ 以stabs格式(如果支持)输出调试信息,使用只有GNU调试器(GDB)理解的GNU扩展.使用这些扩展有可能导致 其他调试器崩溃或拒绝读入程序. -gcoff 以COFF格式(如果支持)输出调试信息.这是在System V第四版以前的大多数System V系统上SDB使用的 格式. -gxcoff 以XCOFF格式(如果支持)输出调试信息.这是IBM RS/6000系统上DBX调试器使用的格式. -gxcoff+ 以XCOFF格式(如果支持)输出调试信息,使用只有GNU调试器(GDB)理解的GNU扩展.使用这些扩展有可能导致 其他调试器崩溃或拒绝读入程序. -gdwarf 以DWARF格式(如果支持)输出调试信息.这是大多数System V第四版系统上S......

阅读全文(4847) | 评论:0

GCC中文使用手册(3)(2005-12-08 12:59:00)

摘要:警告选项(WARNING OPTION)警告是针对程序结构的诊断信息,程序不一定有错误,而是存在风险,或者可能存在 错误. 下列选项控制GNU CC产生的警告的数量和类型: -fsyntax-only 检查程序中的语法错误,但是不产生输出信息. -w 禁止所有警告信息. -Wno-import 禁止所有关于#import的警告信息. -pedantic 打开完全服从ANSI C标准所需的全部警告诊断;拒绝接受采用了被禁止的语法扩展的程序. 无论有没有这个选项,符合ANSI C标准的程序应该能够被正确编译(虽然极少数程序需要`-ansi' 选项).然而,如果没有这个选项,某些GNU扩展和传统C特性也得到支持.使用这个选项可以拒绝这些程序.没有理由 使用这个选项,他存在只是为了满足一些书呆子(pedant). 对于替选关键字(他们以`__'开始和结束) `-pedantic'不会产生警告信息. Pedantic 也不警告跟在__extension__后面的表达式.不过只应该在系统头文件中使用这种转义措施,应用程序最好 避免. -pedantic-errors 该选项和`-pedantic'类似,但是显示错误而不是警告. -W 对下列事件显示额外的警告信息:    * 非易变自动变量(nonvolatile automatic variable)可能在调用longjmp时发生改变. 这些警告仅在优化编译时发生. 编译器只知道对setjmp的调用,他不可能知道会在哪里调用longjmp,事实上一个 信号处理例程可以在程序的任何地点调用他.其结果是,即使程序没有问题,你也可能会得到警告,因为无法在可能出现问题 的地方调用longjmp.    * 既可以返回值,也可以不返回值的函数. (缺少结尾的函数体被看作不返回函数值)例如,下面的函数将导致这种警告: foo (a) { if (a > 0) return a; } 由于GNU CC不知道某些函数永不返回(含有abort和longjmp),因此有可能出现 虚假警告.    * 表达式语句或逗号......

阅读全文(3633) | 评论:0

GCC中文使用手册(2)(2005-12-08 12:58:00)

摘要:预处理器选项(Preprocessor Option)下列选项针对C预处理器,预处理器用在正式编译以前,对C 源文件进行某种处理. 如果指定了`-E'选项, GCC只进行预处理工作.下面的某些选项必须和`-E'选项一起才 有意义,因为他们的输出结果不能用于编译. -include file 在处理常规输入文件之前,首先处理文件file,其结果是,文件file的内容先得到编译. 命令行上任何`-D'和`-U'选项永远在`-include file'之前处理, 无论他们在命令行上的顺序如何.然而`-include'和`-imacros'选项按书写顺序处理. -imacros file 在处理常规输入文件之前,首先处理文件file,但是忽略输出结果.由于丢弃了文件file的 输出内容, `-imacros file'选项的唯一效果就是使文件file中的宏定义生效, 可以用于其他输入文件.在处理`-imacrosfile'选项之前,预处理器首先处理`-D' 和`-U'选项,并不在乎他们在命令行上的顺序.然而`-include'和 `-imacros'选项按书写顺序处理. -idirafter dir 把目录dir添加到第二包含路径中.如果某个头文件在主包含路径(用`-I'添加的路径)中没有 找到,预处理器就搜索第二包含路径. -iprefix prefix 指定prefix作为后续`-iwithprefix'选项的前缀. -iwithprefix dir 把目录添加到第二包含路径中.目录名由prefix和dir合并而成,这里 prefix被先前的`-iprefix'选项指定. -nostdinc 不要在标准系统目录中寻找头文件.只搜索`-I'选项指定的目录(以及当前目录,如果合适). 结合使用`-nostdinc'和`-I-'选项,你可以把包含文件搜索限制在显式指定的目录. -nostdinc++ 不要在C++专用标准目录中寻找头文件,但是仍然搜索其他标准目录. (当建立`libg++'时使用 这个选项.) -undef 不要预定义任何非标准宏. (包括系统结构标志). -E 仅运行C预处理器.预处理所有指定的C源文件,结果送往标准输出或指定的输出文件. ......

阅读全文(4099) | 评论:0