C#中如何截取Windows消息来触发自定义事件

简介:

原文 C#中如何截取Windows消息来触发自定义事件

在c#windows开发中,我们常常会遇到拦截windows消息,来触发某个特定任务的问题。

由于目前使用c#的开发人员非常多,而且大多数c#程序员都不是从Windwos c++转过来的对windows消息机制不怎么了解,遇到这类问题还是挺棘手的,我们公司有个同事问,就写这个小实例,帮助那些遇到此类问题的兄弟姐妹。

实现方式目前有两种:

 

1 使用Control类的虚方法WndProc来截取Windows消息

 基类为Control类的所有控件都有一个protected virtual void WndProc(ref Message m) 的虚方法。我只要重载该虚方法,那么这个控件聚焦后就可以扑捉windows消息,并触发该方法了。

 

复制代码
protected override void WndProc(ref Message m)
{
  switch (m.Msg)                               //判断系统消息的ID号     
  {
    case 513:
      MessageBox.Show("恭喜你点击了左键!");
      m.Result = (IntPtr)0;                  //为了响应消息处理而向 Windows 返回的值        
      break;
    case 516:
      MessageBox.Show("恭喜你点击了右键!");
      m.Result = (IntPtr)0;                //为了响应消息处理而向 Windows 返回的值          
      break;
    default:
      base.WndProc(ref m);
      break;
  }
}
复制代码

 

 

2 通过实现IMessageFilter接口,来截取获Windows消息。

IMessageFilter接口用来定义消息筛选器接口,该接口的PreFilterMessage方法用来在调度消息之前将其筛选出来。他的实现如下:

复制代码
  public class MessageFilter : IMessageFilter
    {
        public bool PreFilterMessage(ref Message message) //实现PreFilterMessage方法    
        {
            switch (message.Msg)                               //判断系统消息的ID号     
            {
                case 513:
                    MessageBox.Show("恭喜你点击了左键!");
                    return true;
                case 516:
                    MessageBox.Show("恭喜你点击了右键!");
                    return true;
                default:
                    return false;
            }
        }
    }
复制代码

 

那么如何使用这个类? 其实在类Application中有个AddMessageFilter(IMessageFilter value)的静态方法,只要添加进去就可以,

例如:Application.AddMessageFilter(MessageFilter); 加进去可别忘了,加进去的消息过滤器也可删除Application。RemoveMessageFilter(IMessageFilter value);

 

附录: windows消息ID列表

( 备注地址为0x????格式,0x后仅四位,四位以后的为乱码,为本文格式排版问题,待完善 ):

WM_NULL=0x0000
WM_CREATE=0x0001
WM_DESTROY=0x0002
WM_MOVE=0x0003
WM_SIZE=0x0005
WM_ACTIVATE=0x0006
WM_GETTEXT=0x000D
WM_GETTEXTLENGTH=0x000E


WM_PAINT=0x000F
WM_CLOSE=0x0010
WM_QUERYENDSESSION=0x0011
WM_QUERYOPEN=0x0013
WM_ENDSESSION=0x0016
WM_QUIT=0x0012
WM_ERASEBKGND=0x0014

WM_SYSCOLORCHANGE=0x0015
WM_SHOWWINDOW=0x0018
WM_WININICHANGE=0x001A
WM_SETTINGCHANGE=0x001A
WM_ACTIVATEAPP=0x001C
WM_FONTCHANGE=0x001D
WM_TIMECHANGE=0x001E
WM_CANCELMODE=0x001F


WM_MOUSEACTIVATE=0x0021
WM_CHILDACTIVATE=0x0022
WM_QUEUESYNC=0x0023
WM_NEXTDLGCTL=0x0028
WM_SPOOLERSTATUS=0x002A
WM_DRAWITEM=0x002B
WM_MEASUREITEM=0x002C
WM_DELETEITEM=0x002D
WM_VKEYTOITEM=0x002E
WM_CHARTOITEM=0x002F
WM_SETFONT=0x0030
WM_GETFONT=0x0031
WM_SETHOTKEY=0x0032
WM_GETHOTKEY=0x0033
WM_QUERYDRAGICON=0x0037
WM_COMMNOTIFY=0x0044
WM_WINDOWPOSCHANGING=0x0046
WM_WINDOWPOSCHANGED=0x0047
WM_CANCELJOURNAL=0x004B


WM_NOTIFY=0x004E
WM_INPUTLANGCHANGEREQUEST=0x0050
WM_INPUTLANGCHANGE=0x0051
WM_TCARD=0x00528 i; {( h( Y* s' b
WM_HELP=0x00537 y3 p: J1 z+ e  V% @)
F* |/ k6 {! e/ v3 o6 q" k. t
WM_CONTEXTMENU=0x007B- K6 ?  j% J2 U* I7 
n
WM_STYLECHANGING=0x007C4 l' C" ?! e9 i4 
e
WM_STYLECHANGED=0x007D
WM_DISPLAYCHANGE=0x007E
WM_GETICON=0x007F  J: _/ _. 
O)
WM_GETDLGCODE=0x0087$ d% z% i* O4 _( g! q1 
|
WM_SYNCPAINT=0x0088
WM_NCMOUSEMOVE=0x00A0
WM_NCLBUTTONDOWN=0x00A1
WM_NCLBUTTONUP=0x00A2
WM_NCLBUTTONDBLCLK=0x00A3
WM_NCRBUTTONDOWN=0x00A4
WM_NCRBUTTONUP=0x00A5% g3 K4 g6 B( c+ ^: 
X
WM_NCRBUTTONDBLCLK=0x00A6
WM_NCMBUTTONDOWN=0x00A7
WM_NCMBUTTONUP=0x00A8, q# a7 
x5 s& V2 {4 i
WM_NCMBUTTONDBLCLK=0x00A9, I" ^; L6 }6 c0 o- G" 
P
WM_NCXBUTTONDOWN=0x00AB7 W3 E9 Z/ n/ {/ 
g, G* l; L2 Q6 O* F
WM_NCXBUTTONUP=0x00AC
WM_NCXBUTTONDBLCLK=0x00AD
WM_INPUT=0x00FF- }4 }5 Q; s+ ^: 
U  O' B
WM_KEYFIRST=0x0100
WM_KEYDOWN=0x01009 e+ z( O7 J8 b- 
{* T( s
WM_KEYUP=0x01013 _+ g8 c)
G- T& }1 @# Q# f
WM_UNICHAR=0x0109
WM_KEYLAST_NT501=0x0109
UNICODE_NOCHAR=0xFFFF
WM_KEYLAST_PRE501=0x0108+ U; P$ I$ e$ R2 p8 
w( ~
WM_IME_STARTCOMPOSITION=0x010D& 
L1 V4 d3 P  `8 r( o! ~* g
WM_IME_ENDCOMPOSITION=0x010E
WM_IME_COMPOSITION=0x010F
WM_IME_KEYLAST=0x010F1 W: [4 w. O; 
i/ e
WM_INITDIALOG=0x0110
WM_COMMAND=0x0111
WM_SYSCOMMAND=0x01124 `2 Z8 p6 f. d$ 
T8 m
WM_TIMER=0x0113
WM_HSCROLL=0x0114  [6 L1 W. v6 O2 
[  @5 U)
WM_MENUSELECT=0x011F
WM_MENUCHAR=0x0120" 
Y& c8 q+ ~% y/ s5 Z9 e
WM_ENTERIDLE=0x0121
WM_MENURBUTTONUP=0x0122
WM_MENUDRAG=0x0123
WM_MENUGETOBJECT=0x0124
WM_UNINITMENUPOPUP=0x0125
WM_MENUCOMMAND=0x0126+ }  {7 |" T2 m- N  C5 ^$ a)
WM_CTLCOLOREDIT=0x0133% i/ _)
WM_CTLCOLORBTN=0x0135
WM_CTLCOLORDLG=0x01368 i* w0 g; |)
WM_MOUSEMOVE=0x0200, p4 s5 t8 J' C& 
A( @' Y
WM_LBUTTONDOWN=0x0201% a' /7 k* 
J1 H. N9 /7 [. r! O
WM_LBUTTONUP=0x0202& q& w- i7 e4 w" t5 p# 
k
WM_LBUTTONDBLCLK=0x02038 o# y* H- E9 
p
WM_RBUTTONDOWN=0x0204
WM_RBUTTONUP=0x02059 i% Q% O4 d4 
S1 R
WM_RBUTTONDBLCLK=0x0206/ B% o' ~5 F' 
M2 q, Q  ~
WM_MBUTTONDOWN=0x02079 ^& 
h9 {& A. E0 [6 l3 ^( s: [
WM_MBUTTONUP=0x02083 I* })
[' n- y6 h$ e# ]% |8 m
WM_XBUTTONDOWN=0x020B8 g% m  h9 q2 E5 L
WM_XBUTTONUP=0x020C8 x; P2 {+ Z3 
_
WM_XBUTTONDBLCLK=0x020D
WM_MOUSELAST_5=0x020D)
WM_SIZING=0x0214
WM_CAPTURECHANGED=0x0215! n* _0 
D3 t7 _; D( }& F
WM_MOVING=0x0216; |' 
Z7 p+ w; v9 ^" g; y
WM_POWERBROADCAST=0x0218/ o1 D)
WM_MDIACTIVATE=0x0222)
WM_MDINEXT=0x0224)
WM_MDICASCADE=0x0227
WM_MDIICONARRANGE=0x0228" a& w5 C  @- t9 ?9 B! x8 
N
WM_MDIGETACTIVE=0x02293 o! h)
WM_DROPFILES=0x0233
WM_MDIREFRESHMENU=0x0234( ^2 }6 z1 k4 
_
WM_IME_SETCONTEXT=0x0281
WM_IME_NOTIFY=0x0282
WM_IME_CONTROL=0x0283
WM_IME_COMPOSITIONFULL=0x0284' T7 I: G; N' S- R; 
|
WM_IME_SELECT=0x0285
WM_IME_CHAR=0x0286
WM_IME_REQUEST=0x0288; n' J2 `% q! i4 w1 
v$ M5 u
WM_IME_KEYDOWN=0x02906 w8 S( [8 
`  R$ y8 t: F$ E
WM_IME_KEYUP=0x0291# /" 
s  _/ G" i
WM_MOUSEHOVER=0x02A1
WM_MOUSELEAVE=0x02A3
WM_NCMOUSEHOVER=0x02A0
WM_NCMOUSELEAVE=0x02A2
WM_WTSSESSION_CHANGE=0x02B1
WM_TABLET_FIRST=0x02c0
WM_TABLET_LAST=0x02df
WM_CUT=0x0300
WM_COPY=0x0301: D: F9 J1 f, R: S6 W. U6 z* 
j
WM_PASTE=0x0302
WM_CLEAR=0x03036 m3 e. /% Z2 
e
WM_UNDO=0x03042 M' K& }( a: A1 
T
WM_RENDERFORMAT=0x0305
WM_RENDERALLFORMATS=0x0306
WM_DESTROYCLIPBOARD=0x03078 ~, u! u% U* 
O
WM_DRAWCLIPBOARD=0x0308  y" z  b2 F/ m5 
i' o# c8 r
WM_PAINTCLIPBOARD=0x0309" 
z  D; J& /# a; o- m1 k. H' ^
WM_VSCROLLCLIPBOARD=0x030A
WM_SIZECLIPBOARD=0x030B)
WM_HSCROLLCLIPBOARD=0x030E
WM_QUERYNEWPALETTE=0x030F% t1 b# M7 N5 D6 
P
WM_PALETTEISCHANGING=0x0310
WM_PALETTECHANGED=0x0311+ 
V0 d$ [9 W8 K3 Y" w" _$ K! z
WM_HOTKEY=0x0312
WM_PRINT=0x0317
WM_PRINTCLIENT=0x0318: D: F& r9 }! x( ?, @" 
e
WM_APPCOMMAND=0x0319
WM_THEMECHANGED=0x031A
WM_HANDHELDFIRST=0x0358
WM_HANDHELDLAST=0x035F$ Y9 
s1 {* I- @8 k: n
WM_AFXFIRST=0x0360+ /" 
d0 @! u  ?. /)
WM_USER=0x04002 w( L7 d2 ^6 a0 m, p; m% 
?
EM_GETSEL=0x00B0+ G" @/ S2 G& o8 I6 
l' B
EM_SETSEL=0x00B1
EM_GETRECT=0x00B2
EM_SETRECT=0x00B3
EM_SETRECTNP=0x00B4
EM_SCROLL=0x00B5
EM_LINESCROLL=0x00B6
EM_SCROLLCARET=0x00B7
EM_GETMODIFY=0x00B8
EM_SETMODIFY=0x00B9 
EM_GETLINECOUNT=0x00BA
EM_LINEINDEX=0x00BB
EM_SETHANDLE=0x00BC
EM_GETHANDLE=0x00BD
EM_GETTHUMB=0x00BE
EM_LINELENGTH=0x00C1
EM_REPLACESEL=0x00C2
EM_GETLINE=0x00C4
EM_FMTLINES=0x00C8
EM_LINEFROMCHAR=0x00C9
EM_SETTABSTOPS=0x00CB5
EM_SETPASSWORDCHAR=0x00CC
EM_EMPTYUNDOBUFFER=0x00CD
EM_GETFIRSTVISIBLELINE=0x00CE
EM_SETREADONLY=0x00CF
EM_SETWORDBREAKPROC=0x00D0
EM_GETWORDBREAKPROC=0x00D1
EM_GETPASSWORDCHAR=0x00D2
EM_SETMARGINS=0x00D3
EM_GETMARGINS=0x00D4
EM_SETLIMITTEXT=EM_LIMITTEXT
EM_GETLIMITTEXT=0x00D5
EM_POSFROMCHAR=0x00D6
EM_CHARFROMPOS=0x00D7
EM_SETIMESTATUS=0x00D8
EM_GETIMESTATUS=0x00D9
BM_GETCHECK=0x00F0
BM_SETCHECK=0x00F1
BM_GETSTATE=0x00F2
BM_SETSTATE=0x00F3
BM_SETSTYLE=0x00F4
BM_CLICK=0x00F5
BM_GETIMAGE=0x00F6
STM_SETICON=0x0170
STM_GETICON=0x0171
DM_GETDEFID=(WM_USER+0)

LB_SETSEL=0x0185
LB_SETCURSEL=0x0186
LB_GETSEL=0x0187
LB_GETCURSEL=0x0188
LB_GETTEXT=0x0189
LB_DIR=0x018D
LB_GETTOPINDEX=0x018E
LB_FINDSTRING=0x018F
LB_GETSELCOUNT=0x0190
LB_SETTABSTOPS=0x0192
LB_GETHORIZONTALEXTENT=0x0193
LB_SETHORIZONTALEXTENT=0x0194
LB_SETITEMDATA=0x019A
LB_SELITEMRANGE=0x019B
LB_SETANCHORINDEX=0x019C
LB_GETANCHORINDEX=0x019D
LB_SETCARETINDEX=0x019E
LB_GETCARETINDEX=0x019F
LB_SETITEMHEIGHT=0x01A0
LB_GETLOCALE=0x01A6
LB_SETCOUNT=0x01A7
LB_INITSTORAGE=0x01A8
LB_ITEMFROMPOINT=0x01A9
LB_MULTIPLEADDSTRING=0x01B1
LB_GETLISTBOXINFO=0x01B2
LB_MSGMAX_501=0x01B3
LB_MSGMAX_WCE4=0x01B1
LB_MSGMAX_4=0x01B0
LB_MSGMAX_PRE4=0x01A8
CB_GETEDITSEL=0x0140
CB_DELETESTRING=0x0144
CB_DIR=0x0145
CB_GETCOUNT=0x0146
CB_GETCURSEL=0x0147
CB_GETLBTEXT=0x0148
CB_GETLBTEXTLEN=0x0149
CB_INSERTSTRING=0x014A
CB_RESETCONTENT=0x014B
CB_SETCURSEL=0x014E
CB_SHOWDROPDOWN=0x014F
CB_SETITEMDATA=0x0151
CB_GETDROPPEDCONTROLRECT=0x0152
CB_SETITEMHEIGHT=0x0153
CB_GETITEMHEIGHT=0x0154
CB_SETEXTENDEDUI=0x0155
CB_GETEXTENDEDUI=0x0156
CB_GETDROPPEDSTATE=0x0157
CB_FINDSTRINGEXACT=0x0158
CB_SETLOCALE=0x0159
CB_GETLOCALE=0x015A
CB_GETTOPINDEX=0x015B
CB_SETTOPINDEX=0x015C
CB_GETHORIZONTALEXTENT=0x015d
CB_SETHORIZONTALEXTENT=0x015e
CB_GETDROPPEDWIDTH=0x015f
CB_SETDROPPEDWIDTH=0x0160
CB_INITSTORAGE=0x0161
CB_MSGMAX_WCE400=0x0163
CB_MSGMAX_400=0x0162
CB_MSGMAX_PRE400=0x015B
SBM_SETPOS=0x00E0
SBM_GETPOS=0x00E1
SBM_SETRANGE=0x00E2
SBM_SETRANGEREDRAW=0x00E6
SBM_GETRANGE=0x00E3
SBM_ENABLE_ARROWS=0x00E4
SBM_GETSCROLLINFO=0x00EA
SBM_GETSCROLLBARINFO=0x00EB
LVM_FIRST=0x1000
TV_FIRST=0x1100
HDM_FIRST=0x1200
TCM_FIRST=0x1300


PGM_FIRST=0x1400
ECM_FIRST=0x1500
BCM_FIRST=0x1600


CBM_FIRST=0x1700
CCM_FIRST=0x2000

CCM_LAST=(CCM_FIRST+0x200)
CCM_GETUNICODEFORMAT=(CCM_FIRST+6)
CCM_GETVERSION=(CCM_FIRST+0x8)
HDM_DELETEITEM=(HDM_FIRST+2)
HDM_SETIMAGELIST=(HDM_FIRST+8)
HDM_SETHOTDIVIDER=(HDM_FIRST+19)
HDM_GETBITMAPMARGIN=(HDM_FIRST+21)
HDM_SETUNICODEFORMAT=CCM_SETUNICODEFORMAT

HDM_GETUNICODEFORMAT=CCM_GETUNICODEFORMAT
HDM_SETFILTERCHANGETIMEOUT=(HDM_FIRST+22)
HDM_EDITFILTER=(HDM_FIRST+23)
TB_INDETERMINATE=(WM_USER+5)

TB_INSERTBUTTON=(WM_USER+21)
TB_CHANGEBITMAP=(WM_USER+43)
TB_GETBUTTONTEXTW=(WM_USER+75)
TB_GETIMAGELIST=(WM_USER+49)
TB_GETHOTIMAGELIST=(WM_USER+53)
TB_GETDISABLEDIMAGELIST=(WM_USER+55)
TB_GETOBJECT=(WM_USER+62)
TB_GETHOTITEM=(WM_USER+71)
TB_GETEXTENDEDSTYLE=(WM_USER+85)
TB_SETUNICODEFORMAT=CCM_SETUNICODEFORMAT
TB_GETUNICODEFORMAT=CCM_GETUNICODEFORMAT


TB_MAPACCELERATORW=(WM_USER+90)
TB_ADDBUTTONSW=(WM_USER+68)
RB_SETBARINFO=(WM_USER+4)
RB_GETBANDINFO=(WM_USER+5)
RB_SETTOOLTIPS=(WM_USER+18)
RB_GETBKCOLOR=(WM_USER+20)
RB_GETTEXTCOLOR=(WM_USER+22)
RB_GETCOLORSCHEME=CCM_GETCOLORSCHEME


RB_BEGINDRAG=(WM_USER+24)
RB_GETBANDINFOA=(WM_USER+29)
RB_MAXIMIZEBAND=(WM_USER+31)
RB_GETUNICODEFORMAT=CCM_GETUNICODEFORMAT
RB_GETBANDMARGINS=(WM_USER+40)
RB_SETWINDOWTHEME=CCM_SETWINDOWTHEME

 
RB_PUSHCHEVRON=(WM_USER+43)
TTM_ACTIVATE=(WM_USER+1)
TTM_NEWTOOLRECTW=(WM_USER+52)
TTM_GETTEXTW=(WM_USER+56)
TTM_UPDATETIPTEXTW=(WM_USER+57)
TTM_GETTOOLCOUNT=(WM_USER+13)
TTM_ENUMTOOLSW=(WM_USER+58)
TTM_WINDOWFROMPOINT=(WM_USER+16)
TTM_GETTIPTEXTCOLOR=(WM_USER+23)
TTM_SETMAXTIPWIDTH=(WM_USER+24)
TTM_ADJUSTRECT=(WM_USER+31)
TTM_SETTITLEA=(WM_USER+32)
SB_SETTEXTA=(WM_USER+1)
SB_SETMINHEIGHT=(WM_USER+8)
SB_SIMPLE=(WM_USER+9)
SB_SETTIPTEXTW=(WM_USER+17)
SB_GETTIPTEXTW=(WM_USER+19)
SB_GETUNICODEFORMAT=CCM_GETUNICODEFORMAT

SB_SETBKCOLOR=CCM_SETBKCOLOR

SB_SIMPLEID=0x00ff: 

TBM_GETPOS=(WM_USER)
TBM_GETRANGEMAX=(WM_USER+2)
TBM_GETNUMTICS=(WM_USER+16)
TBM_GETSELSTART=(WM_USER+17)
TBM_SETTICFREQ=(WM_USER+20)
TBM_GETPAGESIZE=(WM_USER+22)
TBM_GETTHUMBLENGTH=(WM_USER+28)
TBM_GETUNICODEFORMAT=CCM_GETUNICODEFORMAT
DL_BEGINDRAG=(WM_USER+133)
UDM_SETBUDDY=(WM_USER+105)
UDM_GETACCEL=(WM_USER+108)
UDM_SETUNICODEFORMAT=CCM_SETUNICODEFORMAT 
UDM_GETUNICODEFORMAT=CCM_GETUNICODEFORMAT

PBM_GETRANGE=(WM_USER+7)
PBM_SETBARCOLOR=(WM_USER+9)
PBM_SETBKCOLOR=CCM_SETBKCOLOR
HKM_SETHOTKEY=(WM_USER+1)
LVM_SETUNICODEFORMAT=CCM_SETUNICODEFORMAT 
LVM_GETUNICODEFORMAT=CCM_GETUNICODEFORMAT

LVM_GETBKCOLOR=(LVM_FIRST+0)
LVM_GETITEMA=(LVM_FIRST+5)
LVM_INSERTITEMW=(LVM_FIRST+77)
X4 F: _% l1 o1 S# v8 h: _# A
LVM_DELETEALLITEMS=(LVM_FIRST+9)
LVM_GETITEMRECT=(LVM_FIRST+14)
LVM_GETCOLUMNWIDTH=(LVM_FIRST+29)
LVM_SETTEXTCOLOR=(LVM_FIRST+36)
LVM_GETCOUNTPERPAGE=(LVM_FIRST+40)
LVM_UPDATE=(LVM_FIRST+42)
LVM_SETITEMTEXTW=(LVM_FIRST+116)
LVM_GETITEMSPACING=(LVM_FIRST+51)
LVM_SETCOLUMNORDERARRAY=(LVM_FIRST+58)
LVM_GETHOTITEM=(LVM_FIRST+61)
LVM_GETHOTCURSOR=(LVM_FIRST+63)
LVM_GETTOOLTIPS=(LVM_FIRST+78)
LVM_GETGROUPINFO=(LVM_FIRST+149)
LVM_MOVEGROUP=(LVM_FIRST+151)
LVM_GETGROUPMETRICS=(LVM_FIRST+156)
LVM_SETTILEVIEWINFO=(LVM_FIRST+162)
LVM_GETTILEINFO=(LVM_FIRST+165)
LVM_GETINSERTMARKCOLOR=(LVM_FIRST+171)
LVM_ISGROUPVIEWENABLED=(LVM_FIRST+175)
TVM_GETITEMRECT=(TV_FIRST+4)
TVM_GETITEMW=(TV_FIRST+62)
TVM_SORTCHILDREN=(TV_FIRST+19)
TVM_GETISEARCHSTRINGW=(TV_FIRST+64)
TVM_SETINSERTMARK=(TV_FIRST+26)
TVM_SETUNICODEFORMAT=CCM_SETUNICODEFORMAT
TVM_GETUNICODEFORMAT=CCM_GETUNICODEFORMAT
TVM_SETITEMHEIGHT=(TV_FIRST+27)
TVM_GETBKCOLOR=(TV_FIRST+31)
TVM_GETSCROLLTIME=(TV_FIRST+34)
TVM_GETINSERTMARKCOLOR=(TV_FIRST+38)
TVM_GETLINECOLOR=(TV_FIRST+41)
CBEM_SETITEMA=(WM_USER+5)
CBEM_SETUNICODEFORMAT=CCM_SETUNICODEFORMAT
l
CBEM_GETUNICODEFORMAT=CCM_GETUNICODEFORMAT
CBEM_SETEXSTYLE=(WM_USER+8)
TCM_GETIMAGELIST=(TCM_FIRST+2)
TCM_GETITEMCOUNT=(TCM_FIRST+4)
TCM_GETITEMRECT=(TCM_FIRST+10)
TCM_SETCURSEL=(TCM_FIRST+12)
TCM_GETTOOLTIPS=(TCM_FIRST+45)
TCM_SETTOOLTIPS=(TCM_FIRST+46)
MCM_GETCURSEL=(MCM_FIRST+1)
MCM_SETMAXSELCOUNT=(MCM_FIRST+4)
MCM_SETSELRANGE=(MCM_FIRST+6)
MCM_GETMINREQRECT=(MCM_FIRST+9)
MCM_GETCOLOR=(MCM_FIRST+11)
MCM_GETTODAY=(MCM_FIRST+13)
MCM_SETUNICODEFORMAT=CCM_SETUNICODEFORMAT

MCM_GETUNICODEFORMAT=CCM_GETUNICODEFORMAT
DTM_FIRST=0x1000
DTM_GETSYSTEMTIME=(DTM_FIRST+1)
DTM_GETMCCOLOR=(DTM_FIRST+7)
PGM_GETBKCOLOR=(PGM_FIRST+5)
PGM_SETBUTTONSIZE=(PGM_FIRST+10)
BCM_SETIMAGELIST=(BCM_FIRST+0x0002)
BCM_GETTEXTMARGIN=(BCM_FIRST+0x0005)
EM_SETCUEBANNER=(ECM_FIRST+1)
EM_HIDEBALLOONTIP=(ECM_FIRST+4)
LM_GETITEM=(WM_USER+0x303)

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。



   本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5912214.html,如需转载请自行联系原作者


相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
10天前
|
C#
c# Gridview 点击checkbox 触发的事件
c# Gridview 点击checkbox 触发的事件
|
29天前
|
Java 数据库 C#
C#winforms实现windows窗体人脸识别
C#winforms实现windows窗体人脸识别
28 0
|
2月前
|
自然语言处理 C# Windows
C#开源免费的Windows右键菜单管理工具
C#开源免费的Windows右键菜单管理工具
|
3月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPISDK设置软件触发模式(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPISDK设置软件触发模式(C#)
38 1
|
7月前
|
人工智能 搜索推荐 C#
C#开源且免费的Windows桌面快速预览神器 - QuickLook
C#开源且免费的Windows桌面快速预览神器 - QuickLook
159 0
|
4月前
|
安全 C# Windows
C#开源的一个能利用Windows通知栏背单词的软件 - ToastFish
C#开源的一个能利用Windows通知栏背单词的软件 - ToastFish
|
3月前
|
API C# C++
微软官方发布的C#开源、免费、实用的Windows工具箱
微软官方发布的C#开源、免费、实用的Windows工具箱
|
4月前
|
JavaScript Linux C#
【傻瓜级JS-DLL-WINCC-PLC交互】1.C#用windows窗体控件创建.net控件
【傻瓜级JS-DLL-WINCC-PLC交互】1.C#用windows窗体控件创建.net控件
65 0
|
4月前
|
C# Windows
C#安装“Windows 窗体应用(.NET Framework)”
C#安装“Windows 窗体应用(.NET Framework)”
50 0
|
5月前
|
监控 C# Windows
内网桌面监控软件中的远程控制功能实现(基于C#和Windows Forms)
近年来,随着远程办公的兴起,对内网桌面监控软件的需求逐渐增加。本文将探讨如何通过C#和Windows Forms实现内网桌面监控软件中的远程控制功能,并在结尾部分介绍监控到的数据如何自动提交到网站。
279 0