Verarbeiten der _ DTN-FORMATQUERY-Benachrichtigung
In diesem Thema wird veranschaulicht, wie eine Formatabfragebenachrichtigung verarbeitet wird, die vom DTP-Steuerelement (Date and Time Picker) gesendet wird.
Wichtige Informationen
Technologien
Voraussetzungen
- C/C++
- Windows Benutzeroberfläche-Programmierung
Instructions
Ein DTP-Steuerelement sendet einen DTN _ FORMATQUERY-Benachrichtigungscode, um Informationen zur maximal möglichen Größe eines Rückruffelds innerhalb des Steuerelements anzufordern. Ihre Anwendung muss diese Meldung verarbeiten, um sicherzustellen, dass alle Felder ordnungsgemäß angezeigt werden.
Das folgende C++-Codebeispiel ist eine anwendungsdefinierte Funktion, die den DTN FORMATQUERY-Benachrichtigungscode _ verarbeitet, indem die Breite der größtmöglichen Zeichenfolge für ein bestimmtes Rückruffeld berechnet wird.
Sicherheitswarnung: Die falsche Verwendung von lstrcmp kann die Sicherheit Ihrer Anwendung gefährden. Bevor Sie z. B. lstrcmp im folgenden Codebeispiel aufrufen, sollten Sie sicherstellen, dass die beiden Zeichenfolgen NULL-terminiert sind. Lesen Sie Sicherheitsüberlegungen: Microsoft Windows Controls, bevor Sie fortfahren.
// 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);
}