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

📄 listbox.c

📁 linux下的图形界面开发minigui最新源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
                return LB_ERR;            old = pData->itemHilighted;            if (new >= 0 && new != old) {                if (pData->itemCount - new >= pData->itemVisibles)                    newTop = new;                else                    newTop = MAX (pData->itemCount - pData->itemVisibles, 0);                pData->itemTop = newTop;                pData->itemHilighted = new;                lstSetVScrollInfo (hwnd, pData, TRUE);            }            if (!(dwStyle & LBS_MULTIPLESEL))                lstSelectItem (dwStyle, pData, new);            InvalidateRect (hwnd, NULL, TRUE);            return old;        }            case LB_GETCOUNT:            pData = (PLISTBOXDATA)pCtrl->dwAddData2;            return pData->itemCount;            case LB_GETCURSEL:        {            PLISTBOXITEM plbi;            int index = 0;                        pData = (PLISTBOXDATA)pCtrl->dwAddData2;            if (dwStyle & LBS_MULTIPLESEL)                return pData->itemHilighted;            plbi = pData->head;            while (plbi) {                if (plbi->dwFlags & LBIF_SELECTED)                    return index;                index ++;                plbi = plbi->next;           }                      return LB_ERR;        }            case LB_GETSELCOUNT:        {            int nSel;            PLISTBOXITEM plbi;                        pData = (PLISTBOXDATA)pCtrl->dwAddData2;            nSel = 0;            plbi = pData->head;            while (plbi) {                if (plbi->dwFlags & LBIF_SELECTED)                    nSel ++;                plbi = plbi->next;            }                        return nSel;        }            case LB_GETTOPINDEX:            pData = (PLISTBOXDATA)pCtrl->dwAddData2;            return pData->itemTop;            case LB_GETCARETINDEX:            pData = (PLISTBOXDATA)pCtrl->dwAddData2;            return pData->itemHilighted;        case LB_GETTEXTLEN:        {            PLISTBOXITEM plbi;            pData = (PLISTBOXDATA)pCtrl->dwAddData2;            plbi = lstGetItem (pData, (int)wParam);            if (plbi)                return strlen (plbi->key);            return LB_ERR;        }                case LB_GETTEXT:        {            PLISTBOXITEM plbi;            pData = (PLISTBOXDATA)pCtrl->dwAddData2;            plbi = lstGetItem (pData, (int)wParam);            if (plbi) {                strcpy ((char*)lParam, plbi->key);                return LB_OKAY;            }            return LB_ERR;        }        case LB_SETTEXT:        {            PLISTBOXITEM plbi;            char* newStr;            pData = (PLISTBOXDATA)pCtrl->dwAddData2;            plbi = lstGetItem (pData, (int)wParam);            if (plbi) {#if _USE_FIXSTR                len = strlen ((char*)lParam);                newStr = FixStrAlloc (len);                if (newStr) {                    FreeFixStr (plbi->key);                    plbi->key = newStr;                    if (len > 0)                        strcpy (plbi->key, (char*)lParam);#else                newStr = strdup ((const char*)lParam);                if (newStr) {                    free (plbi->key);                    plbi->key = newStr;#endif                    lstInvalidateItem (hwnd, pData, (int)wParam, TRUE);                }                else                    return LB_ERR;            }            return LB_ERR;        }            case LB_GETITEMDATA:        {            PLISTBOXITEM plbi;            PLISTBOXITEMINFO plbii;            if (!(dwStyle & LBS_CHECKBOX || dwStyle & LBS_USEICON)) {                return LB_ERR;            }            pData = (PLISTBOXDATA)pCtrl->dwAddData2;            if (!(plbi = lstGetItem (pData, (int)wParam)))                return LB_ERR;            plbii = (PLISTBOXITEMINFO)lParam;            if (!plbii)                return LB_ERR;            if (plbi->dwFlags & LBIF_CHECKED)                plbii->cmFlag = CMFLAG_CHECKED;            else if (plbi->dwFlags & LBIF_PARTCHECKED)                plbii->cmFlag = CMFLAG_PARTCHECKED;            else                plbii->cmFlag = CMFLAG_BLANK;            if (plbi->dwFlags & LBIF_USEBITMAP)                plbii->cmFlag |= IMGFLAG_BITMAP;            plbii->hIcon = (HICON)plbi->dwImage;            return LB_OKAY;        }            case LB_SETITEMDATA:        {            PLISTBOXITEM plbi;            PLISTBOXITEMINFO plbii;            if (!(dwStyle & LBS_CHECKBOX || dwStyle & LBS_USEICON)) {                return LB_ERR;            }            pData = (PLISTBOXDATA)pCtrl->dwAddData2;            if (!(plbi = lstGetItem (pData, (int)wParam)))                return LB_ERR;            plbii = (PLISTBOXITEMINFO)lParam;            if (!plbii)                return LB_ERR;            plbi->dwFlags &= ~LBIF_CHECKMARKMASK;            switch (plbii->cmFlag) {                case CMFLAG_CHECKED:                    plbi->dwFlags |= LBIF_CHECKED;                break;                case CMFLAG_PARTCHECKED:                    plbi->dwFlags |= LBIF_PARTCHECKED;                break;            }                            if (dwStyle & LBS_USEICON)                plbi->dwImage = (DWORD)plbii->hIcon;            else                plbi->dwImage = 0;                        lstInvalidateItem (hwnd, pData, (int)wParam, TRUE);            return LB_OKAY;        }                case LB_GETITEMADDDATA:        {            PLISTBOXITEM plbi;            pData = (PLISTBOXDATA)pCtrl->dwAddData2;            if (!(plbi = lstGetItem (pData, (int)wParam)))                return LB_ERR;            return plbi->dwAddData;        }            case LB_SETITEMADDDATA:        {            PLISTBOXITEM plbi;            pData = (PLISTBOXDATA)pCtrl->dwAddData2;            if (!(plbi = lstGetItem (pData, (int)wParam)))                return LB_ERR;            plbi->dwAddData = (DWORD)lParam;            return LB_OKAY;        }                case LB_GETCHECKMARK:        {            PLISTBOXITEM plbi;            if (!(dwStyle & LBS_CHECKBOX))                return LB_ERR;            pData = (PLISTBOXDATA)pCtrl->dwAddData2;            if (!(plbi = lstGetItem (pData, (int)wParam)))                return LB_ERR;            if (plbi->dwFlags & LBIF_CHECKED)                return CMFLAG_CHECKED;            if (plbi->dwFlags & LBIF_PARTCHECKED)                return CMFLAG_PARTCHECKED;            return CMFLAG_BLANK;        }        case LB_SETCHECKMARK:        {            PLISTBOXITEM plbi;            if (!(dwStyle & LBS_CHECKBOX))                return LB_ERR;            pData = (PLISTBOXDATA)pCtrl->dwAddData2;            if (!(plbi = lstGetItem (pData, (int)wParam)))                return LB_ERR;            plbi->dwFlags &= ~LBIF_CHECKMARKMASK;            switch (lParam) {                case CMFLAG_CHECKED:                    plbi->dwFlags |= LBIF_CHECKED;                break;                case CMFLAG_PARTCHECKED:                    plbi->dwFlags |= LBIF_PARTCHECKED;                break;            }                            lstInvalidateItem (hwnd, pData, (int)wParam, TRUE);            return LB_OKAY;        }        case LB_GETSELITEMS:        {            int  nItem;            int  nSel = 0;            int  index = 0;            int* pInt;            PLISTBOXITEM plbi;            nItem = (int)wParam;            pInt  = (int*)lParam;                        pData = (PLISTBOXDATA)pCtrl->dwAddData2;            plbi = pData->head;            while (plbi) {                if (plbi->dwFlags & LBIF_SELECTED) {                    if (pInt) {                        if (nSel < nItem)                            *(pInt + nSel) = index;                        else                             return nItem;                    }                    nSel ++;                }                                plbi = plbi->next;                index ++;            }                        return nSel;        }        break;            case LB_GETSEL:        {            PLISTBOXITEM plbi;            pData = (PLISTBOXDATA)pCtrl->dwAddData2;            plbi = lstGetItem (pData, (int)wParam);            if (plbi)                return plbi->dwFlags & LBIF_SELECTED;            return LB_ERR;        }        case LB_SETSEL:        {            PLISTBOXITEM plbi;            if (!(dwStyle & LBS_MULTIPLESEL))                return LB_ERR;            pData = (PLISTBOXDATA)pCtrl->dwAddData2;            plbi = lstGetItem (pData, (int)lParam);            if (plbi) {                if (wParam == -1)                    plbi->dwFlags ^= LBIF_SELECTED;                else if (wParam == 0)                    plbi->dwFlags &= ~LBIF_SELECTED;                else                    plbi->dwFlags |= LBIF_SELECTED;                lstInvalidateItem (hwnd, pData, (int)lParam, FALSE);            }            return LB_ERR;        }            case LB_GETITEMHEIGHT:            pData = (PLISTBOXDATA)pCtrl->dwAddData2;            return pData->itemHeight;            case LB_SETITEMHEIGHT:            pData = (PLISTBOXDATA)pCtrl->dwAddData2;            if (pData->itemHeight != LOWORD (lParam)) {                RECT rcClient;                                pData->itemHeight = LOWORD (lParam);                if (pData->itemHeight < pCtrl->pLogFont->size)                    pData->itemHeight = pCtrl->pLogFont->size;                GetClientRect (hwnd, &rcClient);                lstCalcParams (&rcClient, pData);                                lstSetVScrollInfo (hwnd, pData, TRUE);                InvalidateRect (hwnd, NULL, TRUE);            }            return  pData->itemHeight;        case MSG_SETFOCUS:        {            RECT rc;                       pData = (PLISTBOXDATA)pCtrl->dwAddData2;            if (pData->dwFlags & LBF_FOCUS)                break;                            pData->dwFlags |= LBF_FOCUS;            GetClientRect (hwnd, &rc);            hdc = GetClientDC (hwnd);            SetPenColor (hdc, PIXEL_lightwhite);            lstDrawFocusRect (hdc, pData, &rc);            ReleaseDC (hdc);            if (dwStyle & LBS_NOTIFY)                NotifyParent (hwnd, pCtrl->id, LBN_SETFOCUS);        }        return 0;                case MSG_KILLFOCUS:        {            RECT rc;                        GetClientRect (hwnd, &rc);            pData = (PLISTBOXDATA)pCtrl->dwAddData2;                        hdc = GetClientDC (hwnd);            SetPenColor (hdc, PIXEL_lightwhite);            lstDrawFocusRect (hdc, pData, &rc);            ReleaseDC (hdc);            pData->dwFlags &= ~LBF_FOCUS;            if (dwStyle & LBS_NOTIFY)                NotifyParent (hwnd, pCtrl->id, LBN_KILLFOCUS);        }        return 0;        case MSG_GETDLGCODE:            return DLGC_WANTARROWS | DLGC_WANTCHARS | DLGC_WANTENTER;        case MSG_FONTCHANGED:        {            RECT rcClient;            pData = (PLISTBOXDATA)pCtrl->dwAddData2;            if (pData->itemHeight < pCtrl->pLogFont->size)                pData->itemHeight = pCtrl->pLogFont->size;            GetClientRect (hwnd, &rcClient);            lstCalcParams (&rcClient, pData);                            lstSetVScrollInfo (hwnd, pData, TRUE);            InvalidateRect (hwnd, NULL, TRUE);            return 0;        }

⌨️ 快捷键说明

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