RTF Datei in Rich Edit laden
-
Hallo,
ich habe ein "RICHEDIT50W" RTF Control und möchte ein RTF Dokument öffnen.
Ich nutze bisher den folgenden Code. Dieser funktioniert für Speichern und Öffnen von Text. Sobald das RTF Dokument aber OLE Objekte enthält, funktioniert das Speichern (die gespeicherte Datei in Word angeguckt), aber das Laden schlägt fehl
Im Detail: Jedweder Text wird exakt geladen, aber alle OLE Objekte fehlen...DWORD CALLBACK EditStreamCallbackRead(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 Read(HWND hWnd, LPCTSTR pszFile) { BOOL fSuccess = FALSE; HANDLE hFile = CreateFile(pszFile, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile != INVALID_HANDLE_VALUE) { EDITSTREAM es; es.pfnCallback = EditStreamCallbackRead; es.dwCookie = (DWORD_PTR)hFile; SendMessage(hWnd, EM_STREAMIN, SF_RTF, (LPARAM)&es); if (!es.dwError) fSuccess = TRUE; CloseHandle(hFile); } return fSuccess; } DWORD CALLBACK EditStreamCallbackWrite(DWORD_PTR dwCookie, LPBYTE lpBuff, LONG cb, PLONG pcb) { HANDLE hFile = (HANDLE)dwCookie; if (WriteFile(hFile, lpBuff, cb, (DWORD *)pcb, NULL)) { return 0; } return -1; } BOOL Write(HWND hWnd, LPCTSTR pszFile) { BOOL fSuccess = FALSE; HANDLE hFile = CreateFile(pszFile, GENERIC_WRITE, FILE_SHARE_READ, 0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL); if (hFile != INVALID_HANDLE_VALUE) { EDITSTREAM es; es.pfnCallback = EditStreamCallbackWrite; es.dwCookie = (DWORD_PTR)hFile; SendMessage(hWnd, EM_STREAMOUT, SF_RTF, (LPARAM)&es); if (!es.dwError) fSuccess = TRUE; CloseHandle(hFile); } return fSuccess; }Ich bin mit meinem Latein am Ende, kann mir jemand helfen?
Danke + Gruß
tsp