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

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

?? tictac2.c

?? MS-Press book about programming under Windows CE with source-codes of examples
?? C
?? 第 1 頁 / 共 2 頁
字號:
//----------------------------------------------------------------------
// DoInitMenuPopMain - Process WM_INITMENUPOPUP message for window.
//
LRESULT DoInitMenuPopMain (HWND hWnd, UINT wMsg, WPARAM wParam,
                           LPARAM lParam) {
    HMENU hMenu;

    hMenu = CommandBar_GetMenu (GetDlgItem (hWnd, IDC_CMDBAR), 0);

    if (bLastMove == -1) 
        EnableMenuItem (hMenu, IDM_UNDO, MF_BYCOMMAND | MF_GRAYED);
    else
        EnableMenuItem (hMenu, IDM_UNDO,  MF_BYCOMMAND | MF_ENABLED);
    return 0;
}
//----------------------------------------------------------------------
// DoCommandMain - Process WM_COMMAND message for window. 
// 
//
LRESULT DoCommandMain (HWND hWnd, UINT wMsg, WPARAM wParam,
                       LPARAM lParam) {
    WORD idItem, wNotifyCode;
    HWND hwndCtl;
    INT  i;

    // Parse the parameters.
    idItem = (WORD) LOWORD (wParam);
    wNotifyCode = (WORD) HIWORD(wParam);
    hwndCtl = (HWND) lParam;

    // Call routine to handle control message.
    for (i = 0; i < dim(MainCommandItems); i++) {
        if (idItem == MainCommandItems[i].Code)
            return (*MainCommandItems[i].Fxn)(hWnd, idItem, hwndCtl, 
                                           wNotifyCode);
    }
    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);

    // See if pen on board.  If so, determine which cell.
    if (PtInRect (&rectBoard, pt)){
        // Normalize point to upper left corner of board.
        pt.x -= rectBoard.left;
        pt.y -= rectBoard.top;

        // Compute size of each cell.
        cx = (rectBoard.right - rectBoard.left)/3;
        cy = (rectBoard.bottom - rectBoard.top)/3;

        // Find column.
        nCell = (pt.x / cx); 

        // Find row.
        nCell += (pt.y / cy) * 3; 

        // If cell empty, fill it with mark.
        if (bBoard[nCell] == 0) {
            if (bTurn) {
                bBoard[nCell] = 2;
                bTurn = 0;
            } else {
                bBoard[nCell] = 1;
                bTurn = 1;
            }
            // Save the cell for the undo command.
            bLastMove = nCell;
            // Force the screen to be repainted.
            InvalidateRect (hWnd, NULL, FALSE);
        } else {
            // Inform the user of the filled cell.
            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;
}
//======================================================================
// Command handler routines
//
//----------------------------------------------------------------------
// DoMainCommandNewGame - Process New Game command.
//
LPARAM DoMainCommandNewGame (HWND hWnd, WORD idItem, HWND hwndCtl,
                             WORD wNotifyCode) {
    INT i, j = 0, rc;

    // Count the number of used spaces.
    for (i = 0; i < 9; i++)
        if (bBoard[i])
            j++;

    // If not new game or complete game, ask user before clearing.
    if (j && (j != 9)) {
        rc = MessageBox (hWnd,
                         TEXT ("Are you sure you want to clear the board?"),
                         TEXT ("New Game"), MB_YESNO | MB_ICONQUESTION);
        if (rc == IDNO)
            return 0;
    }
    ResetGame ();
    InvalidateRect (hWnd, NULL, TRUE);
    return 0;
}
//----------------------------------------------------------------------
// DoMainCommandUndo - Process Undo Last Move command.
//
LPARAM DoMainCommandUndo (HWND hWnd, WORD idItem, HWND hwndCtl,
                          WORD wNotifyCode) {

    if (bLastMove != -1) {
        bBoard[bLastMove] = 0;
        if (bTurn) {
            bTurn = 0;
        } else {
            bTurn = 1;
        }
        // Only one level of undo
        bLastMove = -1;
        InvalidateRect (hWnd, NULL, TRUE);
    }
    return 0;
}
//----------------------------------------------------------------------
// DoMainCommandExit - Process Program Exit command.
//
LPARAM DoMainCommandExit (HWND hWnd, WORD idItem, HWND hwndCtl, 
                          WORD wNotifyCode) {

    SendMessage (hWnd, WM_CLOSE, 0, 0);
    return 0;
}
//======================================================================
// Game-specific routines
//
//----------------------------------------------------------------------
// ResetGame - Initialize the structures for a game.
//
void ResetGame (void) {
    INT i;

    // Initialize the board.
    for (i = 0; i < dim(bBoard); i++)
        bBoard[i] = 0;

    bTurn = 0;
    bLastMove = -1;
    return;
}
//----------------------------------------------------------------------
// 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;

    // Compute the dimensions of the target cell.
    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;

    // Draw an X?
    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);
    // How about an O?
    } else if (nType == 2) {
        Ellipse (hdc, rect.left, rect.top, rect.right, rect.bottom);
    }
    return;
}
//----------------------------------------------------------------------
// DrawBoard - Draw the tic-tac-toe board.
//
void DrawBoard (HDC hdc, RECT *prect) {
    HPEN hPen, hOldPen;
    POINT pt[2];
    LOGPEN lp;
    INT i, cx, cy;

    // Create a nice thick pen.
    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;

    // Draw lines down.
    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);

    // Draw lines across.
    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);

    // Fill in Xs and Os.
    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女神在线视频| 欧美一区二区福利在线| 最新国产精品久久精品| 麻豆国产精品视频| 欧美日韩一区中文字幕| 国产精品久久久久久亚洲毛片| 亚洲第一激情av| 91视频.com| 国产欧美一区二区在线| 免费久久精品视频| 欧美在线不卡视频| 亚洲欧洲av色图| 91在线视频免费观看| 精品女同一区二区| 五月天一区二区| 在线观看免费一区| 亚洲视频一二三| 国产成人日日夜夜| 久久综合久久综合亚洲| 青青草国产成人av片免费 | 亚洲精品国产a| av资源站一区| 国产精品久久久久四虎| 国产1区2区3区精品美女| 久久久精品影视| 国产精品一区二区不卡| 国产午夜一区二区三区| 久久精品国产在热久久| 欧美一区二区国产| 久久99久久久久| www激情久久| 久久精品国产99| 久久尤物电影视频在线观看| 久久99热99| 欧美激情一区三区| aaa国产一区| 一区二区三区四区亚洲| 欧美性xxxxxx少妇| 天天综合色天天综合| 欧美精品精品一区| 久久成人麻豆午夜电影| 国产亚洲成av人在线观看导航| 国产激情一区二区三区四区 | 久久综合综合久久综合| 欧美sm美女调教| 国产99久久精品| 一区二区在线观看视频| 欧美嫩在线观看| 精品一区二区三区视频 | 亚洲美女视频一区| 91黄色在线观看| 麻豆精品在线播放| 欧美国产97人人爽人人喊| av亚洲精华国产精华精| 午夜在线成人av| 国产三级精品三级| 在线观看亚洲成人| 麻豆高清免费国产一区| 国产精品理伦片| 欧美精品在线观看播放| 国产麻豆精品在线| 亚洲在线观看免费| 精品国产区一区| 91性感美女视频| 看片网站欧美日韩| 亚洲欧美日韩国产综合| 欧美日韩精品一区二区在线播放| 国产一区二区三区国产| 一区二区三区色| www成人在线观看| 精品视频在线免费观看| 国产91在线|亚洲| 首页国产欧美日韩丝袜| 欧美国产视频在线| 69精品人人人人| eeuss鲁一区二区三区| 日产欧产美韩系列久久99| 中文字幕乱码日本亚洲一区二区| 777精品伊人久久久久大香线蕉| 国产乱理伦片在线观看夜一区| 亚洲成av人片www| 国产精品嫩草久久久久| 欧美一级高清片在线观看| 91视频一区二区三区| 国产最新精品精品你懂的| 亚洲国产欧美一区二区三区丁香婷| 久久久噜噜噜久噜久久综合| 欧美亚洲丝袜传媒另类| 成人aa视频在线观看| 久久99这里只有精品| 亚洲电影一级黄| 国产精品国产自产拍高清av王其| 精品国内二区三区| 在线成人av影院| 欧美性感一类影片在线播放| 不卡一卡二卡三乱码免费网站| 加勒比av一区二区| 日韩va亚洲va欧美va久久| 亚洲精品成人少妇| 一区二区成人在线| 日韩一区在线播放| 国产精品久久久久久久久免费桃花| 欧美成人性战久久| 4438x亚洲最大成人网| 欧美色图一区二区三区| 欧美自拍丝袜亚洲| 91浏览器在线视频| 色婷婷综合久久久| 一本久道中文字幕精品亚洲嫩| 粉嫩久久99精品久久久久久夜| 国产精品996| 粉嫩在线一区二区三区视频| 狠狠久久亚洲欧美| 国内精品久久久久影院色| 老司机一区二区| 国产一区二区在线观看免费| 美女网站在线免费欧美精品| 日本亚洲最大的色成网站www| 午夜精品久久一牛影视| 日韩电影网1区2区| 蜜芽一区二区三区| 狠狠色丁香婷婷综合| 福利一区二区在线观看| 99久久免费国产| 91麻豆精品一区二区三区| 91国内精品野花午夜精品| 欧美综合一区二区| 欧美一级高清大全免费观看| 精品免费国产二区三区| 国产偷v国产偷v亚洲高清| 136国产福利精品导航| 亚洲午夜免费福利视频| 日本亚洲一区二区| 国产乱淫av一区二区三区| 成人免费看片app下载| 欧美影视一区二区三区| 制服丝袜亚洲网站| 国产偷国产偷亚洲高清人白洁| 亚洲日本电影在线| 亚洲一区二区欧美激情| 久久国产人妖系列| 99国产精品久久久久| 欧美剧在线免费观看网站| 欧美va亚洲va国产综合| 中文字幕欧美激情| 日韩一区精品字幕| 国产91在线|亚洲| 欧美视频第二页| 久久久亚洲综合| 亚洲精品中文在线观看| 免费成人av在线| 91在线无精精品入口| 91精品国产美女浴室洗澡无遮挡| 国产日韩亚洲欧美综合| 亚洲午夜视频在线观看| 国产成人高清在线| 欧美日本一道本在线视频| 亚洲欧美色图小说| 久久精品久久99精品久久| 不卡在线观看av| 日韩欧美视频在线| 亚洲色图一区二区| 国产一区在线不卡| 欧美三级在线播放| 国产精品天干天干在线综合| 全国精品久久少妇| 色综合久久66| 国产欧美视频一区二区三区| 视频一区国产视频| 成人精品小蝌蚪| xfplay精品久久| 免费人成在线不卡| 欧美亚洲动漫制服丝袜| 国产精品久久久久一区二区三区 | 亚洲欧美日韩一区二区| 国产一区二区不卡老阿姨| 日本精品免费观看高清观看| 久久亚洲精品小早川怜子| 男女男精品网站| 欧美性xxxxx极品少妇| 最新中文字幕一区二区三区 | 久久久噜噜噜久久中文字幕色伊伊 | 国产高清成人在线| 91精品免费在线观看| 亚洲激情一二三区| 成人丝袜18视频在线观看| 欧美精品一区二区三区在线播放| 日韩二区三区四区| 欧美日韩一区二区三区四区| 亚洲精品成人天堂一二三| 91捆绑美女网站| 亚洲天堂2014| eeuss鲁片一区二区三区| 国产欧美一区二区精品忘忧草| 九色综合国产一区二区三区| 日韩久久久久久| 国内成+人亚洲+欧美+综合在线| 日韩欧美一区二区免费|