如何使用數據流
您可以使用資料流將資料傳入或移出豐富的編輯控制件。 數據流是由 EDITSTREAM 結構所定義,其會指定緩衝區和應用程式定義的回呼函式。
若要將數據讀入豐富的編輯控件(也就是數據中的數據流),請使用 EM_STREAMIN 訊息。 控制程式會重複呼叫應用程式的回呼函式,每次將數據部分傳輸至緩衝區。
若要儲存豐富編輯控件的內容(也就是數據流出數據),您可以使用 EM_STREAMOUT 訊息。 控件會重複寫入緩衝區,然後呼叫應用程式的回呼函式。 回呼函式會在每次呼叫時儲存緩衝區的內容。
您需要知道的事項
技術
必要條件
- C/C++
- Windows 使用者介面程序設計
指示
使用 Stream
下列程式代碼範例示範如何將.rtf檔案讀入豐富的編輯控件。 檔案句柄會透過EDITSTREAM結構的 dwCookie 成員傳遞至回調函式。
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;
}
相關主題