Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym temacie przedstawiono sposób przetwarzania powiadomienia o formacie zapytania wysyłanego przez kontrolkę selektora daty i godziny (DTP).
Co musisz wiedzieć
Technologie
Warunki wstępne
- C/C++
- Programowanie interfejsu użytkownika systemu Windows
Instrukcje
Kontrolka DTP wysyła kod powiadomienia DTN_FORMATQUERY w celu żądania informacji o maksymalnym możliwym rozmiarze pola wywołania zwrotnego w kontrolce. Aplikacja musi obsłużyć ten komunikat, aby upewnić się, że wszystkie pola są prawidłowo wyświetlane.
Poniższy przykład kodu C++ to funkcja zdefiniowana przez aplikację, która przetwarza kod powiadomień DTN_FORMATQUERY, obliczając szerokość najszerszego możliwego ciągu dla danego pola wywołania zwrotnego.
Ostrzeżenie o zabezpieczeniach: Użycie lstrcmp niepoprawnie może naruszyć bezpieczeństwo aplikacji. Na przykład przed wywołaniem lstrcmp w poniższym przykładzie kodu upewnij się, że dwa ciągi są zakończone wartością null. Przed kontynuowaniem należy zapoznać się z zagadnieniami dotyczącymi zabezpieczeń : Mechanizmy kontroli systemu Microsoft Windows.
// 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);
}
Tematy pokrewne