#include "myWin.h" static TCHAR str[128], strStat[128],strW[2]; void procKeyDown(HWND hw, WPARAM wp,LPARAM lp){ if(wp==VK_SHIFT) lstrcpy(strStat,TEXT("シフトキーが押されました。")); wsprintf(str,TEXT("Key Down Character =%04Xh"),wp); InvalidateRect(hw,NULL,TRUE); } void procKeyUp(HWND hw, WPARAM wp,LPARAM lp){ if(wp==VK_SHIFT) return ; if(GetKeyState(VK_SHIFT)<0) lstrcpy(strStat,TEXT("シフトキーが押されています。")); else lstrcpy(strStat,TEXT("シフトキーは押されていません。")); InvalidateRect(hw,NULL,TRUE); } void procPaint(HWND hw, WPARAM wp,LPARAM lp){ PAINTSTRUCT ps; HDC hdc=BeginPaint(hw,&ps); TextOut(hdc,10, 10,str ,lstrlen(str )); TextOut(hdc,10, 60,strW ,lstrlen(strW )); TextOut(hdc,10,100,strStat,lstrlen(strStat)); EndPaint(hw,&ps); } void procChar(HWND hw, WPARAM wp,LPARAM lp){ strW[0]=wp; strW[1]=0; InvalidateRect(hw,NULL,TRUE); } LRESULT CALLBACK WndProc(HWND hw, UINT msg, WPARAM wp,LPARAM lp){ switch(msg){ case WM_DESTROY : PostQuitMessage(0) ; return 0; case WM_KEYDOWN : procKeyDown(hw,wp,lp); return 0; case WM_KEYUP : procKeyUp (hw,wp,lp); return 0; case WM_CHAR : procChar (hw,wp,lp); return 0; case WM_PAINT : procPaint (hw,wp,lp); return 0; } return DefWindowProc(hw,msg,wp,lp); }