CMonthCalCtrl::SetDayState
月間予定表コントロールの日の表示を設定します。
BOOL SetDayState(
int nMonths,
LPMONTHDAYSTATE pStates
);
パラメーター
nMonths
の要素が pStates が指す配列内にあるかを示す値。pStates
月間予定表コントロールが表示で毎日の描画方法を定義する値の MONTHDAYSTATE の配列へのポインター。MONTHDAYSTATE のデータ型は各ビット (1 ~ 31) は、二つ月の日の状態を表すビット フィールドです。ビットがオンの場合は、対応する日付は、太字で表示されています; それ以外の場合は文字なしで表示されます。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
このメンバー関数は Windows SDKに記述されている Win32 メッセージの動作を MCM_SETDAYSTATE実行します。
使用例
void CMonthCalDlg::OnBnClickedDaystatebutton()
{
// First, we must find the visible range. The array we pass to the
// SetDayState() function must be large enough to hold days for all
// of the visible months. Even if a month is _partially_ visible,
// we must have MONTHDAYSTATE data for it in the array we pass.
// GetMonthRange() returns the range of days currently visible in
// the control, along with a count of visible months. This array
// will be up to 2 months larger than the number of "pages" visible
// in the control.
SYSTEMTIME timeFrom;
SYSTEMTIME timeUntil;
int nCount = m_calCtrl1.GetMonthRange(&timeFrom, &timeUntil, GMR_DAYSTATE);
// Allocate the state array based on the return value.
LPMONTHDAYSTATE pDayState;
pDayState = new MONTHDAYSTATE[nCount];
memset(pDayState, 0, sizeof(MONTHDAYSTATE) * nCount);
// Find the first fully visible month.
int nIndex = (timeFrom.wDay == 1) ? 0 : 1;
// Set the 4th day, 19th day, and 26th day of the first
// _fully_ visible month as bold.
pDayState[nIndex] |= 1 << 3; // 4th day
pDayState[nIndex] |= 1 << 18; // 19th day
pDayState[nIndex] |= 1 << 25; // 25th day
// Set state and clean up
VERIFY(m_calCtrl1.SetDayState(nCount, pDayState));
delete [] pDayState;
}
必要条件
Header: afxdtctl.h