Windows窗口消息分析

来源:互联网 发布:淘宝店铺身份证被盗用 编辑:程序博客网 时间:2024/05/17 23:47

     好像没有C/C++的代码提交格式,只好用了C#的格式,不知有没有错……

#include <windows.h>
#include 
<stdio.h>

LRESULT CALLBACK MyWinProc(
  HWND hwnd,      
// handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
);

void SendtoNotepad(char * szBuffer);

void ShowMessage(UINT uMsg,WPARAM wParam,LPARAM lParam);

unsigned 
int WM_NUM[]={
                         WM_NULL
                        ,WM_CREATE
                        ,WM_DESTROY
                        ,WM_MOVE
                        ,WM_SIZE
                        ,WM_ACTIVATE
                        ,WM_SETFOCUS
                        ,WM_KILLFOCUS
                        ,WM_ENABLE
                        ,WM_SETREDRAW
                        ,WM_SETTEXT
                        ,WM_GETTEXT
                        ,WM_GETTEXTLENGTH
                        ,WM_PAINT
                        ,WM_CLOSE
                        ,WM_QUERYENDSESSION
                        ,WM_QUIT
                        ,WM_QUERYOPEN
                        ,WM_ERASEBKGND
                        ,WM_SYSCOLORCHANGE
                        ,WM_ENDSESSION
                        ,WM_SHOWWINDOW
                        ,WM_WININICHANGE
                        ,WM_DEVMODECHANGE
                        ,WM_ACTIVATEAPP
                        ,WM_FONTCHANGE
                        ,WM_TIMECHANGE
                        ,WM_CANCELMODE
                        ,WM_SETCURSOR
                        ,WM_MOUSEACTIVATE
                        ,WM_CHILDACTIVATE
                        ,WM_QUEUESYNC
                        ,WM_GETMINMAXINFO
                        ,WM_PAINTICON
                        ,WM_ICONERASEBKGND
                        ,WM_NEXTDLGCTL
                        ,WM_SPOOLERSTATUS
                        ,WM_DRAWITEM
                        ,WM_MEASUREITEM
                        ,WM_DELETEITEM
                        ,WM_VKEYTOITEM
                        ,WM_CHARTOITEM
                        ,WM_SETFONT
                        ,WM_GETFONT
                        ,WM_SETHOTKEY
                        ,WM_GETHOTKEY
                        ,WM_QUERYDRAGICON
                        ,WM_COMPAREITEM
                        ,WM_COMPACTING
                        ,WM_COMMNOTIFY
                        ,WM_WINDOWPOSCHANGING
                        ,WM_WINDOWPOSCHANGED
                        ,WM_POWER
                        ,WM_COPYDATA
                        ,WM_CANCELJOURNAL
                        ,WM_NOTIFY
                        ,WM_INPUTLANGCHANGEREQUEST
                        ,WM_INPUTLANGCHANGE
                        ,WM_TCARD
                        ,WM_HELP
                        ,WM_USERCHANGED
                        ,WM_NOTIFYFORMAT
                        ,WM_CONTEXTMENU
                        ,WM_STYLECHANGING
                        ,WM_STYLECHANGED
                        ,WM_DISPLAYCHANGE
                        ,WM_GETICON
                        ,WM_SETICON
                        ,WM_NCCREATE
                        ,WM_NCDESTROY
                        ,WM_NCCALCSIZE
                        ,WM_NCHITTEST
                        ,WM_NCPAINT
                        ,WM_NCACTIVATE
                        ,WM_GETDLGCODE
                        ,WM_SYNCPAINT
                        ,WM_NCMOUSEMOVE
                        ,WM_NCLBUTTONDOWN
                        ,WM_NCLBUTTONUP
                        ,WM_NCLBUTTONDBLCLK
                        ,WM_NCRBUTTONDOWN
                        ,WM_NCRBUTTONUP
                        ,WM_NCRBUTTONDBLCLK
                        ,WM_NCMBUTTONDOWN
                        ,WM_NCMBUTTONUP
                        ,WM_NCMBUTTONDBLCLK
                        ,WM_KEYDOWN
                        ,WM_KEYUP
                        ,WM_CHAR
                        ,WM_DEADCHAR
                        ,WM_SYSKEYDOWN
                        ,WM_SYSKEYUP
                        ,WM_SYSCHAR
                        ,WM_SYSDEADCHAR
                        ,WM_KEYLAST
                        ,WM_INITDIALOG
                        ,WM_COMMAND
                        ,WM_SYSCOMMAND
                        ,WM_TIMER
                        ,WM_HSCROLL
                        ,WM_VSCROLL
                        ,WM_INITMENU
                        ,WM_INITMENUPOPUP
                        ,WM_MENUSELECT
                        ,WM_MENUCHAR
                        ,WM_ENTERIDLE
                        ,WM_CTLCOLORMSGBOX
                        ,WM_CTLCOLOREDIT
                        ,WM_CTLCOLORLISTBOX
                        ,WM_CTLCOLORBTN
                        ,WM_CTLCOLORDLG
                        ,WM_CTLCOLORSCROLLBAR
                        ,WM_CTLCOLORSTATIC
                        ,WM_MOUSEMOVE
                        ,WM_LBUTTONDOWN
                        ,WM_LBUTTONUP
                        ,WM_LBUTTONDBLCLK
                        ,WM_RBUTTONDOWN
                        ,WM_RBUTTONUP
                        ,WM_RBUTTONDBLCLK
                        ,WM_MBUTTONDOWN
                        ,WM_MBUTTONUP
                        ,WM_MBUTTONDBLCLK
                        ,WM_MOUSELAST
                        ,WM_PARENTNOTIFY
                        ,WM_ENTERMENULOOP
                        ,WM_EXITMENULOOP
                        ,WM_MDICREATE
                        ,WM_MDIDESTROY
                        ,WM_MDIACTIVATE
                        ,WM_MDIRESTORE
                        ,WM_MDINEXT
                        ,WM_MDIMAXIMIZE
                        ,WM_MDITILE
                        ,WM_MDICASCADE
                        ,WM_MDIICONARRANGE
                        ,WM_MDIGETACTIVE
                        ,WM_MDISETMENU
                        ,WM_DROPFILES
                        ,WM_MDIREFRESHMENU
                        ,WM_CUT
                        ,WM_COPY
                        ,WM_PASTE
                        ,WM_CLEAR
                        ,WM_UNDO
                        ,WM_RENDERFORMAT
                        ,WM_RENDERALLFORMATS
                        ,WM_DESTROYCLIPBOARD
                        ,WM_DRAWCLIPBOARD
                        ,WM_PAINTCLIPBOARD
                        ,WM_VSCROLLCLIPBOARD
                        ,WM_SIZECLIPBOARD
                        ,WM_ASKCBFORMATNAME
                        ,WM_CHANGECBCHAIN
                        ,WM_HSCROLLCLIPBOARD
                        ,WM_QUERYNEWPALETTE
                        ,WM_PALETTEISCHANGING
                        ,WM_PALETTECHANGED
                        ,WM_HOTKEY
                        ,WM_PRINT
                        ,WM_PRINTCLIENT
                        ,WM_PENWINFIRST
                        ,WM_PENWINLAST
                        ,WM_NEXTMENU
                        ,WM_SIZING
                        ,WM_CAPTURECHANGED
                        ,WM_MOVING
                        ,WM_POWERBROADCAST
                        ,WM_DEVICECHANGE
                        ,WM_ENTERSIZEMOVE
                        ,WM_EXITSIZEMOVE
                        }
;

char *WM_Char[]={
                         
"WM_NULL                  "
                        ,
"WM_CREATE                "
                        ,
"WM_DESTROY               "
                        ,
"WM_MOVE                  "
                        ,
"WM_SIZE                  "
                        ,
"WM_ACTIVATE              "
                        ,
"WM_SETFOCUS              "
                        ,
"WM_KILLFOCUS             "
                        ,
"WM_ENABLE                "
                        ,
"WM_SETREDRAW             "
                        ,
"WM_SETTEXT               "
                        ,
"WM_GETTEXT               "
                        ,
"WM_GETTEXTLENGTH         "
                        ,
"WM_PAINT                 "
                        ,
"WM_CLOSE                 "
                        ,
"WM_QUERYENDSESSION       "
                        ,
"WM_QUIT                  "
                        ,
"WM_QUERYOPEN             "
                        ,
"WM_ERASEBKGND            "
                        ,
"WM_SYSCOLORCHANGE        "
                        ,
"WM_ENDSESSION            "
                        ,
"WM_SHOWWINDOW            "
                        ,
"WM_WININICHANGE          "
                        ,
"WM_DEVMODECHANGE         "
                        ,
"WM_ACTIVATEAPP           "
                        ,
"WM_FONTCHANGE            "
                        ,
"WM_TIMECHANGE            "
                        ,
"WM_CANCELMODE            "
                        ,
"WM_SETCURSOR             "
                        ,
"WM_MOUSEACTIVATE         "
                        ,
"WM_CHILDACTIVATE         "
                        ,
"WM_QUEUESYNC             "
                        ,
"WM_GETMINMAXINFO         "
                        ,
"WM_PAINTICON             "
                        ,
"WM_ICONERASEBKGND        "
                        ,
"WM_NEXTDLGCTL            "
                        ,
"WM_SPOOLERSTATUS         "
                        ,
"WM_DRAWITEM              "
                        ,
"WM_MEASUREITEM           "
                        ,
"WM_DELETEITEM            "
                        ,
"WM_VKEYTOITEM            "
                        ,
"WM_CHARTOITEM            "
                        ,
"WM_SETFONT               "
                        ,
"WM_GETFONT               "
                        ,
"WM_SETHOTKEY             "
                        ,
"WM_GETHOTKEY             "
                        ,
"WM_QUERYDRAGICON         "
                        ,
"WM_COMPAREITEM           "
                        ,
"WM_COMPACTING            "
                        ,
"WM_COMMNOTIFY            "
                        ,
"WM_WINDOWPOSCHANGING     "
                        ,
"WM_WINDOWPOSCHANGED      "
                        ,
"WM_POWER                 "
                        ,
"WM_COPYDATA              "
                        ,
"WM_CANCELJOURNAL         "
                        ,
"WM_NOTIFY                "
                        ,
"WM_INPUTLANGCHANGEREQUEST"
                        ,
"WM_INPUTLANGCHANGE       "
                        ,
"WM_TCARD                 "
                        ,
"WM_HELP                  "
                        ,
"WM_USERCHANGED           "
                        ,
"WM_NOTIFYFORMAT          "
                        ,
"WM_CONTEXTMENU           "
                        ,
"WM_STYLECHANGING         "
                        ,
"WM_STYLECHANGED          "
                        ,
"WM_DISPLAYCHANGE         "
                        ,
"WM_GETICON               "
                        ,
"WM_SETICON               "
                        ,
"WM_NCCREATE              "
                        ,
"WM_NCDESTROY             "
                        ,
"WM_NCCALCSIZE            "
                        ,
"WM_NCHITTEST             "
                        ,
"WM_NCPAINT               "
                        ,
"WM_NCACTIVATE            "
                        ,
"WM_GETDLGCODE            "
                        ,
"WM_SYNCPAINT             "
                        ,
"WM_NCMOUSEMOVE           "
                        ,
"WM_NCLBUTTONDOWN         "
                        ,
"WM_NCLBUTTONUP           "
                        ,
"WM_NCLBUTTONDBLCLK       "
                        ,
"WM_NCRBUTTONDOWN         "
                        ,
"WM_NCRBUTTONUP           "
                        ,
"WM_NCRBUTTONDBLCLK       "
                        ,
"WM_NCMBUTTONDOWN         "
                        ,
"WM_NCMBUTTONUP           "
                        ,
"WM_NCMBUTTONDBLCLK       "
                        ,
"WM_KEYDOWN               "
                        ,
"WM_KEYUP                 "
                        ,
"WM_CHAR                  "
                        ,
"WM_DEADCHAR              "
                        ,
"WM_SYSKEYDOWN            "
                        ,
"WM_SYSKEYUP              "
                        ,
"WM_SYSCHAR               "
                        ,
"WM_SYSDEADCHAR           "
                        ,
"WM_KEYLAST               "
                        ,
"WM_INITDIALOG            "
                        ,
"WM_COMMAND               "
                        ,
"WM_SYSCOMMAND            "
                        ,
"WM_TIMER                 "
                        ,
"WM_HSCROLL               "
                        ,
"WM_VSCROLL               "
                        ,
"WM_INITMENU              "
                        ,
"WM_INITMENUPOPUP         "
                        ,
"WM_MENUSELECT            "
                        ,
"WM_MENUCHAR              "
                        ,
"WM_ENTERIDLE             "
                        ,
"WM_CTLCOLORMSGBOX        "
                        ,
"WM_CTLCOLOREDIT          "
                        ,
"WM_CTLCOLORLISTBOX       "
                        ,
"WM_CTLCOLORBTN           "
                        ,
"WM_CTLCOLORDLG           "
                        ,
"WM_CTLCOLORSCROLLBAR     "
                        ,
"WM_CTLCOLORSTATIC        "
                        ,
"WM_MOUSEMOVE             "
                        ,
"WM_LBUTTONDOWN           "
                        ,
"WM_LBUTTONUP             "
                        ,
"WM_LBUTTONDBLCLK         "
                        ,
"WM_RBUTTONDOWN           "
                        ,
"WM_RBUTTONUP             "
                        ,
"WM_RBUTTONDBLCLK         "
                        ,
"WM_MBUTTONDOWN           "
                        ,
"WM_MBUTTONUP             "
                        ,
"WM_MBUTTONDBLCLK         "
                        ,
"WM_MOUSELAST             "
                        ,
"WM_PARENTNOTIFY          "
                        ,
"WM_ENTERMENULOOP         "
                        ,
"WM_EXITMENULOOP          "
                        ,
"WM_MDICREATE             "
                        ,
"WM_MDIDESTROY            "
                        ,
"WM_MDIACTIVATE           "
                        ,
"WM_MDIRESTORE            "
                        ,
"WM_MDINEXT               "
                        ,
"WM_MDIMAXIMIZE           "
                        ,
"WM_MDITILE               "
                        ,
"WM_MDICASCADE            "
                        ,
"WM_MDIICONARRANGE        "
                        ,
"WM_MDIGETACTIVE          "
                        ,
"WM_MDISETMENU            "
                        ,
"WM_DROPFILES             "
                        ,
"WM_MDIREFRESHMENU        "
                        ,
"WM_CUT                   "
                        ,
"WM_COPY                  "
                        ,
"WM_PASTE                 "
                        ,
"WM_CLEAR                 "
                        ,
"WM_UNDO                  "
                        ,
"WM_RENDERFORMAT          "
                        ,
"WM_RENDERALLFORMATS      "
                        ,
"WM_DESTROYCLIPBOARD      "
                        ,
"WM_DRAWCLIPBOARD         "
                        ,
"WM_PAINTCLIPBOARD        "
                        ,
"WM_VSCROLLCLIPBOARD      "
                        ,
"WM_SIZECLIPBOARD         "
                        ,
"WM_ASKCBFORMATNAME       "
                        ,
"WM_CHANGECBCHAIN         "
                        ,
"WM_HSCROLLCLIPBOARD      "
                        ,
"WM_QUERYNEWPALETTE       "
                        ,
"WM_PALETTEISCHANGING     "
                        ,
"WM_PALETTECHANGED        "
                        ,
"WM_HOTKEY                "
                        ,
"WM_PRINT                 "
                        ,
"WM_PRINTCLIENT           "
                        ,
"WM_PENWINFIRST           "
                        ,
"WM_PENWINLAST            "
                        ,
"WM_NEXTMENU              "
                        ,
"WM_SIZING                "
                        ,
"WM_CAPTURECHANGED        "
                        ,
"WM_MOVING                "
                        ,
"WM_POWERBROADCAST        "
                        ,
"WM_DEVICECHANGE          "
                        ,
"WM_ENTERSIZEMOVE         "
                        ,
"WM_EXITSIZEMOVE          "
                        ,
"Cann't find the message! "
                }
;

int WINAPI WinMain(
  HINSTANCE hInstance,      
// handle to current instance
  HINSTANCE hPrevInstance,  // handle to previous instance
  LPSTR lpCmdLine,          // command line
  int    nCmdShow           // show state
)
{

    WNDCLASS wndcls;
    wndcls.cbClsExtra
=0;
    wndcls.cbWndExtra
=0;
//    wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_PEN);
    wndcls.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
    wndcls.hCursor
=LoadCursor(NULL,IDC_CROSS);
    wndcls.hIcon
=LoadIcon(NULL,IDI_WINLOGO);
    wndcls.hInstance
=hInstance;
    wndcls.lpfnWndProc
=MyWinProc;
    wndcls.lpszClassName
="Mywin2007";
    wndcls.lpszMenuName
=NULL;
    wndcls.style
=CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;//CS_DBLCLKS双击

    RegisterClass(
&wndcls);

    HWND hwnd;

    SendtoNotepad(
"Creating Window... ");
    hwnd
=CreateWindow("Mywin2007","为什么我的眼里常含泪水……",WS_OVERLAPPEDWINDOW/*|WS_HSCROLL|WS_VSCROLL*/,
        
0,0,300,200,NULL,NULL,hInstance,NULL);
    SendtoNotepad(
"CreateWindow end ");

    SendtoNotepad(
"Showing Window... ");
    ShowWindow(hwnd,SW_SHOWNORMAL);
    SendtoNotepad(
"ShowWindow end ");

    SendtoNotepad(
"Updating Window... ");
    UpdateWindow(hwnd);
    SendtoNotepad(
"UpdateWindow end ");

    MSG msg;
    
char szBuffer[50];
    
while(SendtoNotepad("Getting Message... "),GetMessage(&msg,NULL,0,0))
    
{
        wsprintf(szBuffer,
"[%04x]Message gotten ",msg.message);
        SendtoNotepad(szBuffer);

        TranslateMessage(
&msg);

        SendtoNotepad(
"Dispatching Message... ");
        DispatchMessage(
&msg);
        SendtoNotepad(
"DispatchMessage end ");
    }

    
return 0;
}


LRESULT CALLBACK MyWinProc(
  HWND hwnd,      
// handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
)
{
    ShowMessage(uMsg,wParam,lParam);

    
switch(uMsg)
    
{
    
case WM_LBUTTONDOWN:
        HDC hdc;
        hdc
=GetDC(hwnd);
        TextOut(hdc,
0,50,"http://better0332.bog.sohu.com",strlen("http://better0332.bog.sohu.com"));
        ReleaseDC(hwnd,hdc);
        
break;
    
case WM_LBUTTONDBLCLK:
         MessageBox(hwnd,
"mouse DBLCLKED","Hello",0);
         
break;
    
case WM_PAINT:
        HDC hDC;
        PAINTSTRUCT ps;
        hDC
=BeginPaint(hwnd,&ps);
        TextOut(hDC,
0,0,"Hello everyone!!",strlen("Hello everyone!!"));
        EndPaint(hwnd,
&ps);
        
break;
    
case WM_CLOSE:
        
if(IDYES==MessageBox(hwnd,"是否真的结束?","My VC++,Fighting!!",MB_YESNO))
        
{
            DestroyWindow(hwnd);
        }

        
break;
    
case WM_DESTROY:
        PostQuitMessage(
0);
        
break;
    
default:
        
return DefWindowProc(hwnd,uMsg,wParam,lParam);
    }

    
return 0;
}


void SendtoNotepad(char *szBuffer)
{
    POINT pointclient
={20,20};
    HWND hWinNotepad;
    hWinNotepad
=FindWindow("Notepad",NULL);
    
if(hWinNotepad)
    
{
        hWinNotepad
=ChildWindowFromPoint(hWinNotepad,pointclient);
        
for(int i=0;i<strlen(szBuffer);i++)
            PostMessage(hWinNotepad,WM_CHAR,
*(szBuffer+i),1);
    }


}


void ShowMessage(UINT uMsg,WPARAM wParam,LPARAM lParam)
{
    
int i;
    
char szBuffer[100];
    
for(i=0;i<171;i++)
    
{
        
if(WM_NUM[i]==uMsg)    break;
    }

    wsprintf(szBuffer,
"WndProc: [%04x]%s %08x %08x ",uMsg,WM_Char[i],wParam,lParam);
    SendtoNotepad(szBuffer);
}
原创粉丝点击