程序代码:  
 
#include<windows.h>  
#include<stdlib.h>  
#include<windows.h>  
long  WINAPI  WndProc(HWND  hWnd,UINT  iMessage,UINT  wParam,LONG  iParam);  
RECT  rect;  
long  cxChar,cyChar;  
//----------------------主函数------------------------------------------------------------  
int  WINAPI  WinMain(HINSTANCE  hInstance,HINSTANCE  hPrevInstance,LPSTR  lpCmdLine,int  nCmdShow)  
   
{  
       
     MSG  Message;  
     static  char  szAppName[]="KMessage";  
     HWND  hWnd;  
     WNDCLASS  WndClass;  
     if(!hPrevInstance)  
     {WndClass.style=CS_HREDRAW  &brvbar;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.lpszClassName=szAppName;//  
       WndClass.lpszMenuName=NULL;//  
       return  RegisterClass(&WndClass);  
     }  
     hWnd=CreateWindow("WinFill","填充示例程序",  
                                             WS_OVERLAPPEDWINDOW,  
                                           CW_USEDEFAULT,0,  
                                                               CW_USEDEFAULT,0,  
                                                               NULL,NULL,  
                                                               hInstance,NULL);  
     ShowWindow(hWnd,nCmdShow);  
     UpdateWindow(hWnd);  
           
     while(GetMessage(&Message,0,0,0))  
     {  
       TranslateMessage(&Message);  
           DispatchMessage(&Message);  
     }  
   return  Message.wParam;  
 
}  
//----------------------ShowKey()函数实现----------------------------  
void  ShowKey(HWND  hWnd,int  iType,char  *szMessage,UINT  wParam,LONG  lParam)  
{  
           static  char  *szFormat[2]={"%-14s  %3d          %c  %6u  %4d  %3s  %3s  %4s",  
                                                               "%-14s          %3d  %c  %6u  %4d  %3s  %3s  %4s"  };  
           char  szBuffer[80];  
           HDC  hdc;  
           ScrollWindow(hWnd,0,-cyChar,&rect,&rect);  
           hdc=GetDC(hWnd);  
           SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));  
           TextOut(hdc,cxChar,rect.bottom-cyChar,szBuffer,  
                                     wsprintf(szBuffer,szFormat[iType],  
                                                     (LPSTR)szMessage,wParam,  
                                                     (BYTE)(iType?  wParam  :''),/////////第59行出错的,不知道为什么??  
                                                             LOWORD(lParam),  
                                                             HIWORD(lParam)&0xFF,  
                                                             (LPSTR)(0x01000000&lParam?  "yes":"no"),  
                                                             (LPSTR)(0x20000000&lParam?  "yes":"no"),  
                                                             (LPSTR)(0x40000000&lParam?  "Down":"Up"),  
                                                             (LPSTR)(0x80000000&lParam?  "Up":"Down")));  
           ReleaseDC(hWnd,hdc);  
           ValidateRect(hWnd,NULL);  
}  
 
 
 //----------------------WndProc函数实现----------------------------  
LRESULT  CALLBACK  WndProc(HWND  hWnd,  UINT  Message,  UINT  wParam,  LONG  lParam)  
     {  
           static  char  szTop[]="Message      Key  Char  Repeat  Scan  Ext  ALT  Prev  Tran";  
           static  char  szUnd[]="_______      ___  ____  ______  ____  ___  ___  ____  ____";  
           HDC  hdc;  
           PAINTSTRUCT  ps;//ps  
           TEXTMETRIC  tm;  
       switch(Message)  
           {          
             case    WM_CREATE:  
                     hdc=GetDC(hWnd);  
                             SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));  
                             GetTextMetrics(hdc,&tm);  
                             cxChar=tm.tmAveCharWidth;  
                             cyChar=tm.tmHeight;  
                             ReleaseDC(hWnd,hdc);  
                             rect.top=3*cyChar/2;  
                             return  0;  
         case    WM_SIZE:  
                             rect.right=LOWORD(lParam);  
                             rect.bottom  =HIWORD(lParam);  
                             UpdateWindow(hWnd);  
                             return  0;  
         case    WM_PAINT:  
                               
                             InvalidateRect(hWnd,NULL,TRUE);  
                             hdc=BeginPaint(hWnd,&ps);  
                             SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));  
                             SetBkMode(hdc,TRANSPARENT);  
                             TextOut(hdc,cxChar,cyChar/2,szTop,(sizeof  szTop)-1);  
                     TextOut(hdc,cxChar,cyChar/2,szUnd,(sizeof  szUnd)-1);  
                     EndPaint(hWnd,&ps);  
                             return  0;  
             case    WM_KEYDOWN:  
                             ShowKey(hWnd,0,"WM_KEYDOWN",wParam,lParam);  
                             return  0;  
         case    WM_KEYUP:  
                             ShowKey(hWnd,0,"WM_KEYUP",wParam,lParam);  
                             return  0;  
         case    WM_CHAR:  
                             ShowKey(hWnd,1,"WM_CHAR",wParam,lParam);  
                             return  0;  
         case    WM_DEADCHAR:  
                             ShowKey(hWnd,1,"WM_DEADCHAR",wParam,lParam);  
                             return  0;  
         case    WM_SYSKEYDOWN:  
                             ShowKey(hWnd,1,"WM_SYSKEYDOWN",wParam,lParam);  
                             return  0;  
         case    WM_SYSKEYUP:  
                             ShowKey(hWnd,1,"WM_SYSKEYUP",wParam,lParam);  
                             return  0;  
             case    WM_SYSCHAR:  
                             ShowKey(hWnd,1,"WM_SYSCHAR",wParam,lParam);  
                             return  0;  
         case    WM_SYSDEADCHAR:  
                             ShowKey(hWnd,1,"WM_SYSDEADCHAR",wParam,lParam);  
                             return  0;  
             case  WM_DESTROY:  
                           PostQuitMessage(0);  
                                       return  0;  
                   
           }  
           return    DefWindowProc(hWnd,Message,wParam,lParam);  
     }  
 
出错原因:  
 
--------------------Configuration:  键盘_1  -  Win32  Debug--------------------  
Compiling...  
键盘_1.cpp  
D:\坎坎坷坷\MyProjects\键盘_1\键盘_1.cpp(59)  :  error  C2137:  empty  character  constant  
Error  executing  cl.exe.  
 
键盘_1.exe  -  1  error(s),  0  warning(s)  

解决方案 »

  1.   

    TextOut(hdc,cxChar,rect.bottom-cyChar,szBuffer,  
                                         wsprintf(szBuffer,szFormat[iType],  
                                                         (LPSTR)szMessage,wParam,  
                                                         (BYTE)(iType?  wParam  :''),/////////第59行出错的,不知道为什么??
    ''中间没有字符,看你的意思应该是要输出空格吧 ' '
      

  2.   

    #include<windows.h>  
    #include<stdlib.h> 
    // 这里的那个包含是个多余,我给你去掉了。 
    long  WINAPI  WndProc(HWND  hWnd,UINT  iMessage,UINT  wParam,LONG  iParam);  
    RECT  rect;  
    long  cxChar,cyChar;  
    //----------------------主函数------------------------------------------------------------  
    int  WINAPI  WinMain(HINSTANCE  hInstance,HINSTANCE  hPrevInstance,LPSTR  lpCmdLine,int  nCmdShow)  
       
    {  
           
         MSG  Message;  
         static  char  szAppName[]="KMessage";  
         HWND  hWnd;  
         WNDCLASS  WndClass;  
         if(!hPrevInstance)  
         {WndClass.style=CS_HREDRAW | CS_VREDRAW;//  这里的&brvbar;需要改成|
           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.lpszClassName=szAppName;//  
           WndClass.lpszMenuName=NULL;//  
           RegisterClass(&WndClass); // 这里不能return,不然没创建窗口就over了 
         }  
         hWnd=CreateWindow(szAppName,"填充示例程序",  // 窗口类当然要用你刚刚注册的窗口类
                                                 WS_OVERLAPPEDWINDOW,  
                                               CW_USEDEFAULT,0,  
                                                                   CW_USEDEFAULT,0,  
                                                                   NULL,NULL,  
                                                                   hInstance,NULL);  
         ShowWindow(hWnd,nCmdShow);  
         UpdateWindow(hWnd);  
               
         while(GetMessage(&Message,0,0,0))  
         {  
           TranslateMessage(&Message);  
               DispatchMessage(&Message);  
         }  
       return  Message.wParam;  
     
    }  
    //----------------------ShowKey()函数实现----------------------------  
    void  ShowKey(HWND  hWnd,int  iType,char  *szMessage,UINT  wParam,LONG  lParam)  
    {  
               static  char  *szFormat[2]={"%-14s  %3d          %c  %6u  %4d  %3s  %3s  %4s",  
                                                                   "%-14s          %3d  %c  %6u  %4d  %3s  %3s  %4s"  };  
               char  szBuffer[80];  
               HDC  hdc;  
               ScrollWindow(hWnd,0,-cyChar,&rect,&rect);  
               hdc=GetDC(hWnd);  
               SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));  
               TextOut(hdc,cxChar,rect.bottom-cyChar,szBuffer,  
                                         wsprintf(szBuffer,szFormat[iType],  
                                                         (LPSTR)szMessage,wParam,  
                                                         (BYTE)(iType?  wParam  :0),// 既然不让用空字符就用0代替
                                                                 LOWORD(lParam),  
                                                                 HIWORD(lParam)&0xFF,  
                                                                 (LPSTR)(0x01000000&lParam?  "yes":"no"),  
                                                                 (LPSTR)(0x20000000&lParam?  "yes":"no"),  
                                                                 (LPSTR)(0x40000000&lParam?  "Down":"Up"),  
                                                                 (LPSTR)(0x80000000&lParam?  "Up":"Down")));  
               ReleaseDC(hWnd,hdc);  
               ValidateRect(hWnd,NULL);  
    }  
     
     
     //----------------------WndProc函数实现----------------------------  
    LRESULT  CALLBACK  WndProc(HWND  hWnd,  UINT  Message,  UINT  wParam,  LONG  lParam)  
         {  
               static  char  szTop[]="Message      Key  Char  Repeat  Scan  Ext  ALT  Prev  Tran";  
               static  char  szUnd[]="_______      ___  ____  ______  ____  ___  ___  ____  ____";  
               HDC  hdc;  
               PAINTSTRUCT  ps;//ps  
               TEXTMETRIC  tm;  
           switch(Message)  
               {          
                 case    WM_CREATE:  
                         hdc=GetDC(hWnd);  
                                 SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));  
                                 GetTextMetrics(hdc,&tm);  
                                 cxChar=tm.tmAveCharWidth;  
                                 cyChar=tm.tmHeight;  
                                 ReleaseDC(hWnd,hdc);  
                                 rect.top=3*cyChar/2;  
                                 return  0;  
             case    WM_SIZE:  
                                 rect.right=LOWORD(lParam);  
                                 rect.bottom  =HIWORD(lParam);  
                                 UpdateWindow(hWnd);  
                                 return  0;  
             case    WM_PAINT:  
                                   
                                 InvalidateRect(hWnd,NULL,TRUE);  
                                 hdc=BeginPaint(hWnd,&ps);  
                                 SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));  
                                 SetBkMode(hdc,TRANSPARENT);  
                                 TextOut(hdc,cxChar,cyChar/2,szTop,(sizeof  szTop)-1);  
                         TextOut(hdc,cxChar,cyChar/2,szUnd,(sizeof  szUnd)-1);  
                         EndPaint(hWnd,&ps);  
                                 return  0;  
                 case    WM_KEYDOWN:  
                                 ShowKey(hWnd,0,"WM_KEYDOWN",wParam,lParam);  
                                 return  0;  
             case    WM_KEYUP:  
                                 ShowKey(hWnd,0,"WM_KEYUP",wParam,lParam);  
                                 return  0;  
             case    WM_CHAR:  
                                 ShowKey(hWnd,1,"WM_CHAR",wParam,lParam);  
                                 return  0;  
             case    WM_DEADCHAR:  
                                 ShowKey(hWnd,1,"WM_DEADCHAR",wParam,lParam);  
                                 return  0;  
             case    WM_SYSKEYDOWN:  
                                 ShowKey(hWnd,1,"WM_SYSKEYDOWN",wParam,lParam);  
                                 return  0;  
             case    WM_SYSKEYUP:  
                                 ShowKey(hWnd,1,"WM_SYSKEYUP",wParam,lParam);  
                                 return  0;  
                 case    WM_SYSCHAR:  
                                 ShowKey(hWnd,1,"WM_SYSCHAR",wParam,lParam);  
                                 return  0;  
             case    WM_SYSDEADCHAR:  
                                 ShowKey(hWnd,1,"WM_SYSDEADCHAR",wParam,lParam);  
                                 return  0;  
                 case  WM_DESTROY:  
                               PostQuitMessage(0);  
                                           return  0;  
                       
               }  
               return    DefWindowProc(hWnd,Message,wParam,lParam);  
         }
      

  3.   

    补充楼上一下!
    最关键的地方! hWnd=CreateWindow(szAppName,"填充示例程序",  // 窗口类当然要用你刚刚注册的窗口类
                                                 WS_OVERLAPPEDWINDOW,  
                                               CW_USEDEFAULT,0,  
                                                                   CW_USEDEFAULT,0,  
                                                                   NULL,NULL,  
                                                                   hInstance,NULL);  这里的第一个参数应该是你注册窗口时的名称即:szAppName,而不是WinFill。