Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
U kunt streams gebruiken om gegevens over te dragen naar of uit een uitgebreid besturingselement voor bewerken. Een stroom wordt gedefinieerd door een EDITSTREAM structuur, waarmee een buffer en een door de toepassing gedefinieerde callback-functie worden opgegeven.
Gebruik het EM_STREAMIN bericht om gegevens in een rich edit control te lezen, dat wil zeggen, de gegevens in te streamen. Het besturingselement roept herhaaldelijk de callback-functie van de toepassing aan, waarmee telkens een deel van de gegevens in de buffer wordt overgedragen.
Als u de inhoud van een rich edit control wilt opslaan (dat wil zeggen, de gegevens te streamen), kunt u het EM_STREAMOUT bericht gebruiken. Het besturingselement schrijft herhaaldelijk naar de buffer en roept vervolgens de callback-functie van de toepassing aan. Voor elke aanroep slaat de callback-functie de inhoud van de buffer op.
Wat u moet weten
Technologieën
Voorwaarden
- C/C++
- Programmeren van Windows-gebruikersinterface
Aanwijzingen
Een Stream gebruiken
In het volgende codevoorbeeld ziet u hoe u een .rtf-bestand kunt lezen in een uitgebreid besturingselement voor bewerken. De bestandsgreep wordt doorgegeven aan de callback-functie via de dwCookie lid van de EDITSTREAM structuur.
DWORD CALLBACK EditStreamCallback(DWORD_PTR dwCookie,
LPBYTE lpBuff,
LONG cb,
PLONG pcb)
{
HANDLE hFile = (HANDLE)dwCookie;
if (ReadFile(hFile, lpBuff, cb, (DWORD *)pcb, NULL))
{
return 0;
}
return -1;
}
BOOL FillRichEditFromFile(HWND hwnd, LPCTSTR pszFile)
{
BOOL fSuccess = FALSE;
HANDLE hFile = CreateFile(pszFile, GENERIC_READ,
FILE_SHARE_READ, 0, OPEN_EXISTING,
FILE_FLAG_SEQUENTIAL_SCAN, NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
EDITSTREAM es = { 0 };
es.pfnCallback = EditStreamCallback;
es.dwCookie = (DWORD_PTR)hFile;
if (SendMessage(hwnd, EM_STREAMIN, SF_RTF, (LPARAM)&es) && es.dwError == 0)
{
fSuccess = TRUE;
}
CloseHandle(hFile);
}
return fSuccess;
}
Verwante onderwerpen