皮皮网

【影视app源码miui】【c 工资管理系统源码】【易语言远程桌面源码】win32 listbox源码

来源:teamviewr源码 时间:2024-11-15 12:00:39

1.c#程序设计的微软开发语言
2.win32消息大全

win32 listbox源码

c#程序设计的微软开发语言

        微软c#语言定义主要是从C和C++继承而来的,源码而且语言中的许多元素也反映了这一点.C#在设计者从C++继承的可选选项方面比Java要广泛一些(比如说struts),它还增加了自己新的特点(比方说源代码版本定义).但它还太不成熟,不可能挤垮Java.C#还需要进化成一种开发者能够接受和采用的语言.而微软当前为它的这种新语言大造声势也是值得注意的.目前大家的反应是:这是对Java的反击.

       C#更像Java一些,虽然微软在这个问题上保持沉默.这也是意料中的事情,我觉得,因为Java近来很成功而使用Java的公司都报告说它们在生产效率上比C++获得了提高。 中间代码

       å¾®è½¯åœ¨ç”¨æˆ·é€‰æ‹©ä½•æ—¶MSIL应该编译成机器码的时候是留了很大的余地.微软公司很小心的声称MSIL不是解释性的,而是被编译成了机器码.它也明白许多--如果不是大多数的话--程序员认为Java程序要不可避免的比C编写的任何东西都要慢.而这种实现方式决定了基于MSIL的程序(指的是用C#,Visual Basic,Managed C++--C++的一个符合CLS的版本--等语言编写的程序)将在性能上超过解释性的Java代码.当然,这一点还需要得到事实证明,因为C#和其他生成MSIL的编译器还没有发布.但是Java JIT编译器的普遍存在使得Java和C#在性能上相对相同.像C#是编译语言而Java是解释性的,之类的声明只是商业技巧.Java的中间代码和MSIL都是中间的汇编形式的语言,它们在运行时或其它的时候被编译成机器代码.

       å‘½åç©ºé—´ä¸­çš„申明

       å½“你创建一个程序的时候,你在一个命名空间里创建了一个或多个类.同在这个命名空间里(在类的外面)你还有可能声明接口,枚举类型和结构体.必须使用using关键字来引用其他命名空间的内容.

       åŸºæœ¬çš„数据类型

       C#拥有比C,C++或者Java更广泛的数据类型.这些类型是bool, byte, ubyte, short, ushort, int, uint, long, ulong, float, double,和decimal.像Java一样,所有这些类型都有一个固定的大小.又像C和C++一样,每个数据类型都有有符号和无符号两种类型.与Java相同的是,一个字符变量包含的是一个位的Unicode字符.C#新的数据类型是decimal数据类型,对于货币数据,它能存放位进制数字.

       ä¸¤ä¸ªåŸºæœ¬ç±»

       ä¸€ä¸ªåå«object的类是所有其他类的基类.而一个名叫string的类也像object一样是这个语言的一部分.作为语言的一部分存在意味着编译器有可能使用它--无论何时你在程序中写入一句带引号的字符串,编译器会创建一个string对象来保存它.

       å‚数传递

       æ–¹æ³•å¯ä»¥è¢«å£°æ˜ŽæŽ¥å—可变数目的参数.缺省的参数传递方法是对基本数据类型进行值传递.ref关键字可以用来强迫一个变量通过引用传递,这使得一个变量可以接受一个返回值.out关键字也能声明引用传递过程,与ref不同的地方是,它指明这个参数并不需要初始值.

       ä¸ŽCOM的集成

       C#对Windows程序最大的卖点可能就是它与COM的无缝集成了,COM就是微软的Win组件技术.实际上,最终有可能在任何.NET语言里编写COM客户和服务器端.C#编写的类可以子类化一个以存在的COM组件;生成的类也能被作为一个COM组件使用,然后又能使用,比方说,JScript语言子类化它从而得到第三个COM组件.这种现象的结果是导致了一个运行环境的产生,在这个环境里的组件是网络服务,可以用任何.NET语言子类化.

       ç´¢å¼•ä¸‹æ ‡

       ä¸€ä¸ªç´¢å¼•ä¸Žå±žæ€§é™¤äº†ä¸ä½¿ç”¨å±žæ€§åæ¥å¼•ç”¨ç±»æˆå‘˜è€Œæ˜¯ç”¨ä¸€ä¸ªæ–¹æ‹¬å·ä¸­çš„数字来匿名引用(就像用数组下标一样)以外是相似的.

       public class ListBox: Control

       {

       private string[] items;

       public string this[int index]

       {

       get

       {

       return items[index];

       }

       set

       {

       items[index] = value;

       Repaint();

       }

       }

       }

       å¯ä»¥ç”¨ä¸€ä¸ªå¾ªçŽ¯å™¨æ¥åŒ¿åå¼•ç”¨å­—符串内部数组成员,就像下面这样:

       ListBox listBox = ...;

       listBox[0] = hello;

       Console.WriteLine(listBox[0]);

       ä»£ç†å’Œåé¦ˆ

       ä¸€ä¸ªä»£ç†å¯¹è±¡åŒ…括了访问一个特定对象的特定方法所需的信息.只要把它当成一个聪明的方法指针就行了.代理对象可以被移动到另一个地方,然后可以通过访问它来对已存在的方法进行类型安全的调用.一个反馈方法是代理的特例.event关键字用在将在事件发生的时候被当成代理调用的方法声明. C#(读做 C sharp)是微软公司在去年六月发布的一种新的编程语言,并定于在微软职业开发者论坛(PDC)上登台亮相.C#是微软公司研究员Anders Hejlsberg的最新成果.C#看起来与Java有着惊人的相似;它包括了诸如单一继承,界面,与Java几乎同样的语法,和编译成中间代码再运行的过程.但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角.

       å¾®è½¯c#语言定义主要是从C和C++继承而来的,而且语言中的许多元素也反映了这一点.C#在设计者从C++继承的可选选项方面比Java要广泛一些(比如说structs),它还增加了自己新的特点(比方说源代码版本定义).但它还太不成熟,不可能挤垮Java.C#还需要进化成一种开发者能够接受和采用的语言.而微软当前为它的这种新语言大造声势也是值得注意的.目前大家的反应是:这是对Java的反击.

       C++,这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程序程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。

       è´å°”实验室的本贾尼·斯特劳斯特卢普(w:en:Bjarne Stroustrup)博士在世纪年代发明并实现了C++(最初这种语言被称作“C with Classes”)。一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、名字空间(name space)逐渐被加入标准。年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC -。遗憾的是,由于C++语言过于复杂,以及他经历了长年的演变,直到现在(年)只有少数几个编译器完全符合这个标准。

       å¦å¤–,就目前学习C++而言,可以认为他是一门独立的语言;他并不依赖C语言,我们可以完全不学C语言,而直接学习C++。根据《C++编程思想》(Thinking in C++)一书所评述的,C++与C的效率往往相差在正负5%之间。所以有人认为在大多数场合C++ 完全可以取代C语言。

       C++语言发展大概可以分为三个阶段:第一阶段从年代到年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;第二阶段从年到年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击;第三阶段从年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。 这世界上没有什么比编程工具更加牵动程序员的心。VC、VB、DELPHI、JAVA……这些耀眼的名字不仅占据了程序员的生活,而且似乎已经成为了某种信仰。可是,伴随着新世纪的脚步,这些信仰又一次遭遇了重大的挑战。微软,这头被法官和黑客们折腾得既疲惫又恼怒的狮子,发誓要保住它头上的王冠,拼尽全力,拿出了看家的本事——.NET战略。作为 .NET的核心开发语言,C# 顺理成章地浮出了水面。程序员们也就不得不做出一个痛苦的选择,跟在谁的后面?要找出答案就不得不作一番比较和预测。笔者作为一个资深的程序员,斗胆在此狂言,权作抛砖引玉。

       å¦‚果抛开一切非技术方面的因素,C# 无疑是这个星球上有史以来最好的编程语言,它几乎集中了所有关于软件开发和软件工程研究的最新成果。面向对象、类型安全、组件技术、自动内存管理、跨平台异常处理、版本控制、代码安全管理……你不可能在另外的一种语言中找到所有这些特性。尽管像很多人注意到的一样,当我罗列上述特性时,总是让人想到JAVA,然而C# 确实走得更远。但现实的情况是,非技术的因素往往更能决定一个产品的未来,尤其在计算机软件的历史上,技术卓越的产品,如OS/2、Mac OS、UNIX等,都败在了Windows那漂亮的脸蛋儿下。而这一次,微软的角色好像从一个赤手空拳的革命者变成了仗势欺人的老地主,如果真是要变天,那C# 这孩子岂不是投错了胎?可能情形并非如此糟糕,毕竟瘦死的骆驼比马大,而且C# 已经提交给了一个标准化组织,一旦成了国际标准,说不准真有哪个手痒的大侠(也有可能是微软自己)给移植到Linux 和别的平台上。那样的话,JAVA可就惨了。因为JAVA的用户主要是网络服务的开发者和嵌入式设备软件的开发者,嵌入式设备软件不是C# 的用武之地,而在网络服务方面,C# 的即时编译和本地代码Cache方案比JAVA虚拟机具有绝对的性能优势。何况C# 一旦成为一个像C++ 一样的公共的标准,软件开发商既可以省去JAVA的许可证费用,也不必担心成为微软的奴隶,那些反微软的人士和主张厂商独立的人士可能也不会有什么意见。这可能正是微软所期待的。

       å¦‚果把C# 和 JAVA 在网络服务领域的争夺比作未来制空权的争夺的话,那么C# 和传统通用快速开发工具——VB、DELPHI等的较量将是地地道道的白刃战。可能最惨的程序员就是VB程序员,在微软,VB就像离任的克林顿,不但失去了所有的光辉,而且乱事缠身。想想吧,VB6写的项目必须用转换工具转换成基于.NET的代码才能在VB7中调入,几乎面目全非。由于VB7遵循为迎合.NET而建立的通用语言规范(CLS),几乎把所有原来只在C++、JAVA等语言中可以运用的特性统统加了进来,只是语法和原来兼容。如果你是第一次在VB7中看到自己的旧VB6项目转换之后的代码,一定要当心你的心脏!所以,努力吧,别告诉我你将就此退休。DELPHI的状况也好不到哪里去,原来的看家本领是做起应用来又快又好,可现在看看最新的Beta 1, 你会感到如此熟悉,众多的属性列表、组件……谁让你穷呢,连总设计师都养不住。

       å…¶å®žåœ¨ç¼–程语言中真正的霸主多年来一直是C++,所有的操作系统和绝大多数的商品软件都是用C++作为主要开发语言的。JAVA的程序员绝大多数也是C++的爱好者,PHP的成功里面也有类似C++的语法的功劳。在操作系统、设备驱动程序、视频游戏等领域,C++在很长的时间内仍将占据主要地位,而在数量最大的应用软件的开发上,C# 很可能取代C++的位置。首先,C# 和JAVA一样,简直就是照搬了C++的部分语法,因此,对于数量众多的C++程序员学习起来很容易上手,另外,对于新手来说,比C++要简单一些。其次,Windows是目前占垄断地位的平台,而开发Windows应用,当然微软的声音是不能忽略的。最重要的是,相对于C++,用C# 开发应用软件可以大大缩短开发周期,同时可以利用原来除用户界面代码之外的C++代码。

       ä½†æ˜¯ï¼ŒC# 也有弱点。首先,在一些版本较旧的Windows平台上,C# 的程序还不能运行,因为C# 程序需要 .NET运行库作为基础,而 .NET运行库作为现在的的Windows(XP及以后版本)的一部分发行, Windows Me 和 Windows 用户只能以Service Pack的形式安装使用。其次,C# 能够使用的组件或库还只有 .NET 运行库等很少的选择,没有丰富的第三方软件库可用,这需要有一个过程,同时各软件开发商的支持也很重要。第三,JAVA的成功因素里有一些是反微软阵营的吹捧,虽然“只写一次,到处运行”只是一句口号,但毕竟已经是一种成熟的技术。而C# 的鼓吹者目前只有名声不佳的微软,且只能运行在Windows上。实际上这两种语言都不是不可替代的,理智的说,对软件开发商而言,什么用的最熟什么就是最好的工具。尤其对C++的使用者,C# 没有带来任何新东西,因为.NET运行库在C++中也可以使用,没有要换的绝对的理由。

       ç»¼ä¸Šæ‰€è¿°ï¼Œæˆ‘个人认为,近几年,C# 将不可避免地崛起,在Windows平台上成为主角,而JAVA将在UNIX、Linux等平台上成为霸主,C++ 将继续在系统软件领域大展拳脚。非常有意思的是,这些语言的语法极其接近,因为JAVA和C# 都是由C++发展而来的。其他的开发工具当然还会在相当长的时间里继续他们的旅程,不过在市场份额上,将不可避免地受到冲击。

win消息大全

       它在Windows单元中是这样声明的:

       type

       TMsg = packed record

       hwnd: HWND; / /窗口句柄

       message: UINT; / /消息常量标识符

       wParam: WPARAM ; // 位消息的特定附加信息

       lParam: LPARAM ; // 位消息的特定附加信息

       time: DWORD; / /消息创建时的时间

       pt: TPoint; / /消息创建时的鼠标位置

       end;

       消息中有什么?

       是否觉得一个消息记录中的信息像希腊语一样?如果是这样,那么看一看下面的源码解释:

       hwnd 位的窗口句柄。窗口可以是源码任何类型的屏幕对象,因为Win能够维护大多数可视对象的源码句柄(窗口、对话框、源码按钮、源码影视app源码miui编辑框等)。源码

       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 = $;

       WM_CREATE = $;

       应用程序创建一个窗口

       WM_DESTROY = $;

       一个窗口被销毁

       WM_MOVE = $;

       移动一个窗口

       WM_SIZE = $;

       改变一个窗口的大小

       WM_ACTIVATE = $;

       一个窗口被激活或失去激活状态;

       WM_SETFOCUS = $;

       获得焦点后

       WM_KILLFOCUS = $;

       失去焦点

       WM_ENABLE = $A;

       改变enable状态

       WM_SETREDRAW = $B;

       设置窗口是否能重画

       WM_SETTEXT = $C;

       应用程序发送此消息来设置一个窗口的文本

       WM_GETTEXT = $D;

       应用程序发送此消息来复制对应窗口的文本到缓冲区

       WM_GETTEXTLENGTH = $E;

       得到与一个窗口有关的文本的长度(不包含空字符)

       WM_PAINT = $F;

       要求一个窗口重画自己

       WM_CLOSE = $;

       当一个窗口或应用程序要关闭时发送一个信号

       WM_QUERYENDSESSION = $;

       当用户选择结束对话框或程序自己调用ExitWindows函数

       WM_QUIT = $;

       用来结束程序运行或当程序调用postquitmessage函数

       WM_QUERYOPEN = $;

       当用户窗口恢复以前的大小位置时,把此消息发送给某个图标

       WM_ERASEBKGND = $;

       当窗口背景必须被擦除时(例在窗口改变大小时)

       WM_SYSCOLORCHANGE = $;

       当系统颜色改变时,发送此消息给所有顶级窗口

       WM_ENDSESSION = $;

       当系统进程发出WM_QUERYENDSESSION消息后,此消息发送给应用程序,c 工资管理系统源码

       通知它对话是否结束

       WM_SYSTEMERROR = $;

       WM_SHOWWINDOW = $;

       当隐藏或显示窗口是发送此消息给这个窗口

       WM_ACTIVATEAPP = $C;

       发此消息给应用程序哪个窗口是激活的,哪个是非激活的;

       WM_FONTCHANGE = $D;

       当系统的字体资源库变化时发送此消息给所有顶级窗口

       WM_TIMECHANGE = $E;

       当系统的时间变化时发送此消息给所有顶级窗口

       WM_CANCELMODE = $F;

       发送此消息来取消某种正在进行的摸态(操作)

       WM_SETCURSOR = $;

       如果鼠标引起光标在某个窗口中移动且鼠标输入没有被捕获时,就发消息给某个窗口

       WM_MOUSEACTIVATE = $;

       当光标在某个非激活的窗口中而用户正按着鼠标的某个键发送此消息给当前窗口

       WM_CHILDACTIVATE = $;

       发送此消息给MDI子窗口当用户点击此窗口的标题栏,或当窗口被激活,移动,改变大小

       WM_QUEUESYNC = $;

       此消息由基于计算机的训练程序发送,通过WH_JOURNALPALYBACK的hook程序

       分离出用户输入消息

       WM_GETMINMAXINFO = $;

       此消息发送给窗口当它将要改变大小或位置;

       WM_PAINTICON = $;

       发送给最小化窗口当它图标将要被重画

       WM_ICONERASEBKGND = $;

       此消息发送给某个最小化窗口,仅当它在画图标前它的背景必须被重画

       WM_NEXTDLGCTL = $;

       发送此消息给一个对话框程序去更改焦点位置

       WM_SPOOLERSTATUS = $A;

       每当打印管理列队增加或减少一条作业时发出此消息

       WM_DRAWITEM = $B;

       当button,combobox,listbox,易语言远程桌面源码menu的可视外观改变时发送

       此消息给这些空件的所有者

       WM_MEASUREITEM = $C;

       当button, combo box, list box, list view control, or menu item 被创建时

       发送此消息给控件的所有者

       WM_DELETEITEM = $D;

       当the list box 或 combo box 被销毁 或 当 某些项被删除通过LB_DELETESTRING, LB_RESETCONTENT, CB_DELETESTRING, or CB_RESETCONTENT 消息

       WM_VKEYTOITEM = $E;

       此消息有一个LBS_WANTKEYBOARDINPUT风格的发出给它的所有者来响应WM_KEYDOWN消息

       WM_CHARTOITEM = $F;

       此消息由一个LBS_WANTKEYBOARDINPUT风格的列表框发送给他的所有者来响应WM_CHAR消息

       WM_SETFONT = $;

       当绘制文本时程序发送此消息得到控件要用的颜色

       WM_GETFONT = $;

       应用程序发送此消息得到当前控件绘制文本的字体

       WM_SETHOTKEY = $;

       应用程序发送此消息让一个窗口与一个热键相关连

       WM_GETHOTKEY = $;

       应用程序发送此消息来判断热键与某个窗口是否有关联

       WM_QUERYDRAGICON = $;

       此消息发送给最小化窗口,当此窗口将要被拖放而它的类中没有定义图标,应用程序能返回一个图标或光标的句柄,当用户拖放图标时系统显示这个图标或光标

       WM_COMPAREITEM = $;

       发送此消息来判定combobox或listbox新增加的项的相对位置

       WM_GETOBJECT = $D;

       WM_COMPACTING = $;

       显示内存已经很少了

       WM_WINDOWPOSCHANGING = $;

       发送此消息给那个窗口的大小和位置将要被改变时,来调用setwindowpos函数或其它窗口管理函数

       WM_WINDOWPOSCHANGED = $;

       发送此消息给那个窗口的大小和位置已经被改变时,来调用setwindowpos函数或其它窗口管理函数

       WM_POWER = $;(适用于位的windows)

       当系统将要进入暂停状态时发送此消息

       WM_COPYDATA = $A;

       当一个应用程序传递数据给另一个应用程序时发送此消息

       WM_CANCELJOURNAL = $B;

       当某个用户取消程序日志激活状态,提交此消息给程序

       WM_NOTIFY = $E;

       当某个控件的某个事件已经发生或这个控件需要得到一些信息时,发送此消息给它的父窗口

       WM_INPUTLANGCHANGEREQUEST = $;

       当用户选择某种输入语言,或输入语言的热键改变

       WM_INPUTLANGCHANGE = $;

       当平台现场已经被改变后发送此消息给受影响的最顶级窗口

       WM_TCARD = $;

       当程序已经初始化windows帮助例程时发送此消息给应用程序

       WM_HELP = $;

       此消息显示用户按下了F1,如果某个菜单是刷空间访问量源码激活的,就发送此消息个此窗口关联的菜单,否则就

       发送给有焦点的窗口,如果当前都没有焦点,就把此消息发送给当前激活的窗口

       WM_USERCHANGED = $;

       当用户已经登入或退出后发送此消息给所有的窗口,当用户登入或退出时系统更新用户的具体

       设置信息,在用户更新设置时系统马上发送此消息;

       WM_NOTIFYFORMAT = $;

       公用控件,自定义控件和他们的父窗口通过此消息来判断控件是使用ANSI还是UNICODE结构

       在WM_NOTIFY消息,使用此控件能使某个控件与它的父控件之间进行相互通信

       WM_CONTEXTMENU = $B;

       当用户某个窗口中点击了一下右键就发送此消息给这个窗口

       WM_STYLECHANGING = $C;

       当调用SETWINDOWLONG函数将要改变一个或多个 窗口的风格时发送此消息给那个窗口

       WM_STYLECHANGED = $D;

       当调用SETWINDOWLONG函数一个或多个 窗口的风格后发送此消息给那个窗口 WM_DISPLAYCHANGE = $E;

       当显示器的分辨率改变后发送此消息给所有的窗口

       WM_GETICON = $F;

       此消息发送给某个窗口来返回与某个窗口有关连的大图标或小图标的句柄;

       WM_SETICON = $;

       程序发送此消息让一个新的大图标或小图标与某个窗口关联;

       WM_NCCREATE = $;

       当某个窗口第一次被创建时,此消息在WM_CREATE消息发送前发送;

       WM_NCDESTROY = $;

       此消息通知某个窗口,非客户区正在销毁

       WM_NCCALCSIZE = $;

       当某个窗口的进出口溯源码查询客户区域必须被核算时发送此消息

       WM_NCHITTEST = $;//移动鼠标,按住或释放鼠标时发生

       WM_NCPAINT = $;

       程序发送此消息给某个窗口当它(窗口)的框架必须被绘制时;

       WM_NCACTIVATE = $;

       此消息发送给某个窗口 仅当它的非客户区需要被改变来显示是激活还是非激活状态;

       WM_GETDLGCODE = $;

       发送此消息给某个与对话框程序关联的控件,widdows控制方位键和TAB键使输入进入此控件

       通过响应WM_GETDLGCODE消息,应用程序可以把他当成一个特殊的输入控件并能处理它

       WM_NCMOUSEMOVE = $A0;

       当光标在一个窗口的非客户区内移动时发送此消息给这个窗口 //非客户区为:窗体的标题栏及窗

       的边框体

       WM_NCLBUTTONDOWN = $A1;

       当光标在一个窗口的非客户区同时按下鼠标左键时提交此消息

       WM_NCLBUTTONUP = $A2;

       当用户释放鼠标左键同时光标某个窗口在非客户区十发送此消息;

       WM_NCLBUTTONDBLCLK = $A3;

       当用户双击鼠标左键同时光标某个窗口在非客户区十发送此消息

       WM_NCRBUTTONDOWN = $A4;

       当用户按下鼠标右键同时光标又在窗口的非客户区时发送此消息

       WM_NCRBUTTONUP = $A5;

       当用户释放鼠标右键同时光标又在窗口的非客户区时发送此消息

       WM_NCRBUTTONDBLCLK = $A6;

       当用户双击鼠标右键同时光标某个窗口在非客户区十发送此消息

       WM_NCMBUTTONDOWN = $A7;

       当用户按下鼠标中键同时光标又在窗口的非客户区时发送此消息

       WM_NCMBUTTONUP = $A8;

       当用户释放鼠标中键同时光标又在窗口的非客户区时发送此消息

       WM_NCMBUTTONDBLCLK = $A9;

       当用户双击鼠标中键同时光标又在窗口的非客户区时发送此消息

       WM_KEYFIRST = $;

       WM_KEYDOWN = $;

       //按下一个键

       WM_KEYUP = $;

       //释放一个键

       WM_CHAR = $;

       //按下某键,并已发出WM_KEYDOWN, WM_KEYUP消息

       WM_DEADCHAR = $;

       当用translatemessage函数翻译WM_KEYUP消息时发送此消息给拥有焦点的窗口

       WM_SYSKEYDOWN = $;

       当用户按住ALT键同时按下其它键时提交此消息给拥有焦点的窗口;

       WM_SYSKEYUP = $;

       当用户释放一个键同时ALT 键还按着时提交此消息给拥有焦点的窗口

       WM_SYSCHAR = $;

       当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后提交此消息给拥有焦点的窗口

       WM_SYSDEADCHAR = $;

       当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后发送此消息给拥有焦点的窗口

       WM_KEYLAST = $;

       WM_INITDIALOG = $;

       在一个对话框程序被显示前发送此消息给它,通常用此消息初始化控件和执行其它任务

       WM_COMMAND = $;

       当用户选择一条菜单命令项或当某个控件发送一条消息给它的父窗口,一个快捷键被翻译

       WM_SYSCOMMAND = $;

       当用户选择窗口菜单的一条命令或当用户选择最大化或最小化时那个窗口会收到此消息

       WM_TIMER = $; //发生了定时器事件

       WM_HSCROLL = $;

       当一个窗口标准水平滚动条产生一个滚动事件时发送此消息给那个窗口,也发送给拥有它的控件

       WM_VSCROLL = $;

       当一个窗口标准垂直滚动条产生一个滚动事件时发送此消息给那个窗口也,发送给拥有它的控件 WM_INITMENU = $;

       当一个菜单将要被激活时发送此消息,它发生在用户菜单条中的某项或按下某个菜单键,它允许程序在显示前更改菜单

       WM_INITMENUPOPUP = $;

       当一个下拉菜单或子菜单将要被激活时发送此消息,它允许程序在它显示前更改菜单,而不要改变全部

       WM_MENUSELECT = $F;

       当用户选择一条菜单项时发送此消息给菜单的所有者(一般是窗口)

       WM_MENUCHAR = $;

       当菜单已被激活用户按下了某个键(不同于加速键),发送此消息给菜单的所有者;

       WM_ENTERIDLE = $;

       当一个模态对话框或菜单进入空载状态时发送此消息给它的所有者,一个模态对话框或菜单进入空载状态就是在处理完一条或几条先前的消息后没有消息它的列队中等待

       WM_MENURBUTTONUP = $;

       WM_MENUDRAG = $;

       WM_MENUGETOBJECT = $;

       WM_UNINITMENUPOPUP = $;

       WM_MENUCOMMAND = $;

       WM_CHANGEUISTATE = $;

       WM_UPDATEUISTATE = $;

       WM_QUERYUISTATE = $;

       WM_CTLCOLORMSGBOX = $;

       在windows绘制消息框前发送此消息给消息框的所有者窗口,通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置消息框的文本和背景颜色

       WM_CTLCOLOREDIT = $;

       当一个编辑型控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置编辑框的文本和背景颜色

       WM_CTLCOLORLISTBOX = $;

       当一个列表框控件将要被绘制前发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置列表框的文本和背景颜色

       WM_CTLCOLORBTN = $;

       当一个按钮控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置按纽的文本和背景颜色

       WM_CTLCOLORDLG = $;

       当一个对话框控件将要被绘制前发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置对话框的文本背景颜色

       WM_CTLCOLORSCROLLBAR= $;

       当一个滚动条控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置滚动条的背景颜色

       WM_CTLCOLORSTATIC = $;

       当一个静态控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置静态控件的文本和背景颜色

       WM_MOUSEFIRST = $;

       WM_MOUSEMOVE = $;

       // 移动鼠标

       WM_LBUTTONDOWN = $;

       //按下鼠标左键

       WM_LBUTTONUP = $;

       //释放鼠标左键

       WM_LBUTTONDBLCLK = $;

       //双击鼠标左键

       WM_RBUTTONDOWN = $;

       //按下鼠标右键

       WM_RBUTTONUP = $;

       //释放鼠标右键

       WM_RBUTTONDBLCLK = $;

       //双击鼠标右键

       WM_MBUTTONDOWN = $;

       //按下鼠标中键

       WM_MBUTTONUP = $;

       //释放鼠标中键

       WM_MBUTTONDBLCLK = $;

       //双击鼠标中键

       WM_MOUSEWHEEL = $A;

       当鼠标轮子转动时发送此消息个当前有焦点的控件

       WM_MOUSELAST = $A;

       WM_PARENTNOTIFY = $;

       当MDI子窗口被创建或被销毁,或用户按了一下鼠标键而光标在子窗口上时发送此消息给它的父窗口

       WM_ENTERMENULOOP = $;

       发送此消息通知应用程序的主窗口that已经进入了菜单循环模式

       WM_EXITMENULOOP = $;

       发送此消息通知应用程序的主窗口that已退出了菜单循环模式

       WM_NEXTMENU = $;

       WM_SIZING = ;

       当用户正在调整窗口大小时发送此消息给窗口;通过此消息应用程序可以监视窗口大小和位置也可以修改他们

       WM_CAPTURECHANGED = ;

       发送此消息 给窗口当它失去捕获的鼠标时;

       WM_MOVING = ;

       当用户在移动窗口时发送此消息,通过此消息应用程序可以监视窗口大小和位置也可以修改他们;

       WM_POWERBROADCAST = ;

       此消息发送给应用程序来通知它有关电源管理事件;

       WM_DEVICECHANGE = ;

       当设备的硬件配置改变时发送此消息给应用程序或设备驱动程序

       WM_IME_STARTCOMPOSITION = $D;

       WM_IME_ENDCOMPOSITION = $E;

       WM_IME_COMPOSITION = $F;

       WM_IME_KEYLAST = $F;

       WM_IME_SETCONTEXT = $;

       WM_IME_NOTIFY = $;

       WM_IME_CONTROL = $;

       WM_IME_COMPOSITIONFULL = $;

       WM_IME_SELECT = $;

       WM_IME_CHAR = $;

       WM_IME_REQUEST = $;

       WM_IME_KEYDOWN = $;

       WM_IME_KEYUP = $;

       WM_MDICREATE = $;

       应用程序发送此消息给多文档的客户窗口来创建一个MDI 子窗口

       WM_MDIDESTROY = $;

       应用程序发送此消息给多文档的客户窗口来关闭一个MDI 子窗口

       WM_MDIACTIVATE = $;

       应用程序发送此消息给多文档的客户窗口通知客户窗口激活另一个MDI子窗口,当客户窗口收到此消息后,它发出WM_MDIACTIVE消息给MDI子窗口(未激活)激活它;

       WM_MDIRESTORE = $;

       程序 发送此消息给MDI客户窗口让子窗口从最大最小化恢复到原来大小

       WM_MDINEXT = $;

       程序 发送此消息给MDI客户窗口激活下一个或前一个窗口

       WM_MDIMAXIMIZE = $;

       程序发送此消息给MDI客户窗口来最大化一个MDI子窗口;

       WM_MDITILE = $;

       程序 发送此消息给MDI客户窗口以平铺方式重新排列所有MDI子窗口

       WM_MDICASCADE = $;

       程序 发送此消息给MDI客户窗口以层叠方式重新排列所有MDI子窗口

       WM_MDIICONARRANGE = $;

       程序 发送此消息给MDI客户窗口重新排列所有最小化的MDI子窗口

       WM_MDIGETACTIVE = $;

       程序 发送此消息给MDI客户窗口来找到激活的子窗口的句柄

       WM_MDISETMENU = $;

       程序 发送此消息给MDI客户窗口用MDI菜单代替子窗口的菜单

       WM_ENTERSIZEMOVE = $;

       WM_EXITSIZEMOVE = $;

       WM_DROPFILES = $;

       WM_MDIREFRESHMENU = $;

       WM_MOUSEHOVER = $A1;

       WM_MOUSELEAVE = $A3;

       WM_CUT = $;

       程序发送此消息给一个编辑框或combobox来删除当前选择的文本

       WM_COPY = $;

       程序发送此消息给一个编辑框或combobox来复制当前选择的文本到剪贴板

       WM_PASTE = $;

       程序发送此消息给editcontrol或combobox从剪贴板中得到数据

       WM_CLEAR = $;

       程序发送此消息给editcontrol或combobox清除当前选择的内容;

       WM_UNDO = $;

       程序发送此消息给editcontrol或combobox撤消最后一次操作

       WM_RENDERFORMAT = $; WM_RENDERALLFORMATS = $;

       WM_DESTROYCLIPBOARD = $;

       当调用ENPTYCLIPBOARD函数时 发送此消息给剪贴板的所有者

       WM_DRAWCLIPBOARD = $;

       当剪贴板的内容变化时发送此消息给剪贴板观察链的第一个窗口;它允许用剪贴板观察窗口来

       显示剪贴板的新内容;

       WM_PAINTCLIPBOARD = $;

       当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区需要重画;

       WM_VSCROLLCLIPBOARD = $A;

       WM_SIZECLIPBOARD = $B;

       当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区域的大小已经改变是此消息通过剪贴板观察窗口发送给剪贴板的所有者;

       WM_ASKCBFORMATNAME = $C;

       通过剪贴板观察窗口发送此消息给剪贴板的所有者来请求一个CF_OWNERDISPLAY格式的剪贴板的名字

       WM_CHANGECBCHAIN = $D;

       当一个窗口从剪贴板观察链中移去时发送此消息给剪贴板观察链的第一个窗口;

       WM_HSCROLLCLIPBOARD = $E;

       此消息通过一个剪贴板观察窗口发送给剪贴板的所有者 ;它发生在当剪贴板包含CFOWNERDISPALY格式的数据并且有个事件在剪贴板观察窗的水平滚动条上;所有者应滚动剪贴板图象并更新滚动条的值;

       WM_QUERYNEWPALETTE = $F;

       此消息发送给将要收到焦点的窗口,此消息能使窗口在收到焦点时同时有机会实现他的逻辑调色板

       WM_PALETTEISCHANGING= $; 当一个应用程序正要实现它的逻辑调色板时发此消息通知所有的应用程序

       WM_PALETTECHANGED = $;

       此消息在一个拥有焦点的窗口实现它的逻辑调色板后发送此消息给所有顶级并重叠的窗口,以此来改变系统调色板

       WM_HOTKEY = $;

       当用户按下由REGISTERHOTKEY函数注册的热键时提交此消息

       WM_PRINT = ;

       应用程序发送此消息仅当WINDOWS或其它应用程序发出一个请求要求绘制一个应用程序的一部分;

       WM_PRINTCLIENT = ;

       WM_HANDHELDFIRST = ;

       WM_HANDHELDLAST = ;

       WM_PENWINFIRST = $;

       WM_PENWINLAST = $F;

       WM_COALESCE_FIRST = $;

       WM_COALESCE_LAST = $F;

       WM_DDE_FIRST = $E0;

       WM_DDE_INITIATE = WM_DDE_FIRST + 0;

       一个DDE客户程序提交此消息开始一个与服务器程序的会话来响应那个指定的程序和主题名;

       WM_DDE_TERMINATE = WM_DDE_FIRST + 1;

       一个DDE应用程序(无论是客户还是服务器)提交此消息来终止一个会话;

       WM_DDE_ADVISE = WM_DDE_FIRST + 2;

       一个DDE客户程序提交此消息给一个DDE服务程序来请求服务器每当数据项改变时更新它

       WM_DDE_UNADVISE = WM_DDE_FIRST + 3;

       一个DDE客户程序通过此消息通知一个DDE服务程序不更新指定的项或一个特殊的剪贴板格式的项

       WM_DDE_ACK = WM_DDE_FIRST + 4;

       此消息通知一个DDE(动态数据交换)程序已收到并正在处理WM_DDE_POKE, WM_DDE_EXECUTE, WM_DDE_DATA, WM_DDE_ADVISE, WM_DDE_UNADVISE, or WM_DDE_INITIAT消息

       WM_DDE_DATA = WM_DDE_FIRST + 5;

       一个DDE服务程序提交此消息给DDE客户程序来传递个一数据项给客户或通知客户的一条可用数据项

       WM_DDE_REQUEST = WM_DDE_FIRST + 6;

       一个DDE客户程序提交此消息给一个DDE服务程序来请求一个数据项的值;

       WM_DDE_POKE = WM_DDE_FIRST + 7;

       一个DDE客户程序提交此消息给一个DDE服务程序,客户使用此消息来请求服务器接收一个未经同意的数据项;服务器通过答复WM_DDE_ACK消息提示是否它接收这个数据项;

       WM_DDE_EXECUTE = WM_DDE_FIRST + 8;

       一个DDE客户程序提交此消息给一个DDE服务程序来发送一个字符串给服务器让它象串行命令一样被处理,服务器通过提交WM_DDE_ACK消息来作回应;

       WM_DDE_LAST = WM_DDE_FIRST + 8;

       WM_APP = $;

       WM_USER = $;

       此消息能帮助应用程序自定义私有消息;

       /////////////////////////////////////////////////////////////////////

       通知消息(Notification message)是指这样一种消息,一个窗口内的子控件发生了一些事情,需要通知父窗口。通知消息只适用于标准的窗口控件如按钮、列表框、组合框、编辑框,以及Windows 公共控件如树状视图、列表视图等。例如,单击或双击一个控件、在控件中选择部分文本、操作控件的滚动条都会产生通知消息。

       按扭

       B N _ C L I C K E D //用户单击了按钮

       B N _ D I S A B L E //按钮被禁止

       B N _ D O U B L E C L I C K E D //用户双击了按钮

       B N _ H I L I T E //用户加亮了按钮

       B N _ PA I N T按钮应当重画

       B N _ U N H I L I T E加亮应当去掉

       组合框

       C B N _ C L O S E U P组合框的列表框被关闭

       C B N _ D B L C L K用户双击了一个字符串

       C B N _ D R O P D O W N组合框的列表框被拉出

       C B N _ E D I T C H A N G E用户修改了编辑框中的文本

       C B N _ E D I T U P D AT E编辑框内的文本即将更新

       C B N _ E R R S PA C E组合框内存不足

       C B N _ K I L L F O C U S组合框失去输入焦点

       C B N _ S E L C H A N G E在组合框中选择了一项

       C B N _ S E L E N D C A N C E L用户的选择应当被取消

       C B N _ S E L E N D O K用户的选择是合法的

       C B N _ S E T F O C U S组合框获得输入焦点

       编辑框

       E N _ C H A N G E编辑框中的文本己更新

       E N _ E R R S PA C E编辑框内存不足

       E N _ H S C R O L L用户点击了水平滚动条

       E N _ K I L L F O C U S编辑框正在失去输入焦点

       E N _ M A X T E X T插入的内容被截断

       E N _ S E T F O C U S编辑框获得输入焦点

       E N _ U P D AT E编辑框中的文本将要更新

       E N _ V S C R O L L用户点击了垂直滚动条消息含义

       列表框

       L B N _ D B L C L K用户双击了一项

       L B N _ E R R S PA C E列表框内存不够

       L B N _ K I L L F O C U S列表框正在失去输入焦点

       L B N _ S E L C A N C E L选择被取消

       L B N _ S E L C H A N G E选择了另一项

       L B N _ S E T F O C U S列表框获得输入焦点