Aylık Takvim Denetiminin Gün Durumunu Ayarlama
Ay takvim denetiminin özniteliklerinden biri, denetimin gün durumu olarak adlandırılan bilgileri ayın her günü için depolama olanağıdır. Bu bilgiler, şu anda görüntülenen ayın belirli tarihlerini vurgu etmek için kullanılır.
Dekont
Nesne, CMonthCalCtrl
gün durumu bilgilerini görüntülemek için MCS_DAYSTATE stiline sahip olmalıdır.
Gün durumu bilgileri, MONTHDAYSTATE adlı 32 bit veri türü olarak ifade edilir. MONTHDAYSTATE bit alanındaki (1 ile 31 arası) her bit, ayın bir gününün durumunu temsil eder. Bir bit açıksa ilgili gün kalın olarak görüntülenir; aksi takdirde vurgu olmadan görüntülenir.
Ay takvim denetiminin gün durumunu ayarlamak için iki yöntem vardır: açıkça CMonthCalCtrl::SetDayState çağrısıyla veya MCN_GETDAYSTATE bildirim iletisini işleyerek.
MCN_GETDAYSTATE Bildirim İletisini İşleme
MCN_GETDAYSTATE iletisi, görünür aylar içindeki günlerin nasıl görüntülenmesi gerektiğini belirlemek için denetim tarafından gönderilir.
Dekont
Denetim, görünür aya göre önceki ve sonraki ayları önbelleğe aldığından, her yeni ay seçildiğinde bu bildirimi alırsınız.
Bu iletiyi düzgün bir şekilde işlemek için kaç ay gün durum bilgisi istendiğini belirlemeniz, uygun değerlerle MONTHDAYSTATE yapıları dizisi başlatmanız ve ilgili yapı üyesini yeni bilgilerle başlatmanız gerekir. Gerekli adımların ayrıntıları verilen aşağıdaki yordamda, m_monthcal adlı bir nesnenin ve mdState adlı MONTHDAYSTATE nesnelerinin bir dizisinin olduğu varsayılır.CMonthCalCtrl
MCN_GETDAYSTATE bildirim iletisini işlemek için
Sınıf Sihirbazı'nı kullanarak m_monthcal nesnesine MCN_GETDAYSTATE iletisi için bir bildirim işleyicisi ekleyin (bkz. İletileri İşlevlere Eşleme).
İşleyicinin gövdesine aşağıdaki kodu ekleyin:
LPNMDAYSTATE pDayState = reinterpret_cast<LPNMDAYSTATE>(pNMHDR); int iMax = pDayState->cDayState; for (int i = 0; i < iMax; i++) { pDayState->prgDayState[i] = (MONTHDAYSTATE)0; // init to 0 pDayState->prgDayState[i] |= 0x01 << 14; // set 15th bit to 1 }
Örnek, pNMHDR işaretçisini uygun türe dönüştürür, ardından kaç ay bilgi istendiğini (
pDayState->cDayState
) belirler. Her ay için geçerli bit alanı (pDayState->prgDayState[i]
) sıfır olarak başlatılır ve gerekli tarihler ayarlanır (bu örnekte, her ayın 15'i).