Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Det här avsnittet visar hur du bearbetar ett formatfrågemeddelande som skickas av kontrollen för datum- och tidsväljaren (DTP).
Vad du behöver veta
Teknologier
Förutsättningar
- C/C++
- Programmering av Windows-användargränssnitt
Instruktioner
En DTP-kontroll skickar en DTN_FORMATQUERY-meddelandekod för att begära information om den maximala möjliga storleken på ett callback-fält i kontrollen. Programmet måste hantera det här meddelandet för att säkerställa att alla fält visas korrekt.
Följande C++-kodexempel är en programdefinierad funktion som bearbetar meddelandekoden DTN_FORMATQUERY genom att beräkna bredden på den bredaste möjliga strängen för ett givet återuppringningsfält.
Säkerhetsvarning: Att använda lstrcmp felaktigt kan äventyra programmets säkerhet. Innan du till exempel anropar lstrcmp i följande kodexempel bör du kontrollera att de två strängarna är null-avslutade. Du bör granska säkerhetsöverväganden: Microsoft Windows-kontroller innan du fortsätter.
// 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);
}
Relaterade ämnen