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

📄 same.c

📁 MINI GUI1.6X源码
💻 C
📖 第 1 页 / 共 2 页
字号:
}static void create_same_board (const char *fname){    load_scenario (fname);    fill_board ();}static void sel_scenario (HWND hwnd, int sel){    MENUBUTTONITEM mbi;    mbi.which = MB_WHICH_TEXT;    if (sel != cur_sel_scen) {        SendMessage (hwnd_menu, MBM_GETITEMDATA, sel, (LPARAM)&mbi);        load_scenario (mbi.text);        new_game (hwnd);        cur_sel_scen = sel;    }}static int fill_menu (HWND hwnd_menu){    int i = 0;    MENUBUTTONITEM mbi;    struct dirent *e;    char *dname = "res/";    DIR *dir;    char buff [30];        dir = opendir (dname);    if (!dir)        return -1;        while ((e = readdir (dir)) != NULL){        if (!strstr (e->d_name, ".gif")) {            continue;        }        strcpy (buff, "res/");        strcat (buff, e->d_name);        mbi.text = buff;        mbi.bmp = NULL;        mbi.data = 0;        SendMessage (hwnd_menu, MBM_ADDITEM, -1, (LPARAM) &mbi);        i ++;    }    closedir (dir);    return i;}static HMENU createpmenugame (void){    HMENU hmnu;    MENUITEMINFO mii;    memset (&mii, 0, sizeof(MENUITEMINFO));    mii.type        = MFT_STRING;    mii.id          = 0;    mii.typedata    = (DWORD)"Game";    hmnu = CreatePopupMenu (&mii);        memset (&mii, 0, sizeof(MENUITEMINFO));    mii.type        = MFT_STRING;    mii.state       = 0;    mii.id          = IDM_NEW;    mii.typedata    = (DWORD)"New Game";    InsertMenuItem(hmnu, 0, TRUE, &mii);        mii.type        = MFT_STRING;    mii.state       = 0;    mii.id          = IDM_SCORES;    mii.typedata    = (DWORD)"Scores...";    InsertMenuItem(hmnu, 1, TRUE, &mii);        mii.type        = MFT_STRING;    mii.state       = 0;    mii.id          = IDM_EXIT;    mii.typedata    = (DWORD)"Exit";    InsertMenuItem(hmnu, 2, TRUE, &mii);        return hmnu;}static HMENU createpmenusettings (void){    HMENU hmnu;    MENUITEMINFO mii;    memset (&mii, 0, sizeof(MENUITEMINFO));    mii.type        = MFT_STRING;    mii.id          = 0;    mii.typedata    = (DWORD)"Settings";    hmnu = CreatePopupMenu (&mii);        mii.type        = MFT_STRING ;    mii.state       = 0;    mii.id          = IDM_PREF;    mii.typedata    = (DWORD)"Preferences...";    InsertMenuItem(hmnu, 0, TRUE, &mii);    return hmnu;}static HMENU createpmenuabout (void){    HMENU hmnu;    MENUITEMINFO mii;    memset (&mii, 0, sizeof(MENUITEMINFO));    mii.type        = MFT_STRING;    mii.id          = 0;    mii.typedata    = (DWORD)"About";    hmnu = CreatePopupMenu (&mii);        memset (&mii, 0, sizeof(MENUITEMINFO));    mii.type        = MFT_STRING ;    mii.state       = 0;    mii.id          = IDM_ABOUT;    mii.typedata    = (DWORD)"About Same Game...";    InsertMenuItem(hmnu, 0, TRUE, &mii);    return hmnu;}static HMENU createmenu (void){    HMENU hmnu;    MENUITEMINFO mii;    hmnu = CreateMenu();    memset (&mii, 0, sizeof(MENUITEMINFO));    mii.type        = MFT_STRING;    mii.id          = 100;    mii.typedata    = (DWORD)"Game";    mii.hsubmenu    = createpmenugame ();    InsertMenuItem(hmnu, 0, TRUE, &mii);    mii.type        = MFT_STRING;    mii.id          = 110;    mii.typedata    = (DWORD)"Settings";    mii.hsubmenu    = createpmenusettings ();    InsertMenuItem(hmnu, 1, TRUE, &mii);        mii.type        = MFT_STRING;    mii.id          = 120;    mii.typedata    = (DWORD)"About";    mii.hsubmenu    = createpmenuabout ();    InsertMenuItem(hmnu, 2, TRUE, &mii);                       return hmnu;}int SameGameProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam){    switch (message) {    case MSG_CREATE:    {        RECT rcClient;        MENUBUTTONITEM mbi;        GetClientRect (hWnd, &rcClient);        CreateWindow (CTRL_STATIC, "Scenario: ",                     WS_CHILD | WS_VISIBLE | SS_RIGHT, 0,                    0, rcClient.bottom - GetSysCharHeight () - 4,                    100, GetSysCharHeight () + 4, hWnd, 0);        hwnd_menu = CreateWindow ("menubutton",                    "<scenario>",                     WS_CHILD | WS_VISIBLE, 100,                     100, rcClient.bottom - GetSysCharHeight () - 4,                      100, GetSysCharHeight () + 4, hWnd, 0);        if (fill_menu (hwnd_menu) <= 0) {            fprintf (stderr, "Can not find scenario.\n");            return -1;        }        SendMessage (hwnd_menu, MBM_SETCURITEM, 0, 0);        hwnd_score = CreateWindow (CTRL_STATIC, "Score:",                     WS_CHILD | WS_VISIBLE | SS_RIGHT, 0,                    200, rcClient.bottom - GetSysCharHeight () - 4,                    rcClient.right - 200, GetSysCharHeight () + 4, hWnd, 0);        mbi.which = MB_WHICH_TEXT;        SendMessage (hwnd_menu, MBM_GETITEMDATA, 0, (LPARAM)&mbi);        create_same_board (mbi.text);        new_game (hWnd);    }    break;            case MSG_COMMAND:        if (LOWORD(wParam) == 100 && HIWORD (wParam) == MBN_CHANGED) {            int sel = SendMessage (hwnd_menu, MBM_GETCURITEM, 0, 0);            if (sel >= 0)                sel_scenario (hWnd, sel);            break;        }        switch (wParam) {        case IDM_NEW:            new_game (hWnd);        break;        case IDM_SCORES:        break;                    case IDM_EXIT:            SendMessage (hWnd, MSG_CLOSE, 0, 0L);        break;        case IDM_PREF:        break;                    case IDM_ABOUT:        break;    }    break;    case MSG_ERASEBKGND:    return 0;    case MSG_PAINT:    {        HDC hdc;        hdc = BeginPaint (hWnd);        paint (hWnd, hdc);        EndPaint (hWnd, hdc);        return 0;    }    case MSG_LBUTTONDOWN:    {        int x = LOWORD (lParam);        int y = HIWORD (lParam);        kill_balls (hWnd, x / STONE_SIZE, y / STONE_SIZE);        old_x = -1;        old_y = -1;    }    break;    case MSG_MOUSEMOVE:    {        int x = LOWORD (lParam);        int y = HIWORD (lParam);                if (PtInRect (&rcBoard, x, y))            mark_balls (hWnd, x / STONE_SIZE, y / STONE_SIZE);        else            unmark_balls (hWnd);    }    break;    case MSG_NCMOUSEMOVE:        if (wParam != HT_CLIENT)            unmark_balls (hWnd);    break;    case MSG_MOUSEMOVEIN:        if (!wParam)            unmark_balls (hWnd);        break;    case MSG_TIMER:        if (wParam == ID_TIMER) {            HDC hdc = GetClientDC (hWnd);            move_tagged_balls (hdc);            ReleaseDC (hdc);        }        break;    case MSG_CLOSE:        if (MessageBox (hWnd,                     "Are you sure to quit?",                     "Same",                     MB_YESNO | MB_ICONQUESTION |                    MB_BASEDONPARENT) != IDYES)            return 0;        DestroyAllControls (hWnd);           DestroyMainWindow (hWnd);        PostQuitMessage (hWnd);        return 0;    }    return DefaultMainWinProc (hWnd, message, wParam, lParam);}static void InitCreateInfo (PMAINWINCREATE pCreateInfo){    rcBoard.left = 0;    rcBoard.top = 0;    rcBoard.right = STONE_COLS * STONE_SIZE;    rcBoard.bottom = STONE_LINES * STONE_SIZE;        pCreateInfo->dwStyle = WS_CAPTION | WS_BORDER;    pCreateInfo->dwExStyle = WS_EX_NONE;    pCreateInfo->spCaption = "Same";    pCreateInfo->hMenu = createmenu ();    pCreateInfo->hCursor = GetSystemCursor (IDC_ARROW);    pCreateInfo->hIcon = 0;    pCreateInfo->MainWindowProc = SameGameProc;    pCreateInfo->lx = 0;    pCreateInfo->ty = 0;    pCreateInfo->rx = pCreateInfo->lx +             ClientWidthToWindowWidth (WS_CAPTION | WS_BORDER,                             STONE_COLS * STONE_SIZE);    pCreateInfo->by = pCreateInfo->ty +             ClientHeightToWindowHeight (WS_CAPTION | WS_BORDER,                             STONE_LINES * STONE_SIZE, TRUE);    pCreateInfo->by += GetSysCharHeight () + 4;    pCreateInfo->iBkColor = PIXEL_black;    pCreateInfo->dwAddData = 0;    pCreateInfo->hHosting = HWND_DESKTOP;}int MiniGUIMain (int argc, const char *argv []){    HWND hMainWnd;    MSG Msg;    MAINWINCREATE CreateInfo;#if defined(_LITE_VERSION) && !(_STAND_ALONE)    int i;    const char* layer = NULL;    RECT max_rect = {0, 0, 0, 0};    for (i = 1; i < argc; i++) {        if (strcmp (argv[i], "-layer") == 0) {            layer = argv[i + 1];            break;        }    }    GetLayerInfo (layer, &max_rect, NULL, NULL, NULL);    if (JoinLayer (layer, argv[0],                 max_rect.left, max_rect.top,                 max_rect.left + 1024,                 max_rect.top + 768) == INV_LAYER_HANDLE) {        printf ("JoinLayer: invalid layer handle.\n");        exit (1);    }#endif    InitCreateInfo (&CreateInfo);    hMainWnd = CreateMainWindow (&CreateInfo);    if (hMainWnd == HWND_INVALID)        return -1;    srand (time (NULL));    ShowWindow (hMainWnd, SW_SHOWNORMAL);    while( GetMessage (&Msg, hMainWnd) ) {        TranslateMessage (&Msg);        DispatchMessage (&Msg);    }    MainWindowThreadCleanup (hMainWnd);    return 0;}#ifndef _LITE_VERSION#include <minigui/dti.c>#endif

⌨️ 快捷键说明

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