SOL9 2.0 Class: MonthCalendar

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * MonthCalendar.h 
 * Copyright (c) 2011 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL++2000
// 2000.02.18
#pragma once

#include <sol\Primitive.h>

namespace SOL {

class MonthCalendar :public Primitive {
private:
    static const long STYLE = (WS_TABSTOP|WS_BORDER|WS_HSCROLL);

public:
    MonthCalendar(): Primitive() { }

     MonthCalendar(View* parent, HWND hwnd)
        :Primitive(parent, hwnd) { }
public:

    MonthCalendar(View* parent, const TCHAR* name, Args& args)
    :Primitive(parent, name, 
            args.set(XmNpredefined, TRUE)
                .set(XmNstyle, (ulong)MCS_DAYSTATE)
                .set(XmNclassName, (ulong)MONTHCAL_CLASS))
    {
        setValues(args);
    }

public:
    virtual Boolean create(View* parent, const TCHAR* name, Args& args)
    {
        Boolean rc = Primitive::create(parent, name, 
            args.set(XmNpredefined, TRUE)
                .set(XmNstyle, (ulong)MCS_DAYSTATE)
                .set(XmNclassName, (ulong)MONTHCAL_CLASS));

        setValues(args);

        return rc;
    }

public:
    Arg* MonthCalendar::getCallbackTable(int* num)
    {
        static Arg table[] = {
        {XmNitemChangingCallback,    LVN_ITEMCHANGING},
        {XmNitemChangedCallback,    LVN_ITEMCHANGED},
        {XmNinsertItemCallback,        LVN_INSERTITEM},
        {XmNdeleteItemCallback,        LVN_DELETEITEM},
        {XmNdeleteAllItemsCallback,    LVN_DELETEALLITEMS},
        {XmNbeginLabelEditCallback,    LVN_BEGINLABELEDIT},
        {XmNenableEditCallback,        LVN_ENDLABELEDIT},
        {XmNcolumnClickCallback,    LVN_COLUMNCLICK},
        {XmNbeginDragCallback,        LVN_BEGINDRAG},
        {XmNbeginRDragCallback,        LVN_BEGINRDRAG},
        {XmNgetDispInfoCallback,    LVN_GETDISPINFO},
        {XmNsetDispInfoCallback,    LVN_SETDISPINFO},

        {XmNkeyDownCallback,        LVN_KEYDOWN},    
        };
    
        *num = XtNumber(table);
        return table;
    }

    /* colorID takes 
        MCSC_BACKGROUND 
        MCSC_MONTHBK  
        MCSC_TEXT  
        MCSC_TITLEBK 
        MCSC_TITLETEXT 
        MCSC_TRAILINGTEXT 
    */
    COLORREF getColor(int colorID) {
            return (COLORREF)send(MCM_GETCOLOR, colorID, 0);
    }

    int        getCurSel(SYSTEMTIME* sysTime) {
            return (int)send(MCM_GETCURSEL, 0, (WPARAM)sysTime);
    }

    DWORD    getFirstDayOfWeek() {
            return (DWORD)send(MCM_GETFIRSTDAYOFWEEK, 0, 0);
    }

    int        getMaxSelCount() {
            return (int)send(MCM_GETMAXSELCOUNT, 0, 0);
    }

    int        getMinReqRect(RECT* rect) {
            return (int)send(MCM_GETMINREQRECT, 0, (LPARAM)rect);
    }

    int        getMonthDelta() {
            return (int)send(MCM_GETMONTHDELTA, 0, 0);
    }
    int        getMonthRange(int flag, SYSTEMTIME* sysTime) {
            return (int)send(MCM_GETMONTHRANGE, flag, (LPARAM)sysTime);
    }

    int        getRange(SYSTEMTIME* sysTimeArray) {
            return (int)send(MCM_GETRANGE, 0, (LPARAM)sysTimeArray);
    }

    int        getSelRange(SYSTEMTIME* sysTimeArray) {
            return (int)send(MCM_GETSELRANGE, 0, (LPARAM)sysTimeArray);
    }

    int        getToday(SYSTEMTIME* today) {
            return (int)send(MCM_GETSELRANGE, 0, (LPARAM)today);
    }

    int        getUnicodeFormat() {
            return (int)send(MCM_GETUNICODEFORMAT, 0, 0);
    }

    DWORD    getHitTest(MCHITTESTINFO* info) {
            return (DWORD)send(MCM_HITTEST, 0, (LPARAM)info);
    }

    COLORREF setColor(int i, COLORREF color) {
            return (DWORD)send(MCM_SETCOLOR, i, (LPARAM)color);
    }

    int     setCurSel(SYSTEMTIME* sysTime) {
            return (int)send(MCM_SETCURSEL, 0, (LPARAM)sysTime);
    }
    int     setDayState(int num, MONTHDAYSTATE* stateArray) {
            return (int)send(MCM_SETDAYSTATE, num, (LPARAM)stateArray);
    }
    int     setFirstDayOfWeek(int day) {
            return (int)send(MCM_SETFIRSTDAYOFWEEK, 0, (LPARAM)day);
    }
    int     setMaxSelCount(int max) {
            return (int)send(MCM_SETMAXSELCOUNT, max, 0);
    }
    int     setMonthDelta(int delta) {
            return (int)send(MCM_SETMONTHDELTA, delta, 0);
    }

    int     setRange(short whichLimit, SYSTEMTIME* sysTimeArray) {
            return (int)send(MCM_SETMAXSELCOUNT, whichLimit, (LPARAM)sysTimeArray);
    }
    int     setSelRange(SYSTEMTIME* sysTimeArray) {
            return (int)send(MCM_SETMAXSELCOUNT, 0, (LPARAM)sysTimeArray);
    }
    int     setToday(SYSTEMTIME* sysTime) {
            return (int)send(MCM_SETTODAY, 0, (LPARAM)sysTime);
    }

    int     setUnicodeFormat(BOOL flag) {
            return (int)send(MCM_SETUNICODEFORMAT, (WPARAM)flag, 0);
    }
};

}



Last modified: 1 Feb 2012

Copyright (c) 2009-2012 Antillia.com ALL RIGHTS RESERVED.