どうしたらいいのでしょう。
#include <windows.h> LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp); ATOM InitApp(HINSTANCE hInst); BOOL InitInstance(HINSTANCE hInst, int nCmdShow); void DrawChessboard(HDC,short,short); BOOL GetCurPos(short*,short*,LPARAM); char szClassName[/url] = "WinChess"; //ウィンドウクラス char *kihu[8][8]={ {"r","p","","","","","P","R"}, {"n","p","","","","","P","N"}, {"b","p","","","","","P","R"}, {"q","p","","","","","P","Q"}, {"k","p","","","","","P","K"}, {"b","p","","","","","P","B"}, {"n","p","","","","","P","N"}, {"r","p","","","","","P","R"}}; int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,LPSTR lpsCmdLine, int nCmdShow){ MSG msg; BOOL bRet; if (!InitApp(hCurInst)) return FALSE; if (!InitInstance(hCurInst, nCmdShow)) return FALSE; while ((bRet=GetMessage(&msg, NULL, 0, 0))!=0) { if (bRet == -1) { break; } else{ TranslateMessage(&msg); DispatchMessage(&msg); } } return (int)msg.wParam; } //ウィンドウ・クラスの登録 ATOM InitApp(HINSTANCE hInst){ WNDCLASSEX wc; wc.cbSize=sizeof(WNDCLASSEX); wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; wc.lpfnWndProc=WndProc; //プロシージャ名 wc.cbClsExtra=0; wc.cbWndExtra=0; wc.hInstance=hInst;//インスタンス wc.hIcon=(HICON)LoadImage(NULL, MAKEINTRESOURCE(IDI_APPLICATION), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_SHARED); wc.hCursor=(HCURSOR)LoadImage(NULL, MAKEINTRESOURCE(IDC_ARROW), IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE | LR_SHARED); wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszMenuName=NULL; //メニュー名 wc.lpszClassName=(LPCSTR)szClassName; wc.hIconSm=NULL; return (RegisterClassEx(&wc)); } //ウィンドウの生成 BOOL InitInstance(HINSTANCE hInst, int nCmdShow){ HWND hWnd; hWnd=CreateWindow(szClassName, "Winchess", //タイトルバーにこの名前が表示されます WS_OVERLAPPEDWINDOW & ~WS_THICKFRAME & ~WS_MAXIMIZEBOX, 50, //X座標 50, //Y座標 450, //幅 450, //高さ NULL, //親ウィンドウのハンドル、親を作るときはNULL NULL, //メニューハンドル、クラスメニューを使うときはNULL hInst, //インスタンスハンドル NULL); if (!hWnd) return FALSE; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE; } //座標特定 BOOL GetCurPos(short *x,short *y,LPARAM lp){ POINTS point; int temp; point=MAKEPOINTS(lp); if(point.x<10 || point.x>410 || point.y<10 || point.y>410)return FALSE; temp=(point.x-10)%50; temp=point.x-10-temp; *x=temp/50; temp=(point.y-10)%50; temp=point.y-10-temp; *y=temp/50; return TRUE; } //チェス盤の描画 void DrawChessboard(HDC hdc,short x,short y){ int i,j; HPEN hBoldPen,hOldPen; HBRUSH hOldBrush,hNullBrush,hGreenBrush; HFONT hFont,hOldFont; //初期化 hBoldPen=CreatePen(PS_SOLID,5,RGB(255,0,0)); hNullBrush=(HBRUSH)GetStockObject(NULL_BRUSH); hGreenBrush=CreateSolidBrush(RGB(0,140,20)); hOldBrush=(HBRUSH)SelectObject(hdc,hGreenBrush); hFont=CreateFont(35,0,0,0 ,FW_SEMIBOLD ,FALSE,FALSE,FALSE ,SHIFTJIS_CHARSET ,OUT_DEFAULT_PRECIS ,CLIP_DEFAULT_PRECIS ,DEFAULT_QUALITY ,DEFAULT_PITCH | FF_DONTCARE ,"MS ゴシック"); hOldFont=(HFONT)SelectObject(hdc,hFont); //初期化終了 for(i=0;i<8;i++){ for(j=0;j<8;j++){ if((i+j)%2)SelectObject(hdc,hGreenBrush); else SelectObject(hdc,hOldBrush); Rectangle(hdc,10+i*50,10+j*50,60+i*50,60+j*50); } } hOldPen=(HPEN)SelectObject(hdc,hBoldPen); SelectObject(hdc,hNullBrush); Rectangle(hdc,10+x*50,10+y*50,60+x*50,60+y*50); for(i=0;i<8;i++){ for(j=0;j<8;j++){ TextOut(hdc,27+i*50,17+j*50,(LPCTSTR)kihu[j],1); } } //終了処理 SelectObject(hdc,hOldPen); SelectObject(hdc,hOldBrush); SelectObject(hdc,hOldFont); DeleteObject(hFont); DeleteObject(hGreenBrush); DeleteObject(hBoldPen); } //ウィンドウプロシージャ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp){ PAINTSTRUCT ps; HDC hdc; static POINTS zahyo={0,0}; switch (msg) { case WM_PAINT: hdc=BeginPaint(hWnd,&ps); DrawChessboard(hdc,zahyo.x,zahyo.y); EndPaint(hWnd,&ps); break; case WM_DESTROY: PostQuitMessage(0); break; case WM_LBUTTONDBLCLK: if(GetCurPos(&zahyo.x,&zahyo.y,lp)) InvalidateRect(hWnd,NULL,TRUE); break; default: return (DefWindowProc(hWnd, msg, wp, lp)); } return 0; }