|
月間予定表のプロパティと色変更
前回は月間予定表コントロール(Month Calendar Control)を実装しましたが、今回は月間予定表コントロールのプロパティと色変更についてです。
プロパティで「Client Edge」をTrueにすると、次のようにくぼんだ枠がつきます。

「Modal Flame」をTrueにすると、次のように浮かび上がった枠がつきます。

「No Today」をFalseにすると、次のようにカレンダーの下に今日の日付が表示されるようになります。

「No Today Circle」をFalseにすると、次のように今日の日付のところに囲い線が表示されるようになります。

「Week Numbers」をTrueにすると、次のようにカレンダーの左側に週番号が表示されるようになります。

次は、月間予定表コントロールの配色を変更してみましょう。月間予定表コントロールはCMonthCalCtrlクラスを使って操作するので、Control型のDDX変数を使うと操作が簡単になります。
では、DDX変数を追加しましょう。月間予定表コントロールを右クリックし、「変数の追加」を選択します。
アクセスはprivate、「コントロール変数」をチェックし、カテゴリにControlを選択します。変数のデータ型はCMonthCalCtrlにします。

変数名はメンバ変数となるのでm_で始まる名前にしましょう。さらにDDXのControl変数であることがわかるようにm_xcで始まる名前にすると分かりやすくなります。この辺は好みで決めましょう。
では、コードを実装していきます。OnInitDialog()で次のように記述します。
BOOL CMonthCalDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE); // 大きいアイコンの設定
SetIcon(m_hIcon, FALSE); // 小さいアイコンの設定
// TODO: 初期化をここに追加します。
{
// カレンダーの外側の背景色
m_xcMonthCal.SetColor(MCSC_BACKGROUND, RGB( 0, 0, 0));
// カレンダー部分の背景色
m_xcMonthCal.SetColor(MCSC_MONTHBK, RGB( 64, 64, 64));
// 日付部分の文字色
m_xcMonthCal.SetColor(MCSC_TEXT, RGB( 255, 255, 255));
// タイトル部分の背景色
m_xcMonthCal.SetColor(MCSC_TITLEBK, RGB( 255, 0, 0));
// タイトル部分の文字色
m_xcMonthCal.SetColor(MCSC_TITLETEXT, RGB( 128, 0, 0));
// 当月外日付部分の文字色
m_xcMonthCal.SetColor(MCSC_TRAILINGTEXT,RGB( 128, 255, 128));
m_xvMonthCal = CTime::GetCurrentTime();
UpdateData(FALSE);
}
return TRUE;
} |
配色の変更は、CMonthCalCtrl::SetColor()関数を使います。使い方はコードを見ればわかると思いますが、色変更する部分とCOLORREF型の色情報を指定します。
では、ビルドして実行してみます。こんな風に色が変わりました。あまりセンスがなくて申し訳ないです。。

|