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

📄 picture.c

📁 飞漫公司的minigui的1.6.8收费增值版本的demon等示例程序
💻 C
📖 第 1 页 / 共 2 页
字号:
static void savefilename(FILEINFO *fileinfo, int filecount){    char *s, **temp;    int i, len, count = 0, maxlen = 0;    filemark = calloc(1, (filecount + 7) >> 3);    temp = (char **)malloc(filecount * (NAME_MAX + 1) + sizeof(char *) * filecount);    s = (char *)(temp + filecount);    for (i = 0; i < filecount; i++) {        temp[i] = s + i * (NAME_MAX + 1);        if (!fileinfo[i].IsDir) {            len = strlen(fileinfo[i].filename);            memcpy(temp[count], fileinfo[i].filename, len);            temp[count][len] = 0;            if (len > maxlen)                maxlen = len;            count++;            filemark[i >> 3] |= 0x80 >> (i % 8);        }    }    if (count == 0) {        free(temp);        return;    }    filename = (char **)malloc(count * (maxlen + 1) + sizeof(char *) * count);    s = (char *)(filename + count);    for (i = 0; i < count; i++) {        filename[i] = s + i * (maxlen + 1);        strcpy(filename[i], temp[i]);    }    piccount = count;    free(temp);}static int findmatchname(char *name){    int i;    for (i = 0; i < piccount; i++) {        if (!strcmp(filename[i], name))            return i;    }    return -1;}static void openpic(HWND hwnd, int flag){    HWND hscroll;    int  nSelIndex;    FILEINFO *pfileinfo;    ngDrawFlag = 0;    hscroll = GetDlgItem(hwnd, IDC_PICTURE_SCROLLVIEW);    nSelIndex = SendMessage (hscroll, SVM_GETCURSEL, 0, 0);    if (nSelIndex < 0)        return;    pfileinfo = (FILEINFO *)SendMessage(hscroll, SVM_GETITEMADDDATA, nSelIndex, 0);    if (!pfileinfo->IsDir) {        int selpic;        selpic = findmatchname(pfileinfo->filename);        create_pictureshow_win(hwnd, filename, selpic, piccount);    }     ngDrawFlag = 1;    InvalidateRect(hwnd, NULL, FALSE);}static void create_popmenu(HWND hWnd){    HMENU         hNewMenu;    MENUITEMINFO  mii;    memset(&mii, 0, sizeof(mii));    mii.type = MFT_STRING;    mii.id   =0;//#ifdef MGDEMO_ENGLISH//    mii.typedata = (DWORD)"File Operate";//#else    mii.typedata = (DWORD)"文件操作";//#endif    SetWindowElementColorEx(HWND_DESKTOP, BKC_MENUITEM_NORMAL, RGB2Pixel(HDC_SCREEN, 222, 182, 61));    SetWindowElementColorEx(HWND_DESKTOP, FGC_MENUITEM_HILITE, RGB2Pixel(HDC_SCREEN, 250, 250, 250));    SetWindowElementColorEx(HWND_DESKTOP, BKC_MENUITEM_HILITE, RGB2Pixel(HDC_SCREEN, 0, 0, 255));    UpdateWindow(hWnd, TRUE);    hNewMenu = CreatePopupMenu(&mii);    mii.type = MFT_STRING;    mii.state= 0;    mii.id   = IDC_PICTURE_MENU_SLIDER;//#ifdef MGDEMO_ENGLISH//    mii.typedata = (DWORD)"Slide View";//#else    mii.typedata = (DWORD)"滑动显示";//#endif    InsertMenuItem(hNewMenu, 0, TRUE, &mii);    mii.type = MFT_STRING;    mii.state= 0;    mii.id   = IDC_PICTURE_MENU_INFO;//#ifdef MGDEMO_ENGLISH//    mii.typedata = (DWORD)"Information";//#else    mii.typedata = (DWORD)"信息";//#endif    InsertMenuItem(hNewMenu, 1, TRUE, &mii);    mii.type = MFT_STRING;    mii.state= 0;    mii.id   = IDC_PICTURE_MENU_DELETE;//#ifdef MGDEMO_ENGLISH//    mii.typedata = (DWORD)"Delete";//#else    mii.typedata = (DWORD)"删除";//#endif    InsertMenuItem(hNewMenu, 2, TRUE, &mii);    mii.type = MFT_STRING;    mii.state= 0;    mii.id   = IDC_PICTURE_MENU_RENAME;//#ifdef MGDEMO_ENGLISH// /   mii.typedata = (DWORD)"rename";//#else    mii.typedata = (DWORD)"重命名";//#endif    InsertMenuItem(hNewMenu, 3, TRUE, &mii);    mii.type = MFT_STRING;    mii.state= 0;    mii.id   = IDC_PICTURE_MENU_MKDIR;//#ifdef MGDEMO_ENGLISH//    mii.typedata = (DWORD)"Create Directory";//#else    mii.typedata = (DWORD)"创建目录";//#endif    InsertMenuItem(hNewMenu, 4, TRUE, &mii);    hPicturePopMenu = StripPopupHead(hNewMenu);}static void picture_drawitem(HWND hwnd, HSVITEM hsvi, HDC hdc, RECT *rcDraw){    FILEINFO *fileinfo = (FILEINFO *)scrollview_get_item_adddata(hsvi);    RECT tmp;        tmp.left = rcDraw->left + 20;     tmp.top = rcDraw->top;    tmp.right = tmp.left + 180;    tmp.bottom = rcDraw->bottom;    SetBkMode(hdc, BM_TRANSPARENT);    SetTextColor(hdc, PIXEL_black);    if (scrollview_is_item_hilight(hwnd, hsvi)) {        SetBrushColor (hdc, PIXEL_blue);        FillBox (hdc, rcDraw->left+1, rcDraw->top+1, RECTWP(rcDraw)-2, RECTHP(rcDraw)-1);        SetBkColor (hdc, PIXEL_blue);        SetTextColor (hdc, PIXEL_lightwhite);    }    FillBoxWithBitmap(hdc, rcDraw->left, rcDraw->top, 0, 0,             &picture_item_icons [fileinfo->IsDir]);    DrawText(hdc, fileinfo->filename, -1, &tmp, DT_LEFT | DT_WORDBREAK);/*    if (movieinfo->type == MUSIC_FILE) { tmp.left += 200;        tmp.right = tmp.left + 180;        DrawText(hdc, movieinfo->picturetime, -1, &tmp, DT_LEFT | DT_WORDBREAK);    }*/    return;}static void picture_create_control(HWND hParent){    HWND hCtrlWnd;    CreateWindowEx(CTRL_STATIC, NULL, WS_CHILD |WS_VISIBLE |SS_LEFT,                    WS_EX_TRANSPARENT,                    IDC_STATIC, 4, 24, 310, 20,                    hParent, 0);    hCtrlWnd = CreateWindow("scrollview", NULL, WS_CHILD |WS_VISIBLE |WS_VSCROLL | SVS_AUTOSORT | SVS_NOTIFY,                    IDC_PICTURE_SCROLLVIEW,                    0, 44, 220, 172,                    hParent, 0);    SetWindowBkColor(hCtrlWnd, RGB2Pixel(HDC_SCREEN, 222, 251, 255));    SendMessage(hCtrlWnd, SVM_SETITEMDRAW, 0, (LPARAM)picture_drawitem);    UpdateWindow(hCtrlWnd, TRUE);    initfileinfo(vfilename, TABLESIZE(vfilename));    savefilename(vfileinfo, TABLESIZE(vfilename));    InsertToScrollView(hCtrlWnd, vfileinfo, TABLESIZE(vfilename));    SendMessage(hCtrlWnd, SVM_SETCURSEL, 0, 1);    SetWindowText(GetDlgItem(hParent, IDC_STATIC), respath);    create_popmenu(hParent);         UpdateWindow(hParent, TRUE);    ngDrawFlag = 1;    InvalidateRect(hParent, NULL, FALSE);}static int pictureWinProc(HWND hWnd, int message, WPARAM wparam, LPARAM lparam){    switch (message) {        case MSG_CREATE:            load_picture_item_icons(TRUE);            picture_create_control(hWnd);            init_picture_controlbar();            create_picture_controlbar(hWnd);            hPictureMain = hWnd;            UpdateWindow(hWnd, TRUE);            break;        case MSG_ACTIVE:            //SetActiveWindow(hWnd);            break;        case MSG_SIZECHANGING:        {            RECT* rcResult = (RECT*)lparam;            rcResult->top = 0;            rcResult->left = 0;            rcResult->right = 320;            rcResult->bottom = 240;            return 0;         }        case MSG_LBUTTONDOWN:            if (LOWORD(lparam) > 298 && HIWORD(lparam) < 24)                SendMessage (hWnd, MSG_CLOSE, 0, 0);            break;        case MSG_CLOSE:            destroy_picture_controlbar();            load_picture_item_icons(FALSE);            free_fileinfo();            //DestroyAllControls(hWnd);            DestroyMainWindow (hWnd);            return 0;        case MSG_PAINT:        {            HDC hDC;            hDC = BeginPaint(hWnd);            SetBrushColor(hDC, RGB2Pixel(HDC_SCREEN, 111, 193, 180));            FillBox(hDC, 0, 0, 320, 24);            FillBox(hDC, 0, 216, 320, 24);            SetBkMode(hDC, BM_TRANSPARENT);            FillBoxWithBitmap(hDC, 2, 8, 0, 0, &picture_item_icons [0]);
//#ifdef MGDEMO_ENGLISH
//			TextOut(hDC, 20, 5, "Picture View");
//#else	
            TextOut(hDC, 20, 5, "图片浏览");
//#endif                      draw_caption_bar(hDC, hWnd);            filepreview(hDC, hWnd);            EndPaint(hWnd, hDC);            return 0;        }        case MSG_KEYDOWN:            SetFocus(GetDlgItem(hWnd, IDC_PICTURE_SCROLLVIEW));            switch (wparam) {            case SCANCODE_ENTER:            case SCANCODE_KEYPADENTER:                openpic(hWnd, 0);                break;            case SCANCODE_F1:                openpic(hWnd, 1);                break;            case SCANCODE_F2:                TrackPopupMenu(hPicturePopMenu, TPM_LEFTALIGN |TPM_LEFTBUTTON, 120, 120, hPictureMain);                break;            case SCANCODE_ESCAPE:                printf ("sssssssssssssssssss\n");                SendMessage(hWnd, MSG_CLOSE, 0, 0);                break;            }        break;        case MSG_COMMAND:        {            int nId = LOWORD(wparam);            int nNc = HIWORD(wparam);            printf ("-------------MSG_COMMAND\n");             switch (nId) {            case IDC_PICTURE_SCROLLVIEW:                if (nNc == SVN_CLICKED) {                    ngDrawFlag = 0;                    openpic(hWnd, 0);                }                else if (nNc == SVN_SELCHANGED) {                    ngDrawFlag = 1;                    InvalidateRect(hWnd, NULL, FALSE);                }                break;            case IDC_PICTURE_MENU_SLIDER:             case IDC_PICTURE_MENU_DELETE:             case IDC_PICTURE_MENU_RENAME:             case IDC_PICTURE_MENU_MKDIR:             case IDC_PICTURE_MENU_INFO:                 break;            }             break;        }    }    return DefaultMainWinProc(hWnd, message, wparam, lparam);}void pictureMain(HWND hwnd){    //MSG Msg;    HWND MainWnd = 0;    MAINWINCREATE CreateInfo;    CreateInfo.dwStyle = WS_VISIBLE;    CreateInfo.dwExStyle = WS_EX_TOPMOST;//WS_EX_NONE;//#ifdef MGDEMO_ENGLISH//    CreateInfo.spCaption = "Picture View";//#else    CreateInfo.spCaption = "图片浏览";//#endif    CreateInfo.hMenu = 0;    CreateInfo.hCursor = GetSystemCursor(0);    CreateInfo.hIcon = 0;    CreateInfo.MainWindowProc = pictureWinProc;    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 = hwnd;    MainWnd = CreateMainWindow(&CreateInfo);    ShowWindow (MainWnd, SW_SHOWNORMAL);/*    ShowWindow(MainWnd, SW_SHOWNORMAL);    while(GetMessage(&Msg, MainWnd)) {        TranslateMessage(&Msg);        DispatchMessage(&Msg);    }    MainWindowThreadCleanup(MainWnd);*/}

⌨️ 快捷键说明

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