Cara Menggunakan Aliran
Anda dapat menggunakan aliran untuk mentransfer data ke dalam atau di luar kontrol edit yang kaya. Aliran didefinisikan oleh struktur EDITSTREAM , yang menentukan buffer dan fungsi panggilan balik yang ditentukan aplikasi.
Untuk membaca data ke dalam kontrol edit yang kaya (yaitu, streaming dalam data), gunakan pesan EM_STREAMIN. Kontrol berulang kali memanggil fungsi panggilan balik aplikasi, yang mentransfer sebagian data ke dalam buffer setiap kali.
Untuk menyimpan konten kontrol edit yang kaya (yaitu, mengalirkan data), Anda dapat menggunakan pesan EM_STREAMOUT. Kontrol berulang kali menulis ke buffer dan kemudian memanggil fungsi panggilan balik aplikasi. Untuk setiap panggilan, fungsi panggilan balik menyimpan konten buffer.
Apa yang perlu Anda ketahui
Teknologi
Prasyarat
- C/C++
- Pemrograman Antarmuka Pengguna Windows
Petunjuk
Menggunakan Stream
Contoh kode berikut menunjukkan cara membaca file .rtf ke dalam kontrol edit yang kaya. Handel file diteruskan ke fungsi panggilan balik melalui anggota dwCookie dari struktur EDITSTREAM.
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;
}
Topik terkait