亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tictac1.c.orig

?? Programming Windows CE Windows CE程序設計書籍源代碼
?? ORIG
字號:
//======================================================================
// TicTac1 - Simple tic-tac-toe game
//
// Written for the book Programming Windows CE
// Copyright (C) 1998 Douglas Boling
//
//======================================================================
#include <windows.h>                 // For all that Windows stuff
#include <commctrl.h>                // Command bar includes
#include "tictac1.h"                 // Program-specific stuff

//----------------------------------------------------------------------
// Global data
//
const TCHAR szAppName[] = TEXT ("TicTac1");
HINSTANCE hInst;                     // Program instance handle

// State data for game
RECT rectBoard = {0, 0, 0, 0};       // Used to place game board.
RECT rectPrompt;                     // Used to place prompt.
BYTE bBoard[9];                      // Keeps track of Xs and Os.
BYTE bTurn = 0;                      // Keeps track of the turn.

// Message dispatch table for MainWindowProc
const struct decodeUINT MainMessages[] = {
    WM_CREATE, DoCreateMain,
    WM_SIZE, DoSizeMain,
    WM_PAINT, DoPaintMain,
    WM_LBUTTONUP, DoLButtonUpMain,
    WM_DESTROY, DoDestroyMain,
};

//======================================================================
//
// Program entry point
//
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    LPWSTR lpCmdLine, int nCmdShow) {
    MSG msg;
    int rc = 0;
    HWND hwndMain;

    // Initialize application.
    rc = InitApp (hInstance);
    if (rc) return rc;

    // Initialize this instance.
    hwndMain = InitInstance (hInstance, lpCmdLine, nCmdShow);
    if (hwndMain == 0)
        return 0x10;

    // Application message loop
    while (GetMessage (&msg, NULL, 0, 0)) {
        TranslateMessage (&msg);
        DispatchMessage (&msg);
    }
    // Instance cleanup
    return TermInstance (hInstance, msg.wParam);
}
//----------------------------------------------------------------------
// InitApp - Application initialization
//
int InitApp (HINSTANCE hInstance) {
    WNDCLASS wc;

    // Register application main window class.
    wc.style = 0;                             // Window style
    wc.lpfnWndProc = MainWndProc;             // Callback function
    wc.cbClsExtra = 0;                        // Extra class data
    wc.cbWndExtra = 0;                        // Extra window data
    wc.hInstance = hInstance;                 // Owner handle
    wc.hIcon = NULL,                          // Application icon
    wc.hCursor = NULL;                        // Default cursor
    wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
    wc.lpszMenuName =  NULL;                  // Menu name
    wc.lpszClassName = szAppName;             // Window class name

    if (RegisterClass (&wc) == 0) return 1;

    return 0;
}
//----------------------------------------------------------------------
// InitInstance - Instance initialization
//
HWND InitInstance (HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow) {
    HWND hWnd;

    // Save program instance handle in global variable.
    hInst = hInstance;

    // Create main window.
    hWnd = CreateWindow (szAppName,           // Window class
                         TEXT ("TicTac1"),    // Window title
                         WS_VISIBLE,          // Style flags
                         CW_USEDEFAULT,       // x position
                         CW_USEDEFAULT,       // y position
                         CW_USEDEFAULT,       // Initial width
                         CW_USEDEFAULT,       // Initial height
                         NULL,                // Parent
                         NULL,                // Menu, must be null
                         hInstance,           // App instance
                         NULL);               // Pointer to create
                                              // parameters
    // Return fail code if window not created.
    if (!IsWindow (hWnd)) return 0;

    // Standard show and update calls
    ShowWindow (hWnd, nCmdShow);
    UpdateWindow (hWnd);
    return hWnd;
}
//----------------------------------------------------------------------
// TermInstance - Program cleanup
//
int TermInstance (HINSTANCE hInstance, int nDefRC) {

    return nDefRC;
}
//======================================================================
// Message handling procedures for MainWindow
//

//----------------------------------------------------------------------
// MainWndProc - Callback function for application window
//
LRESULT CALLBACK MainWndProc (HWND hWnd, UINT wMsg, WPARAM wParam,
                              LPARAM lParam) {
    INT i;
    //
    // Search message list to see if we need to handle this
    // message.  If in list, call procedure.
    //
    for (i = 0; i < dim(MainMessages); i++) {
        if (wMsg == MainMessages[i].Code)
            return (*MainMessages[i].Fxn)(hWnd, wMsg, wParam, lParam);
    }
    return DefWindowProc(hWnd, wMsg, wParam, lParam);
}
//----------------------------------------------------------------------
// DoCreateMain - Process WM_CREATE message for window.
//
LRESULT DoCreateMain (HWND hWnd, UINT wMsg, WPARAM wParam, 
                      LPARAM lParam) {
    HWND hwndCB;

    // Create a command bar.
    hwndCB = CommandBar_Create (hInst, hWnd, IDC_CMDBAR);

    // Add exit button to command bar. 
    CommandBar_AddAdornments (hwndCB, 0, 0);
    return 0;
}
//----------------------------------------------------------------------
// DoSizeMain - Process WM_SIZE message for window.
//
LRESULT DoSizeMain (HWND hWnd, UINT wMsg, WPARAM wParam,
                    LPARAM lParam) {
	RECT rect;
	int i;

	GetClientRect(hWnd, &rect);
	rect.top += CommandBar_Height(GetDlgItem(hWnd, IDC_CMDBAR));

	if(rectBoard.right == 0)
	{
		for(i=0; i<dim(bBoard); i++)
			bBoard[i] = 0;
	}

	rectBoard = rect;
	rectPrompt = rect;

	if(rect.right - rect.left > rect.bottom - rect.top)
	{
		rectBoard.left += 20;
		rectBoard.top += 10;
		rectBoard.bottom -= 10;
		rectBoard.right = rectBoard.bottom - rectBoard.top + 10;

		rectPrompt.left = rectBoard.right + 10;
	}else{
		rectBoard.left += 20;
		rectBoard.top += 20;
		rectBoard.right -= 10;
		rectBoard.bottom = rectBoard.right - rectBoard.left + 10;

		rectPrompt.top = rectBoard.bottom + 10;
	}

	return 0;
}
//----------------------------------------------------------------------
// DoPaintMain - Process WM_PAINT message for window.
//
LRESULT DoPaintMain (HWND hWnd, UINT wMsg, WPARAM wParam,
                    LPARAM lParam) {
	PAINTSTRUCT ps;
	RECT rect;
	HFONT hFont, hOldFont;
	HDC hdc;

	GetClientRect(hWnd, &rect);

	rect.top += CommandBar_Height(GetDlgItem(hWnd, IDC_CMDBAR));

	hdc = BeginPaint(hWnd, &ps);

	DrawBoard(hdc, &rectBoard);

	hFont = GetStockObject(SYSTEM_FONT);
	hOldFont = SelectObject(hdc, hFont);

	if(bTurn == 0)
		DrawText(hdc, TEXT("X's turn"), -1, &rectPrompt, 
		DT_CENTER | DT_VCENTER | DT_SINGLELINE);
	else
		DrawText(hdc, TEXT("O's turn"), -1, &rectPrompt,
		DT_CENTER | DT_VCENTER | DT_SINGLELINE);

	SelectObject(hdc, hOldFont);
	DeleteObject(hFont);
	EndPaint(hWnd, &ps);
	return 0;
}
//----------------------------------------------------------------------
// DoLButtonUpMain - Process WM_LBUTTONUP message for window.
//
LRESULT DoLButtonUpMain (HWND hWnd, UINT wMsg, WPARAM wParam,
                         LPARAM lParam) {
	POINT pt;
	int cx, cy, nCell = 0;

	pt.x = LOWORD(lParam);
	pt.y = HIWORD(lParam);

	if(PtInRect(&rectBoard, pt))
	{
		pt.x -= rectBoard.left;
		pt.y -= rectBoard.top;

		cx = (rectBoard.right - rectBoard.left)/3;
		cy = (rectBoard.bottom - rectBoard.top)/3;

		nCell = pt.x/cx;
		nCell += (pt.y/cy) * 3;
		if(bBoard[nCell] == 0)
		{
			if(bTurn){
				bBoard[nCell] = 2;
				bTurn = 0;
			}else{
				bBoard[nCell] = 1;
				bTurn = 1;
			}
			InvalidateRect(hWnd, NULL, FALSE);
		}else{
			MessageBeep(0);
			return 0;
		}
	}

	return 0;
}
//----------------------------------------------------------------------
// DoDestroyMain - Process WM_DESTROY message for window.
//
LRESULT DoDestroyMain (HWND hWnd, UINT wMsg, WPARAM wParam, 
                       LPARAM lParam) {
    PostQuitMessage (0);
    return 0;
}
//======================================================================
// Game-specific routines
//
//----------------------------------------------------------------------
// DrawXO - Draw a single X or O in a square.
//
void DrawXO (HDC hdc, HPEN hPen, RECT *prect, INT nCell, INT nType) {
	POINT pt[2];
	int cx, cy;
	RECT rect;
	
	cx = (prect->right - prect->left)/3;
	cy = (prect->bottom - prect->top)/3;

	rect.left = cx * (nCell%3) + prect->left + 10;
	rect.right = rect.left + cx - 20;
	rect.top = cy * (nCell/3) + prect->top + 10;
	rect.bottom = rect.top + cy - 20;

	if(nType == 1)
	{
		pt[0].x = rect.left;
		pt[0].y = rect.top;
		pt[1].x = rect.right;
		pt[1].y = rect.bottom;
		Polyline(hdc, pt, 2);

		pt[0].x = rect.right;
		pt[1].x = rect.left;
		Polyline(hdc, pt, 2);
	}else if(nType == 2){
		Ellipse(hdc, rect.left, rect.top, rect.right, rect.bottom);
	}
}
//----------------------------------------------------------------------
// DrawBoard - Draw the tic-tac-toe board.
//  VK_MENU
void DrawBoard (HDC hdc, RECT *prect) {
	HPEN hPen, hOldPen;
	POINT pt[2];
	LOGPEN lp;
	int cx, cy, i;

	lp.lopnStyle = PS_SOLID;
	lp.lopnWidth.x = 5;
	lp.lopnWidth.y = 5;
	lp.lopnColor = RGB(0, 0, 0);

	hPen = CreatePenIndirect(&lp);

	hOldPen = SelectObject(hdc, hPen);

	cx = (prect->right - prect->left)/3;
	cy = (prect->bottom - prect->top)/3;

	pt[0].x = cx + prect->left;
	pt[1].x = cx + prect->left;
	pt[0].y = prect->top;
	pt[1].y = prect->bottom;
	Polyline(hdc, pt, 2);
	pt[0].x += cx;
	pt[1].x += cx;
	Polyline(hdc, pt, 2);

	pt[0].x = prect->left;
	pt[1].x = prect->right;
	pt[0].y = cy + prect->top;
	pt[1].y = cy + prect->top;
	Polyline(hdc, pt, 2);
	pt[0].y += cy;
	pt[1].y += cy;
	Polyline(hdc, pt, 2);

	for(i=0; i<dim(bBoard); i++)
		DrawXO(hdc, hPen, &rectBoard, i, bBoard[i]);

	SelectObject(hdc, hOldPen);
	DeleteObject(hPen);

	return ;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲二区在线视频| 91在线观看地址| 麻豆精品一区二区三区| 成人一区二区在线观看| 日本在线不卡视频| 七七婷婷婷婷精品国产| 亚洲午夜私人影院| 亚洲成在人线免费| 亚洲mv大片欧洲mv大片精品| 亚洲国产成人91porn| 亚洲福利一二三区| 亚洲电影第三页| 青青草伊人久久| 九九精品一区二区| 国产乱理伦片在线观看夜一区| 极品美女销魂一区二区三区 | 亚洲一区二区三区在线看| 亚洲免费观看高清完整版在线 | 日本不卡不码高清免费观看| 无吗不卡中文字幕| 美女爽到高潮91| 国产精品1区2区3区| 国产91精品入口| 99re8在线精品视频免费播放| 97se亚洲国产综合自在线| 色av成人天堂桃色av| 欧美日韩国产高清一区二区三区 | 日本在线不卡一区| 激情久久五月天| 福利一区二区在线| 色婷婷综合久色| 555夜色666亚洲国产免| 日韩欧美国产一区二区在线播放| 久久久久国产成人精品亚洲午夜| 亚洲欧洲日韩一区二区三区| 亚洲成人免费观看| 国产一区91精品张津瑜| 99久久久国产精品| 欧美日韩国产天堂| 欧美成人精精品一区二区频| 中文字幕 久热精品 视频在线| 亚洲天堂精品在线观看| 午夜精品123| 国产精品18久久久久久vr| 91理论电影在线观看| 日韩欧美一区在线| 中文字幕亚洲精品在线观看| 日韩av一区二区在线影视| 高清视频一区二区| 欧美日韩国产影片| 国产精品久久午夜| 日本aⅴ免费视频一区二区三区| 高潮精品一区videoshd| 在线电影院国产精品| 国产精品国产成人国产三级| 亚洲123区在线观看| 成人手机电影网| 欧美一区二区福利在线| 亚洲日本一区二区三区| 91浏览器打开| 精品国产1区二区| 亚洲黄色录像片| 国产原创一区二区三区| 欧美视频一区二区在线观看| 国产婷婷色一区二区三区在线| 性做久久久久久免费观看欧美| 成人免费毛片app| 日韩三级中文字幕| 亚洲精品一二三| 懂色av一区二区三区蜜臀| 在线不卡免费欧美| 亚洲美女一区二区三区| 国产成人午夜视频| 日韩免费高清电影| 亚洲第一二三四区| 色综合天天狠狠| 国产色产综合产在线视频| 日本不卡一区二区三区高清视频| 在线视频亚洲一区| 国产精品日韩成人| 国产一区二区三区香蕉| 欧美精品xxxxbbbb| 亚洲国产毛片aaaaa无费看| 成人丝袜视频网| 久久中文娱乐网| 美女尤物国产一区| 宅男在线国产精品| 亚洲午夜免费福利视频| 色综合色狠狠天天综合色| 国产精品免费视频一区| 国产一区999| 久久久国产午夜精品| 精品亚洲免费视频| 日韩欧美高清dvd碟片| 日韩一区精品字幕| 欧美日韩第一区日日骚| 亚洲自拍偷拍网站| 欧美在线观看视频在线| 亚洲美女一区二区三区| 日本高清视频一区二区| 亚洲欧美色图小说| k8久久久一区二区三区| 亚洲欧美自拍偷拍色图| 成人aa视频在线观看| 国产精品理论在线观看| 成人在线综合网| 一色屋精品亚洲香蕉网站| 91理论电影在线观看| 一区二区久久久久| 欧美中文字幕不卡| 亚洲一区二区三区影院| 欧美日韩电影在线播放| 美女视频免费一区| 欧美精品一区二区三区高清aⅴ| 极品少妇xxxx偷拍精品少妇| 久久久九九九九| 成人深夜在线观看| 亚洲精品水蜜桃| 欧美色爱综合网| 日韩中文字幕亚洲一区二区va在线| 欧美福利视频导航| 美女视频黄久久| 久久久噜噜噜久久人人看| 国产成人av一区二区| 中文字幕亚洲在| 欧美日韩一级片在线观看| 在线观看91精品国产入口| 亚洲成人免费视频| 欧美电影免费观看高清完整版在| 国产精品亚洲成人| 中文字幕在线免费不卡| 欧美性感一区二区三区| 奇米精品一区二区三区在线观看一| 欧美成人精品3d动漫h| 波多野结衣中文一区| 亚洲国产欧美另类丝袜| 精品国产一区二区三区久久久蜜月 | 亚洲成av人片一区二区| 欧美精品在线一区二区| 精品一区二区三区久久久| 国产精品福利一区| 制服丝袜日韩国产| 成人免费视频国产在线观看| 一区二区三区在线观看国产 | 亚洲伦理在线免费看| 91精品国产乱| 成人在线综合网| 亚洲成人7777| 2017欧美狠狠色| 91免费国产在线| 青青草国产成人av片免费| 国产精品美女久久久久高潮| 欧美日韩亚洲另类| 国产精品亚洲人在线观看| 亚洲一区二区三区三| 久久久99精品久久| 欧美在线影院一区二区| 激情综合网激情| 一区二区三区中文字幕| 久久欧美中文字幕| 欧美视频精品在线| 国产精品自拍毛片| 亚洲电影你懂得| 国产精品乱人伦中文| 日韩一区二区三区在线| 97se亚洲国产综合自在线| 国产一区二区三区四区五区入口| 亚洲一二三区视频在线观看| 精品国产一二三区| 欧美日韩视频专区在线播放| 成人免费毛片片v| 麻豆一区二区99久久久久| 一区二区三区在线视频免费观看| 久久免费国产精品| 欧美一区日韩一区| 色又黄又爽网站www久久| 国产精品一区专区| 日韩成人免费电影| 一区二区三区免费观看| 国产欧美1区2区3区| 精品久久人人做人人爽| 欧美日韩国产影片| 91久久香蕉国产日韩欧美9色| 国产一区二区调教| 久久国产夜色精品鲁鲁99| 亚洲第一电影网| 亚洲综合色网站| 亚洲啪啪综合av一区二区三区| 欧美国产禁国产网站cc| 欧美精品一区二区高清在线观看| 欧美日韩国产在线观看| 在线免费观看不卡av| 99精品视频一区二区| 丁香天五香天堂综合| 激情综合一区二区三区| 精品综合免费视频观看| 蜜桃一区二区三区在线观看| 午夜精品久久久久久久99樱桃| 亚洲福中文字幕伊人影院| 亚洲一区二区视频在线|