Aracılığıyla paylaş


Akışları Kullanma

Zengin düzenleme denetimine veya dışına veri aktarmak için akışları kullanabilirsiniz. Akış, belirli bir arabelleği ve uygulama tanımlı bir geri çağırma fonksiyonunu belirten BIR EDITSTREAM yapısı tarafından tanımlanır.

Verileri zengin bir düzenleme denetimine okumak (yani, verileri içeri akıtmak) için EM_STREAMIN iletisini kullanın. Denetim, tekrar tekrar uygulamanın geri çağırma işlevini çağırır, bu işlev her seferinde verilerin bir bölümünü arabelleğe aktarır.

Zengin bir düzenleme denetiminin içeriğini kaydetmek (yani verilerin akışını yapmak) için EM_STREAMOUT iletisini kullanabilirsiniz. Denetim, arabelleğe tekrar tekrar yazar ve ardından uygulamanın geri çağırma işlevini çağırır. Her çağrı için geri çağırma işlevi arabelleğin içeriğini kaydeder.

Bilmeniz gerekenler

Teknolojileri

Önkoşullar

  • C/C++
  • Windows Kullanıcı Arayüzü Programlama

Talimatlar

Stream kullanın

Aşağıdaki kod örneği, bir .rtf dosyasının zengin bir düzenleme denetimine nasıl okunduğu gösterilmektedir. Dosya tanıtıcısı, EDITSTREAM yapısının dwCookie üyesi aracılığıyla geri çağırma işlevine geçirilir.

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

Zengin Düzenleme Denetimleri Kullanarak

Windows ortak denetimler tanıtımı (CppWindowsCommonControls)