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

📄 monthcalendar.c

📁 libminigui-1.3.0.tar.gz。 miniGUI的库函数源代码!
💻 C
📖 第 1 页 / 共 4 页
字号:
            PSYSTEMTIME ptoday = NULL;            ptoday = (PSYSTEMTIME) lParam;            mc_data = (PMONCALDDATA) GetWindowAdditionalData2 (hWnd);            ptoday->year = mc_data->sys_year;            ptoday->month = mc_data->sys_month;            ptoday->day = mc_data->sys_day;            ptoday->weekday = mc_data->sys_WeekDay;        }            break;                    case MCM_GETMINREQRECTW:            return MINWNDRECT_W;                break;                    case MCM_GETMINREQRECTH:            return MINWNDRECT_H;            break;                    case MCM_GETCOLOR:        {            PMCCOLORINFO pmcci, pmccinfo;            pmccinfo = (PMCCOLORINFO) lParam;            mc_data = (PMONCALDDATA) GetWindowAdditionalData2 (hWnd);            pmcci = (PMCCOLORINFO) mc_data->dwClrData;                        pmccinfo->clr_titlebk         = pmcci->clr_titlebk;            pmccinfo->clr_titletext     = pmcci->clr_titletext;            pmccinfo->clr_arrow         = pmcci->clr_arrow;            pmccinfo->clr_arrowHibk     = pmcci->clr_arrowHibk;            pmccinfo->clr_daybk            = pmcci->clr_daybk;            pmccinfo->clr_dayHibk        = pmcci->clr_dayHibk;            pmccinfo->clr_daytext        = pmcci->clr_daytext;            pmccinfo->clr_trailingtext    = pmcci->clr_trailingtext;            pmccinfo->clr_dayHitext        = pmcci->clr_dayHitext;            pmccinfo->clr_weekcaptbk    = pmcci->clr_weekcaptbk;            pmccinfo->clr_weekcapttext     = pmcci->clr_weekcapttext;        }            break;                    case MCM_SETCOLOR:        {            PMCCOLORINFO pmcci, pmcci_new;                        mc_data = (PMONCALDDATA) GetWindowAdditionalData2 (hWnd);            pmcci = (PMCCOLORINFO) mc_data->dwClrData;            pmcci_new = (PMCCOLORINFO) lParam;                        if (pmcci_new->clr_titlebk >= 0)                 pmcci->clr_titlebk         = pmcci_new->clr_titlebk;            if (pmcci_new->clr_titletext >= 0)                pmcci->clr_titletext     = pmcci_new->clr_titletext;            if (pmcci->clr_arrow >= 0)                pmcci->clr_arrow         = pmcci_new->clr_arrow;            if (pmcci->clr_arrowHibk >= 0)                pmcci->clr_arrowHibk     = pmcci_new->clr_arrowHibk;            if (pmcci->clr_daybk >= 0)                pmcci->clr_daybk        = pmcci_new->clr_daybk;            if (pmcci->clr_dayHibk >= 0)                pmcci->clr_dayHibk        = pmcci_new->clr_dayHibk;            if (pmcci->clr_daytext >= 0)                pmcci->clr_daytext        = pmcci_new->clr_daytext;            if (pmcci->clr_trailingtext >= 0)                pmcci->clr_trailingtext    = pmcci_new->clr_trailingtext;            if (pmcci->clr_dayHitext >= 0)                pmcci->clr_dayHitext    = pmcci_new->clr_dayHitext;            if (pmcci->clr_weekcaptbk >= 0)                pmcci->clr_weekcaptbk    = pmcci_new->clr_weekcaptbk;            if (pmcci->clr_weekcapttext >= 0)                 pmcci->clr_weekcapttext = pmcci_new->clr_weekcapttext;                        InvalidateRect (hWnd, NULL, FALSE);            }            break;                    case MSG_DESTROY:            mc_data = (PMONCALDDATA) GetWindowAdditionalData2 (hWnd);            mcMonthCalendarCleanUp (mc_data);            free (mc_data);                break;                        /*        case MSG_MOUSEMOVE:        {            int x, y;            RECT rcClient, rcMonth, rcYear, rcMDay;            RECT rcAML, rcAMR, rcAYL, rcAYR;                        mc_data = (PMONCALDDATA) GetWindowAdditionalData2 (hWnd);            x = LOSWORD (lParam);            y = HISWORD (lParam);            mcGetRects (hWnd, &rcClient, &rcMonth, &rcYear, &rcMDay);            mcGetArrowRects (&rcMonth, &rcYear, &rcAML, &rcAMR, &rcAYL, &rcAYR);                            if (PtInRect (&rcAMR, x, y)) {                hdc = GetClientDC (hWnd);                mcDrawPageArrow (mc_data, hdc, &rcAMR, TRUE, TRUE);                ReleaseDC (hdc);            }             else if (PtInRect (&rcAML, x, y)) {                hdc = GetClientDC (hWnd);                mcDrawPageArrow (mc_data, hdc, &rcAML, FALSE, TRUE);                ReleaseDC (hdc);            }            else if (PtInRect (&rcAYR, x, y)) {                hdc = GetClientDC (hWnd);                mcDrawPageArrow (mc_data, hdc, &rcAYR, TRUE, TRUE);                ReleaseDC (hdc);            }            else if (PtInRect (&rcAYL, x, y)) {                hdc = GetClientDC (hWnd);                mcDrawPageArrow (mc_data, hdc, &rcAYL, FALSE, TRUE);                ReleaseDC (hdc);            }            else {                hdc = GetClientDC (hWnd);                mcDrawPageArrow (mc_data, hdc, &rcAMR, TRUE, FALSE);                mcDrawPageArrow (mc_data, hdc, &rcAML, FALSE, FALSE);                mcDrawPageArrow (mc_data, hdc, &rcAYR, TRUE, FALSE);                mcDrawPageArrow (mc_data, hdc, &rcAYL, FALSE, FALSE);                ReleaseDC (hdc);            }        }            break;            */                    case MSG_LBUTTONDOWN:        {            int x, y;            RECT rcClient, rcMonth, rcYear, rcMDay;            RECT rcAML, rcAMR, rcAYL, rcAYR;                        x = LOSWORD (lParam);            y = HISWORD (lParam);            mcGetRects (hWnd, &rcClient, &rcMonth, &rcYear, &rcMDay);            mcGetArrowRects (&rcMonth, &rcYear, &rcAML, &rcAMR, &rcAYL, &rcAYR);            InflateRect (&rcAML, 6, 2);            InflateRect (&rcAMR, 6, 2);            InflateRect (&rcAYR, 6, 2);            InflateRect (&rcAYL, 6, 2);            if (PtInRect (&rcAMR, x, y)) {                if (dwStyle & MCS_NOTIFY)                    NotifyParent (hWnd, GetDlgCtrlID (hWnd), MCN_DATECHANGE);                        mc_data = (PMONCALDDATA) GetWindowAdditionalData2 (hWnd);                if (mc_data->cur_month != 12)                     mc_data->cur_month++;                else {                    mc_data->cur_month = 1;                     mc_data->cur_year++;                    InvalidateRect (hWnd, &rcYear, FALSE);                }                mc_data->monlen = GetMonLen (mc_data->cur_year, mc_data->cur_month);                while (mc_data->cur_day > mc_data->monlen) {                    mc_data->cur_day--;                }                mc_data->WeekDay1 = GetWeekDay(mc_data->cur_year, mc_data->cur_month, 1);                mcGetCurDayPos (mc_data, mc_data->cur_day,                    &mc_data->cur_line, &mc_data->cur_WeekDay);                    InvalidateRect (hWnd, &rcMonth, FALSE);                InvalidateRect (hWnd, &rcMDay, FALSE);            }            else if (PtInRect (&rcAML, x, y)) {                if (dwStyle & MCS_NOTIFY)                    NotifyParent (hWnd, GetDlgCtrlID (hWnd), MCN_DATECHANGE);                        mc_data = (PMONCALDDATA) GetWindowAdditionalData2 (hWnd);                if (mc_data->cur_month != 1)                     mc_data->cur_month--;                else {                    if (mc_data->cur_year <= 1902)                        break;                    mc_data->cur_month = 12;                    mc_data->cur_year--;                    InvalidateRect (hWnd, &rcYear, FALSE);                }                mc_data->monlen = GetMonLen (mc_data->cur_year, mc_data->cur_month);                while (mc_data->cur_day > mc_data->monlen) {                    mc_data->cur_day--;                }                mc_data->WeekDay1 = GetWeekDay(mc_data->cur_year, mc_data->cur_month, 1);                mcGetCurDayPos (mc_data, mc_data->cur_day,                    &mc_data->cur_line, &mc_data->cur_WeekDay);                    InvalidateRect (hWnd, &rcMonth, FALSE);                InvalidateRect (hWnd, &rcMDay, FALSE);            }            else if (PtInRect (&rcAYR, x, y)) {                if (dwStyle & MCS_NOTIFY)                    NotifyParent (hWnd, GetDlgCtrlID (hWnd), MCN_DATECHANGE);                        mc_data = (PMONCALDDATA) GetWindowAdditionalData2 (hWnd);                mc_data->cur_year++;                mc_data->monlen = GetMonLen (mc_data->cur_year, mc_data->cur_month);                while (mc_data->cur_day > mc_data->monlen) {                    mc_data->cur_day--;                }                mc_data->WeekDay1 = GetWeekDay(mc_data->cur_year, mc_data->cur_month, 1);                mcGetCurDayPos (mc_data, mc_data->cur_day,                    &mc_data->cur_line, &mc_data->cur_WeekDay);                    InvalidateRect (hWnd, &rcYear, FALSE);                InvalidateRect (hWnd, &rcMDay, FALSE);                //InvalidateRect (hWnd, NULL, FALSE);            }            else if (PtInRect (&rcAYL, x, y)) {                if (dwStyle & MCS_NOTIFY)                    NotifyParent (hWnd, GetDlgCtrlID (hWnd), MCN_DATECHANGE);                        mc_data = (PMONCALDDATA) GetWindowAdditionalData2 (hWnd);                if (mc_data->cur_year <= 1902)                    break;                mc_data->cur_year--;                mc_data->monlen = GetMonLen (mc_data->cur_year, mc_data->cur_month);                while (mc_data->cur_day > mc_data->monlen) {                    mc_data->cur_day--;                }                mc_data->WeekDay1 = GetWeekDay(mc_data->cur_year, mc_data->cur_month, 1);                mcGetCurDayPos (mc_data, mc_data->cur_day,                    &mc_data->cur_line, &mc_data->cur_WeekDay);                    InvalidateRect (hWnd, &rcYear, FALSE);                InvalidateRect (hWnd, &rcMDay, FALSE);                //InvalidateRect (hWnd, NULL, FALSE);            }                            else if (PtInRect (&rcMDay, x, y)) {                int line, weekday, pline, pweekday, posindex;                RECT rcItemDay; //rcPItemDay;                                mc_data = (PMONCALDDATA) GetWindowAdditionalData2 (hWnd);                                pline = mc_data->cur_line;                pweekday = mc_data->cur_WeekDay;                mcGetItemRectFromPos (mc_data, &rcMDay,                                         &rcItemDay, &line, &weekday, x, y);                posindex = line * 7 + weekday + 1;                if (posindex < mc_data->WeekDay1+1) {                    if (dwStyle & MCS_NOTIFY)                        NotifyParent (hWnd, GetDlgCtrlID (hWnd), MCN_DATECHANGE);                        if (mc_data->cur_month != 1)                         mc_data->cur_month--;                    else {                        if (mc_data->cur_year <= 1902)                            break;                        mc_data->cur_month = 12;                        mc_data->cur_year--;                        InvalidateRect (hWnd, &rcYear, FALSE);                    }                    mc_data->monlen = GetMonLen (mc_data->cur_year,                                                  mc_data->cur_month);                    while (mc_data->cur_day > mc_data->monlen) {                        mc_data->cur_day--;                    }                    mc_data->WeekDay1 = GetWeekDay(mc_data->cur_year,                                                    mc_data->cur_month, 1);                    mcGetCurDayPos (mc_data, mc_data->cur_day,                        &mc_data->cur_line, &mc_data->cur_WeekDay);                        InvalidateRect (hWnd, &rcMonth, FALSE);                    InvalidateRect (hWnd, &rcMDay, FALSE);                }                else if (posindex >mc_data->monlen + mc_data->WeekDay1) {                    if (dwStyle & MCS_NOTIFY)                        NotifyParent (hWnd, GetDlgCtrlID (hWnd), MCN_DATECHANGE);                        if (mc_data->cur_month != 12)                         mc_data->cur_month++;                    else {                        mc_data->cur_month = 1;                         mc_data->cur_year++;                        InvalidateRect (hWnd, &rcYear, FALSE);                    }                    mc_data->monlen = GetMonLen (mc_data->cur_year,                                                  mc_data->cur_month);                    while (mc_data->cur_day > mc_data->monlen) {                        mc_data->cur_day--;                    }                    mc_data->WeekDay1 = GetWeekDay(mc_data->cur_year,                                                    mc_data->cur_month, 1);                    mcGetCurDayPos (mc_data, mc_data->cur_day,                            &mc_data->cur_line, &mc_data->cur_WeekDay);                        InvalidateRect (hWnd, &rcMonth, FALSE);                    InvalidateRect (hWnd, &rcMDay, FALSE);                }                else if (line != pline || weekday != pweekday) {                    int newday;                                        if (dwStyle & MCS_NOTIFY)                        NotifyParent (hWnd, GetDlgCtrlID (hWnd), MCN_DATECHANGE);                            if (dwStyle & MCS_NOTIFY)                        NotifyParent (hWnd, GetDlgCtrlID (hWnd), MCN_DAYCHANGE);                    hdc = GetClientDC (hWnd);                    newday = (line*7+weekday+1) - (mc_data->WeekDay1+1) + 1;                    mcDrawDay (hdc, mc_data, &rcMDay, newday);                    ReleaseDC (hdc);                }            }        }                break;                    case MSG_LBUTTONUP:            break;        case MSG_PAINT:            hdc = BeginPaint (hWnd);            mc_data = (PMONCALDDATA) GetWindowAdditionalData2 (hWnd);            mcDrawCalendar (hWnd, hdc, mc_data);            EndPaint (hWnd, hdc);            return 0;                    default:            break;    }    return DefaultControlProc (hWnd, message, wParam, lParam);}#endif /* _EXT_CTRL_MONTHCAL */

⌨️ 快捷键说明

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