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

📄 demo_iconview.c

📁 飞漫公司的minigui的1.6.8收费增值版本的demon等示例程序
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <minigui/common.h>#include <minigui/minigui.h>#include <minigui/gdi.h>#include <minigui/window.h>#include <minigui/control.h>#include <minigui/mgext.h>#include <minigui/skin.h>#include "../global.h"#define SIID_ICONVIEW_SETUP        1#define SIID_ICONVIEW_OPTION       2#define SIID_ICONVIEW_BROWSER      3#define IDC_ICONVIEW                11 #define IDC_ICONVIEW_CONTROLBAR     12 #define COL_COUNT                   5#define IDC_SKIN                    100#define MUSIC_DIR                   0#define MUSIC_PLAYLIST              1#define MUSIC_FILE                  2#define MAX_FILE_HANDLES            1024/*note: width can't be larger than 304*/#define WIDTH_4x3                   72#define HEIGHT_4x3                  59 #define WIDTH_3x2                   95 #define HEIGHT_3x2                  87 #define WIDTH_FULL                  240  #define HEIGHT_FULL                 175 enum {MODE_4x3 = 0, MODE_3x2, MODE_FULL};enum {UNKOWN_TYPE = 0, DIR_TYPE, FILE_TYPE};static char *icon_filenames[] ={    "img_0000.jpg",     "s_game.bmp",       "img_0001.jpg",     "s_file.bmp",       "s_camera.bmp",     "s_setup.bmp",      "s_music.bmp",      "s_video.bmp",      "s_picture.bmp",    "s_recorder.bmp",    "s_help.bmp",    "s_game1.bmp",    "s_file1.bmp",    "s_camera1.bmp",    "s_setup1.bmp",    "s_music1.bmp",    "s_video1.bmp",    "s_picture1.bmp",    "s_recorder1.bmp",    "s_help1.bmp",    "b_game.bmp",    "b_file.bmp",    "b_camera.bmp",    "b_setup.bmp",    "b_music.bmp",    "b_video.bmp",    "b_picture.bmp",    "b_recorder.bmp",    "b_help.bmp"};static BITMAP *icon_bmps [TABLESIZE(icon_filenames)] = {    bmp_img_0000,     bmp_s_game,    bmp_img_0001,     bmp_s_file,    bmp_s_camera,    bmp_s_setup,    bmp_s_music,    bmp_s_video,    bmp_s_picture,    bmp_s_recorder,    bmp_s_help,    bmp_s_game1,    bmp_s_file1,    bmp_s_camera1,    bmp_s_setup1,    bmp_s_music1,    bmp_s_video1,    bmp_s_picture1,    bmp_s_recorder1,    bmp_s_help1,    bmp_b_game,    bmp_b_file,    bmp_b_camera,    bmp_b_setup,    bmp_b_music,    bmp_b_video,    bmp_b_picture,    bmp_b_recorder,    bmp_b_help};static int icon_handles [TABLESIZE(icon_filenames)];static int iconview_mode_created = 0;static int current_display_mode;static HWND hIconView;/////////////////////////////////////static BITMAP controlbar_bmp [2];static int iconview_controlbar_event_cb (HWND hWnd, skin_item_t *item, int event, void *data);static int iconview_controlbar_msg_cb (HWND hWnd, int message, WPARAM wParam, LPARAM lParam, int *result);extern void draw_caption_bar (HDC, HWND);volatile static skin_item_t iconview_controlbar_items [] ={    {SIID_ICONVIEW_SETUP, SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,    13, 2, {0}, 1, "setup"},    {SIID_ICONVIEW_OPTION, SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,    116, 2, {0}, 1, "options"},    {SIID_ICONVIEW_BROWSER, SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,    219, 2, {0}, 1, "browser"}};static skin_head_t _iconview_controlbar_skin;static skin_item_t _iconview_controlbar_items[TABLESIZE(iconview_controlbar_items)];volatile static skin_head_t iconview_controlbar_skin ={    "",    SKIN_STYLE_NONE, &controlbar_bmp[0], NULL,    0, 3, _iconview_controlbar_items, FALSE};static const char *controlbar_res[] ={    "playbar_bg.bmp", "button_other.bmp"};#define CONTROLBAR_RES_NUM sizeof (controlbar_res) /sizeof (char *)static void init_bitmap_array (void){    controlbar_bmp [0] = *(bmp_playbar_bg);    controlbar_bmp [1] = *(bmp_button_other);}static int  load_skin_bmps(skin_head_t *skin, BOOL load, const char *bmpname[], int nCount){    return 0;}static int init_iconview_controlbar (void){    memcpy (&_iconview_controlbar_skin, (const void *)(&iconview_controlbar_skin), sizeof (iconview_controlbar_skin));    memcpy (&_iconview_controlbar_items, &iconview_controlbar_items, sizeof (iconview_controlbar_items));    load_skin_bmps (&_iconview_controlbar_skin, TRUE, controlbar_res , CONTROLBAR_RES_NUM);    if (!skin_init (&_iconview_controlbar_skin, iconview_controlbar_event_cb, iconview_controlbar_msg_cb)){        printf("controlbar skin init fail !\n");    }    return 0;}static void create_iconview_controlbar (HWND hWnd){    skin_head_t *pskin;    HWND hControlBar;    hControlBar = create_skin_control (&_iconview_controlbar_skin,                        hWnd, IDC_ICONVIEW_CONTROLBAR, 0, 216,                         320, 24                   );   printf ("------------hControlBar: %x\n", hControlBar);   pskin = get_window_skin (hControlBar);   skin_enable_item (pskin, SIID_ICONVIEW_SETUP, FALSE);   //skin_enable_item (pskin, SIID_ICONVIEW_OPTION, FALSE);   skin_enable_item (pskin, SIID_ICONVIEW_BROWSER, FALSE);}static void destroy_iconview_controlbar (void){    skin_deinit (&_iconview_controlbar_skin);    load_skin_bmps (&_iconview_controlbar_skin, FALSE, controlbar_res, CONTROLBAR_RES_NUM);}int Change_Picture_Iconview (HWND hwnd, int mode);static int iconview_controlbar_event_cb (HWND hwnd, skin_item_t *item, int event, void *data){    static int displaymode = MODE_4x3;    if (event == SIE_BUTTON_CLICKED){        switch (item->id){        case SIID_ICONVIEW_SETUP:            fprintf (stderr, "----------setup clicked\n");            break;        case SIID_ICONVIEW_OPTION:            displaymode = (displaymode + 1) % 3;            Change_Picture_Iconview (GetParent (hwnd), displaymode);            break;        case SIID_ICONVIEW_BROWSER:            fprintf (stderr, "----------browser button clicked\n");            break;       }    }    return 1;}static int iconview_controlbar_msg_cb (HWND hWnd, int message, WPARAM wParam, LPARAM lParam, int *result){    *result = MSG_CB_GOON;    return 0;}////////////////////////////////////*static int load_iconview_res (){    int i = 0;        for (; i < TABLESIZE (icon_filenames); i ++) {        if (pdag_load_bitmap ((icon_bmps + i), fh_res_path, "picture/", icon_filenames [i]) < 0) {            fprintf (stderr, "load %s\n", icon_filenames [i]);            return -1;        }    }    return 0;}void unload_iconview_res (){    int i = 0;    for (; i <TABLESIZE (icon_filenames); i ++) {        pdag_unload_bitmap ((icon_bmps + i));    }}static void Display_Iconview_Single_Item (void){    int *icon_item = NULL;    int nSelItem = 0;    IVITEMINFO item;    nSelItem = SendMessage (hIconView, IVM_GETCURSEL, 0, 0);    if (nSelItem < 0)         return;    if ((icon_item = (int *)SendMessage (hIconView, IVM_GETITEMADDDATA, nSelItem, 0)) == NULL) {        return;    }    SendMessage (hIconView, IVM_RESETCONTENT, 0, 0);    memset (&item, 0, sizeof (IVITEMINFO));    item.nItem = 0;    item.bmp = icon_bmps [*icon_item];    item.label = icon_filenames [*icon_item];    SendMessage (hIconView, IVM_ADDITEM, 0, (LPARAM)&item);    current_display_mode = MODE_FULL;}*/static void DisplayPictures (HWND hwnd){    int i;    IVITEMINFO  item;       SendMessage (hIconView, IVM_RESETCONTENT, 0, 0);    for (i = 0; i < TABLESIZE (icon_filenames); i ++) {        memset (&item, 0, sizeof (IVITEMINFO));        item.nItem = i;        item.bmp = icon_bmps [i];        item.label = icon_filenames [i];        item.addData = (DWORD) &(icon_handles [i]);        SendMessage (hIconView, IVM_ADDITEM, 0, (LPARAM)&item);    }}static void Display_Picture_4x3_Mode (HWND hwnd){    SendMessage (hIconView, IVM_SETITEMSIZE, WIDTH_4x3, HEIGHT_4x3);    SendMessage (hIconView, IVM_SETSCROLLVAL, 0, HEIGHT_4x3 +5 );}static void Display_Picture_3x2_Mode (HWND hwnd){    SendMessage (hIconView, IVM_SETITEMSIZE, WIDTH_3x2, HEIGHT_3x2);    SendMessage (hIconView, IVM_SETSCROLLVAL, 0, HEIGHT_3x2 + 5);}static void Display_Picture_Full_Mode (HWND hwnd){    SendMessage (hIconView, IVM_SETITEMSIZE, WIDTH_FULL, HEIGHT_FULL + 5);    SendMessage (hIconView, IVM_SETSCROLLVAL, 0, HEIGHT_FULL + 5);}static void create_iconview_control (HWND hwnd){    int i = 0;        hIconView = CreateWindow ( CTRL_ICONVIEW,                     "",                     WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_HSCROLL |IVS_NOTIFY,                                    IDC_ICONVIEW,                                    0, 24, 320, 192,                                     hwnd,                                    0);    SetWindowBkColor (hIconView, RGB2Pixel (HDC_SCREEN, 249, 167, 4));/*    CreateWindow("scrollview", NULL, WS_CHILD |WS_VISIBLE |WS_VSCROLL | SVS_AUTOSORT | SVS_NOTIFY,                    1111,                    0, 0, 220, 172,                    hwnd, 0);*//*        CreateWindow ( CTRL_LISTVIEW,                     "",                     WS_CHILD | WS_VISIBLE | WS_BORDER |LVS_NOTIFY,                                    120,                                    0, 0, 320, 192,                                     hwnd,                                    0);*/    for (; i < TABLESIZE(icon_filenames); i ++)        icon_handles [i] = i;    }static int repeat_creat_iconview (HWND hwnd){    if (!iconview_mode_created) {/*        if (load_iconview_res () < 0)            return -1;*/        create_iconview_control (hwnd);        iconview_mode_created = 1;    }    return 0;}   int Change_Picture_Iconview (HWND hwnd, int mode){            if( repeat_creat_iconview (hwnd) < 0)            return -1;        switch (mode) {        case MODE_4x3:            Display_Picture_4x3_Mode (hwnd);            DisplayPictures (hwnd);             current_display_mode = MODE_4x3;            break;        case MODE_3x2:            Display_Picture_3x2_Mode (hwnd);            DisplayPictures (hwnd);             current_display_mode = MODE_3x2;            break;        case MODE_FULL:            Display_Picture_Full_Mode (hwnd);            //Display_Iconview_Single_Item (hwnd);             DisplayPictures (hwnd);            current_display_mode = MODE_FULL;            break;        }        UpdateWindow (hIconView, TRUE);    return 0;}static int iconviewWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam){    HDC hdc;    switch (message) {        case MSG_CREATE:            init_bitmap_array ();            init_iconview_controlbar ();            create_iconview_controlbar (hWnd);            Change_Picture_Iconview (hWnd, MODE_4x3);            break;        case MSG_KEYDOWN:            switch (wParam) {            case SCANCODE_ESCAPE:                SendMessage (hWnd, MSG_CLOSE, 0, 0);                break;            }                       break;        case MSG_LBUTTONDOWN:            if (LOWORD(lParam) > 298 && HIWORD(lParam) < 24)                SendMessage (hWnd, MSG_CLOSE, 0, 0);            break;        case MSG_COMMAND:        {            int id;            int code;            id = LOWORD(wParam);            code = HIWORD(wParam);            break;        }        case MSG_PAINT:            hdc = BeginPaint (hWnd);            SetBrushColor (hdc, RGB2Pixel (HDC_SCREEN, 111, 193, 180));            FillBox (hdc, 0, 0, 320, 24);            SetBkMode (hdc, BM_TRANSPARENT);
//#ifdef MGDEMO_ENGLISH
//			TextOut (hdc, 5, 4, "IconView Example");
//#else
	            TextOut (hdc, 5, 4, "IconView示例");
//#endif            draw_caption_bar (hdc, hWnd);            EndPaint (hWnd, hdc);            break;        case MSG_CLOSE:            iconview_mode_created = 0;            destroy_iconview_controlbar ();            DestroyMainWindow (hWnd);            return 0;    }    return DefaultMainWinProc(hWnd, message, wParam, lParam);}void create_iconview_win (HWND hParent){    HWND hwnd;    MAINWINCREATE CreateInfo;    CreateInfo.dwStyle = WS_VISIBLE;
//#ifdef MGDEMO_ENGLISH
//	CreateInfo.spCaption = "IconView example";
//#else
	
	CreateInfo.spCaption = "IconView示例";
//#endif        CreateInfo.dwExStyle = WS_EX_TOPMOST;    CreateInfo.hMenu = 0;    CreateInfo.hCursor = GetSystemCursor(0);    CreateInfo.hIcon = 0;    CreateInfo.MainWindowProc = iconviewWinProc;    CreateInfo.lx = 0;    CreateInfo.ty = 0;    CreateInfo.rx = 320;    CreateInfo.by = 240;    CreateInfo.iBkColor =   RGB2Pixel (HDC_SCREEN, 197, 237, 246);    CreateInfo.dwAddData = 0;    CreateInfo.hHosting = hParent;     hwnd = CreateMainWindow (&CreateInfo);    if(hwnd == HWND_INVALID) {        printf ("--------create_display_win failure\n");        return;    }        ShowWindow(hwnd, SW_SHOWNORMAL);/*    while (GetMessage(&Msg, hwnd)) {        TranslateMessage(&Msg);        DispatchMessage(&Msg);    }    MainWindowThreadCleanup (hwnd);*/    return;}

⌨️ 快捷键说明

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