MFC カレンダ-を搭載

カレンダ-を実装します、大分賑やかになって来ましたね!まだまだこれからふやしますよ!皆さん是非応用してくださいね!



カレンダ-コントロ-ルの実装

カレンダ-コントロ-ルを実装しました、これらを制御する為には色々な関数も追加しなければ行けません。主にドキュメントクラスに実装します。主に年数とか日とかユ-ザ-が操作した結果で処理は変化します、


下記のコ-ドはドキュメントクラスに

/////////////////////////////////////////////////////////////////////////////
///////////////////////////// 月初めの曜日を求める ///////////////////////
/////////////////////////////////////////////////////////////////////////////
CString CControlPracticeDoc::MoonFrsteDay(SYSTEMTIME SysTemTime)
{
int day=SysTemTime.wDay;//今日の日
int week=SysTemTime.wDayOfWeek;//今日の曜日
CString FirstWeek=wDayOfWeekCheck(week);

for(int i=day;0<i;i--){
        --week;
        if(week<0)    week=6;
        if(week==6)    break;
        }

return wDayOfWeekCheck(week-1);

}



/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
CString CControlPracticeDoc::MoonCheck(int Moon)
{
CString moon=_T(“”);

switch (Moon)
{
    case 1:
        moon = _T("一月");
        break;

    case 2:
        moon = _T("二月");
        break;

    case 3:
        moon = _T("三月");
        break;

    case 4:
        moon = _T("四月");
        break;

    case 5:
        moon = _T("五月");
        break;

    case 6:
        moon = _T("六月");
        break;

    case 7:
        moon = _T("七月");
        break;

    case 8:
        moon = _T("八月");
        break;

    case 9:
        moon = _T("九月");
        break;

    case 10:
        moon = _T("十月");
        break;

    case 11:
        moon = _T("十一月");
        break;

    case 12:
        moon = _T("十二月");
        break;
    }

return moon;

}



/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
CString CControlPracticeDoc::wDayOfWeekCheck(int wDayOfWeek)
{
CString day=_T(“”);

switch (wDayOfWeek)
{
    case 0:
        day = _T("日曜日"); 
        break;

    case 1:
        day = _T("月曜日");
        break;

    case 2:
        day = _T("火曜日");
         break;

    case 3:
        day = _T("水曜日");
        break;

    case 4:
        day = _T("木曜日");
        break;

    case 5:
        day = _T("金曜日");
        break;

    case 6:
        day = _T("土曜日");
        break;
}

return day;
}


次にイベントハンドラを追加します

RightFormVewに追加します、これによりカレンダ-のどこが選択されたのか知る事が出来ます。


/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
void RightFormVew::OnMcnSelectMonthcalendar1(NMHDR *pNMHDR, LRESULT *pResult)
{

CString time ;
CControlPracticeDoc* pDoc = GetDocument();

LPNMSELCHANGE pSelChange = reinterpret_cast<LPNMSELCHANGE>(pNMHDR);
SYSTEMTIME st    ;
GetLocalTime(&st);
//==============================================================================
time.Format(_T("%d/%d/%d/%d:%d"),st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute);

*pResult = 0;


}

/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
void RightFormVew::OnMcnSelchangeMonthcalendar1(NMHDR *pNMHDR, LRESULT *pResult)
{

CString time ;
CControlPracticeDoc* pDoc = GetDocument();

LPNMSELCHANGE pSelChange = reinterpret_cast<LPNMSELCHANGE>(pNMHDR);
SYSTEMTIME st    ;
GetLocalTime(&st);
//==============================================================================
time.Format(_T("%d/%d/%d/%d:%d"),st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute);

*pResult = 0;


}

/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
void RightFormVew::OnMcnGetdaystateMonthcalendar1(NMHDR *pNMHDR, LRESULT *pResult)
{

CString time ;
CControlPracticeDoc* pDoc = GetDocument();

LPNMSELCHANGE pSelChange = reinterpret_cast<LPNMSELCHANGE>(pNMHDR);
SYSTEMTIME st    ;
GetLocalTime(&st);
//==============================================================================
time.Format(_T("%d/%d/%d/%d:%d"),st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute);

*pResult = 0;


}


MFC BMPイメージを保存するには  MFC ハードコピ-を取り込むには   BMPファイルのアクセス

リストコントロ-ルのセル選択を実装