⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cchess.cpp

📁 我也忘了 用vc写的
💻 CPP
字号:
#include <windows.h>
#include "resource.h"
#include "chessman.h"
#include "cchess.h"
#define LATTICESIZE 50


LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     static TCHAR szAppName[] = TEXT ("Chinese chess") ;
     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  = TEXT("cmenu") ;
     wndclass.lpszClassName = szAppName ;

     if (!RegisterClass (&wndclass))
     {
          MessageBox (NULL, TEXT ("This program requires Windows NT!"), 
                      szAppName, MB_ICONERROR) ;
          return 0 ;
     }
     
     hwnd = CreateWindow (szAppName,
                          szAppName,
                          WS_OVERLAPPED | WS_CAPTION | WS_BORDER |WS_SYSMENU, 
                          CW_USEDEFAULT,
                          CW_USEDEFAULT,
                          450 + 2 * GetSystemMetrics(SM_CXFIXEDFRAME),            
                          500 + GetSystemMetrics(SM_CYCAPTION) + 2 * GetSystemMetrics(SM_CYFIXEDFRAME) + GetSystemMetrics(SM_CYMENU),              
                          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 cchess occhess;

	HDC hdc;
	PAINTSTRUCT ps ;
	int x, y;
    switch (message)
    {
    case WM_CREATE:
		occhess.loadpic( ((LPCREATESTRUCT)lParam)->hInstance ); //传递句柄载入图片
		occhess.initializeman();  //初始化棋子的位置
		SetWindowText(hwnd, occhess.shift() ? TEXT("灰棋走") : TEXT("黑棋走")) ; //在标题栏显示现在该那个棋子走
        return 0 ;

	case WM_SIZE:
		
		return 0;

	case WM_LBUTTONDOWN:
		hdc = GetDC (hwnd) ;
        x = LOWORD (lParam)/LATTICESIZE ;
        y = HIWORD (lParam)/LATTICESIZE ;
		occhess.HandleWalk( hdc, x, y );
		ReleaseDC (hwnd, hdc) ;
		SetWindowText(hwnd, occhess.shift() ? TEXT("灰棋走") : TEXT("黑棋走")) ;
		return 0;

	case WM_COMMAND:
		switch(LOWORD(wParam))
		{
			case ID_MENUITEM40001:
				occhess.initializeman();
				InvalidateRect(hwnd, NULL, TRUE) ;

				return 0 ;

			case ID_MENUITEM40002:
				SendMessage(hwnd, WM_DESTROY, 0, 0) ;

				return 0 ;
          }
          break ;


	case WM_PAINT:
		hdc = BeginPaint(hwnd, &ps) ;
		
		occhess.refurbishboard( hdc, &ps.rcPaint );
		occhess.refurbishman( hdc );
		occhess.pitchsign( hdc );

		EndPaint(hwnd, &ps) ;
		return 0;

    case WM_DESTROY:
		occhess.deleteobject();
		PostQuitMessage (0) ;
        return 0 ;
    }
    return DefWindowProc (hwnd, message, wParam, lParam) ;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -