#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.../r"); hwnd=CreateWindow("Mywin2007","为什么我的眼里常含泪水……",WS_OVERLAPPEDWINDOW/*|WS_HSCROLL|WS_VSCROLL*/, 0,0,300,200,NULL,NULL,hInstance,NULL); SendtoNotepad("CreateWindow end/r"); SendtoNotepad("Showing Window.../r"); ShowWindow(hwnd,SW_SHOWNORMAL); SendtoNotepad("ShowWindow end/r"); SendtoNotepad("Updating Window.../r"); UpdateWindow(hwnd); SendtoNotepad("UpdateWindow end/r"); MSG msg; char szBuffer[50]; while(SendtoNotepad("Getting Message.../r"),GetMessage(&msg,NULL,0,0)) { wsprintf(szBuffer,"[%04x]Message gotten/r",msg.message); SendtoNotepad(szBuffer); TranslateMessage(&msg); SendtoNotepad("Dispatching Message.../r"); DispatchMessage(&msg); SendtoNotepad("DispatchMessage end/r"); } 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/r",uMsg,WM_Char[i],wParam,lParam); SendtoNotepad(szBuffer); }