#include <windows.h>
#define ID_EDIT     
1
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
LRESULT 
CALLBACK NewWndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM 
lParam);
WNDPROC OldWndProc;
static HINSTANCE hIns;
char 
temp[505];
TCHAR szAppName[] = TEXT ("Lab11") ;
int WINAPI WinMain 
(HINSTANCE hInstance, HINSTANCE 
hPrevInstance,
                    
PSTR szCmdLine, int iCmdShow)
{
     
HWND     hwnd ;
     
MSG      msg ;
     WNDCLASS 
wndclass ;
     
     
wndclass.style         = CS_HREDRAW | 
CS_VREDRAW ;
     wndclass.lpfnWndProc   = 
WndProc ;
     wndclass.cbClsExtra    = 0 
;
     wndclass.cbWndExtra    = 0 
;
     wndclass.hInstance     = 
hInstance ;
     
wndclass.hIcon         = LoadIcon (NULL, 
IDI_APPLICATION) ;
     
wndclass.hCursor       = LoadCursor (NULL, 
IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) 
GetStockObject (WHITE_BRUSH) ;
     
wndclass.lpszMenuName  = NULL ;
     
wndclass.lpszClassName = szAppName ;
    
 
     if (!RegisterClass 
(&wndclass))
     
{
          MessageBox (NULL, 
TEXT ("Failed to 
RegisterClass!"),
                      
szAppName, MB_ICONERROR) 
;
          return 0 
;
     }
    
 
     hwnd = CreateWindow (szAppName, 
szAppName,
                          
WS_OVERLAPPEDWINDOW,
                          
CW_USEDEFAULT, 
CW_USEDEFAULT,
                          
CW_USEDEFAULT, 
CW_USEDEFAULT,
                          
NULL, NULL, hInstance, NULL) ;
    
 
     ShowWindow (hwnd, iCmdShow) 
;
     UpdateWindow (hwnd) ; 
    
 
     while (GetMessage (&msg, NULL, 0, 
0))
     
{
          TranslateMessage 
(&msg) ;
          
DispatchMessage (&msg) ;
     
}
     return msg.wParam ;
}
LRESULT CALLBACK 
WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM 
lParam)
{
     static HWND hwndEdit 
;
     
     switch 
(message)
     {
     case 
WM_CREATE :
          
hIns=((LPCREATESTRUCT)lParam)->hInstance;
          
hwndEdit = CreateWindow (TEXT ("edit"), 
NULL,
                         
WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL 
|
                                   
WS_BORDER | ES_LEFT | ES_MULTILINE 
|
                                   
ES_AUTOHSCROLL | 
ES_AUTOVSCROLL,
                         
0, 0, 0, 0, hwnd, (HMENU) 
ID_EDIT,
                         
((LPCREATESTRUCT) lParam) -> hInstance, NULL) ;
   
       
OldWndProc=(WNDPROC)SetWindowLong(hwndEdit,GWL_WNDPROC,(long)NewWndProc);
          
return 0 ;
         
 
     case WM_SETFOCUS 
:
          SetFocus (hwndEdit) 
;
          return 0 
;
         
 
     case WM_SIZE : 
          MoveWindow (hwndEdit, 
0, 0, LOWORD (lParam), HIWORD (lParam), TRUE) 
;
          return 0 
;
         
 
     case WM_COMMAND 
:
          if (LOWORD (wParam) 
== 
ID_EDIT){
               
if (HIWORD (wParam) == EN_ERRSPACE || 
                         
HIWORD (wParam) == 
EN_MAXTEXT)
                    
MessageBox (hwnd, TEXT ("Edit control out of 
space."),
                                
szAppName, MB_OK | MB_ICONSTOP) ;
       
   }
         
 
          return 0 
;
              
 
     case WM_DESTROY 
:
          PostQuitMessage (0) 
;
          return 0 
;
     }
     return DefWindowProc 
(hwnd, message, wParam, lParam) ;
     
}
POINT 
p;
char num[][10]={"January","September"};
LRESULT CALLBACK 
NewWndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM 
lParam)
{
    HMENU 
hMenu,hMenuTrackPopup;
    switch(message){
   
 case WM_KEYDOWN:
       
 switch(wParam){
        case 
VK_F1:
            MessageBox 
(hWnd, TEXT ("需要的信息!"),szAppName, MB_OK | MB_ICONINFORMATION) ;
   
         break;
   
     }
       
 break;
    case WM_RBUTTONDOWN:
   
    
 hMenu=LoadMenu(hIns,MAKEINTRESOURCE(101));
   
     hMenuTrackPopup=GetSubMenu(hMenu,0);
   
     p.x=LOWORD(lParam);
       
 p.y=HIWORD(lParam);
       
 ClientToScreen(hWnd,&p);
       
 TrackPopupMenu(hMenuTrackPopup,TPM_TOPALIGN|TPM_LEFTALIGN,p.x,p.y,0,hWnd,0);
   
     break;
    case 
WM_COMMAND:
       
 switch(LOWORD(wParam)){
          
case 40001:
              
memset(temp,0,sizeof(temp));
       
       
SendMessageA(hWnd,WM_GETTEXT,500,(LPARAM)&temp);
   
           
strcat(temp,num[0]);
           
   
SendMessageA(hWnd,WM_SETTEXT,500,(LPARAM)&temp);
   
           //MessageBox (hWnd, TEXT 
("1"),szAppName, MB_OK | MB_ICONINFORMATION) ;
   
           break;
   
       case 40002:
       
       //MessageBox (hWnd, TEXT ("2"),szAppName, MB_OK 
| MB_ICONINFORMATION) ;
           
   memset(temp,0,sizeof(temp));
       
       
SendMessageA(hWnd,WM_GETTEXT,500,(LPARAM)&temp);
   
           
strcat(temp,num[1]);
           
   
SendMessageA(hWnd,WM_SETTEXT,500,(LPARAM)&temp);
   
           break;
   
       }
       
 break;
    }
   return 
CallWindowProc(OldWndProc,hWnd,message,wParam,lParam);
}
原文地址:http://www.cnblogs.com/experiments-of-ORLAN/p/3765521.html