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能够维护大多数可视对象的源码句柄(窗口、对话框、源码按钮、源码小储云源码最新版下载编辑框等)。源码
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消息后,此消息发送给应用程序,图像原理和源码
通知它对话是否结束
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,批量下载git源码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,如果某个菜单是file beat源码解析激活的,就发送此消息个此窗口关联的菜单,否则就
发送给有焦点的窗口,如果当前都没有焦点,就把此消息发送给当前激活的窗口
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列表框获得输入焦点
2024-11-20 19:43
2024-11-20 19:26
2024-11-20 19:09
2024-11-20 19:02
2024-11-20 18:54