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);
}

Verwenden von Steuerelementen für die Datums- und Uhrzeitauswahl

Datums- und Uhrzeitauswahl-Steuerelementreferenz

Datums- und Uhrzeitauswahl