Bagikan melalui


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;
    
}

Menggunakan Kontrol Edit Kaya

Demo kontrol umum Windows (CppWindowsCommonControls)