Bagikan melalui


Mengakses Kontrol Kalender Bulan Tersemat

Objek kontrol kalender bulan yang disematkan dapat diakses dari CDateTimeCtrl objek dengan panggilan ke fungsi anggota GetMonthCalCtrl .

Catatan

Kontrol kalender bulan yang disematkan hanya digunakan ketika kontrol pemilih tanggal dan waktu tidak memiliki kumpulan gaya DTS_UPDOWN .

Ini berguna jika Anda ingin memodifikasi atribut tertentu sebelum kontrol yang disematkan ditampilkan. Untuk mencapai hal ini, tangani pemberitahuan DTN_DROPDOWN , ambil kontrol kalender bulan (menggunakan CDateTimeCtrl::GetMonthCalCtrl), dan buat modifikasi Anda. Sayangnya, kontrol kalender bulan tidak persisten.

Dengan kata lain, saat pengguna meminta tampilan kontrol kalender bulan, kontrol kalender bulan baru dibuat (sebelum pemberitahuan DTN_DROPDOWN ). Kontrol dihancurkan (setelah pemberitahuan DTN_CLOSEUP ) saat ditutup oleh pengguna. Ini berarti bahwa atribut apa pun yang Anda ubah, sebelum kontrol yang disematkan ditampilkan, hilang saat kontrol yang disematkan dimatikan.

Contoh berikut menunjukkan prosedur ini, menggunakan handler untuk pemberitahuan DTN_DROPDOWN . Kode mengubah warna latar belakang kontrol kalender bulan, dengan panggilan ke SetMonthCalColor, menjadi abu-abu. Kode adalah sebagai berikut:

void CMyDialog::OnDtnDropdownDatetimepicker1(NMHDR *pNMHDR, LRESULT *pResult)
{
   UNREFERENCED_PARAMETER(pNMHDR);

   //set the background color of the month to gray
   COLORREF clr = RGB(100, 100, 100);

   m_DateTimeCtrl.SetMonthCalColor(MCSC_MONTHBK, clr);

   *pResult = 0;
}

Seperti yang dinyatakan sebelumnya, semua modifikasi pada properti kontrol kalender bulan hilang, dengan dua pengecualian, ketika kontrol yang disematkan ditutup. Pengecualian pertama, warna kontrol kalender bulan, telah dibahas. Pengecualian kedua adalah font yang digunakan oleh kontrol kalender bulan. Anda dapat mengubah font default dengan melakukan panggilan ke CDateTimeCtrl::SetMonthCalFont, melewati handel font yang ada. Contoh berikut (di mana m_dtPicker adalah objek kontrol tanggal dan waktu) menunjukkan satu metode yang mungkin:


//create and initialize the font to be used
LOGFONT logFont = {0};
logFont.lfHeight = -12;
logFont.lfWeight = FW_NORMAL;
logFont.lfCharSet = DEFAULT_CHARSET;
_tcscpy_s(logFont.lfFaceName, _countof(logFont.lfFaceName),
          _T("Verdana"));

m_MonthCalFont.CreateFontIndirect(&logFont);
m_DateTimeCtrl.SetMonthCalFont(m_MonthCalFont);

Setelah font diubah, dengan panggilan ke CDateTimeCtrl::SetMonthCalFont, font baru disimpan dan digunakan saat kalender bulan berikutnya akan ditampilkan.

Baca juga

Menggunakan CDateTimeCtrl
Kontrol