Comment traiter la notification DTN_FORMATQUERY
Cette rubrique montre comment traiter une notification de requête de format envoyée par le contrôle de sélecteur de date et d’heure (DTP).
Bon à savoir
Technologies
Prérequis
- C/C++
- Programmation de l’interface utilisateur Windows
Instructions
Un contrôle DTP envoie un code de notification DTN_FORMATQUERY pour demander des informations sur la taille maximale possible d’un champ de rappel dans le contrôle. Votre application doit gérer ce message pour s’assurer que tous les champs sont affichés correctement.
L’exemple de code C++ suivant est une fonction définie par l’application qui traite le code de notification DTN_FORMATQUERY en calculant la largeur de la chaîne la plus large possible pour un champ de rappel donné.
Avertissement de sécurité : L’utilisation incorrecte de lstrcmp peut compromettre la sécurité de votre application. Par exemple, avant d’appeler lstrcmp dans l’exemple de code suivant, vous devez vérifier que les deux chaînes sont terminées par null. Vous devez consulter Considérations relatives à la sécurité : Contrôles Microsoft Windows avant de continuer.
// DoFormatQuery processes DTN_FORMATQUERY messages to ensure that the
// DTP control displays callback fields properly.
//
void WINAPI DoFormatQuery(
HWND hwndDP,
LPNMDATETIMEFORMATQUERY lpDTFQuery)
{
HDC hdc;
HFONT hFont, hOrigFont;
// Prepare the device context for GetTextExtentPoint32 call.
hdc = GetDC(hwndDP);
hFont = (HFONT) SendMessage(hwndDP, WM_GETFONT, 0L, 0L);
if(!hFont)
hFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
hOrigFont = (HFONT) SelectObject(hdc, hFont);
// Check to see if this is the callback segment desired. If so,
// use the longest text segment to determine the maximum
// width of the callback field, and then place the information into
// the NMDATETIMEFORMATQUERY structure.
if(!lstrcmp(L"XX",lpDTFQuery->pszFormat))
GetTextExtentPoint32 (hdc,
L"366", // widest date string
3,
&lpDTFQuery->szMax);
// Reset the font in the device context; then release the context.
SelectObject(hdc,hOrigFont);
ReleaseDC(hwndDP, hdc);
}
Rubriques connexes