Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit onderwerp wordt gedemonstreerd hoe u dagstatusinformatie instelt. Het besturingselement maandkalender gebruikt dagstatusgegevens om te bepalen hoe het specifieke dagen binnen het besturingselement tekent.
Maandkalenderbesturingselementen die gebruikmaken van de MCS_DAYSTATE stijl voor dagstatussen. Informatie over de dagstatus wordt uitgedrukt als een 32-bits gegevenstype, MONTHDAYSTATE. Elke bit in een MONTHDAYSTATE bitfield (0 tot en met 30) geeft de status van een dag in een maand. Als er een bit is ingeschakeld, wordt de bijbehorende dag vetgedrukt weergegeven.
Wat u moet weten
Technologieën
Voorwaarden
- C/C++
- Programmeren van Windows-gebruikersinterface
Aanwijzingen
Een toepassing kan dagstatusgegevens expliciet instellen door het MCM_SETDAYSTATE bericht te verzenden of door de bijbehorende macro te gebruiken, MonthCal_SetDayState. Dagstatusgegevens worden echter meestal ingesteld als reactie op de MCN_GETDAYSTATE meldingscode, die wordt verzonden wanneer het besturingselement moet worden vernieuwd, omdat bijvoorbeeld een andere maand zichtbaar is geworden.
In de volgende voorbeeldcode ziet u hoe u de MCN_GETDAYSTATE meldingscode in een WM_NOTIFY berichthandler verwerkt. Het verwerkt MCN_GETDAYSTATE door op te geven dat de eerste en vijftiende dag van elke zichtbare maand moeten worden gemarkeerd. De cDayState lid van de NMDAYSTATE structuur geeft het aantal MONTHDAYSTATE waarden op die nodig zijn in de matrix, die een willekeurige maximale grootte krijgt. De code wordt vervolgens herhaald om de juiste bits in elk geldig element van de matrix in te stellen met behulp van de door de toepassing gedefinieerde BOLDDAY- macro.
#define BOLDDAY(ds, iDay) \
if (iDay > 0 && iDay < 32)(ds) |= (0x00000001 << (iDay - 1))
case WM_NOTIFY:
if (((LPNMHDR)lParam)->code == MCN_GETDAYSTATE)
{
MONTHDAYSTATE rgMonths[12] = { 0 };
int cMonths = ((NMDAYSTATE*)lParam)->cDayState;
for (int i = 0; i < cMonths; i++)
{
BOLDDAY(rgMonths[i], 1);
BOLDDAY(rgMonths[i], 15);
}
((NMDAYSTATE*)lParam)->prgDayState = rgMonths;
return TRUE;
}
break;
Verwante onderwerpen