Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > чтение файла в richedit пример из MSDN


Автор: roko 30.1.2010, 03:11
Всем привет! Знаю что такая тема уже есть, но ответа на мой вопрос там не нашлось. Мне надо прочитать текстовый файл в richedit. Вот что я делаю:

Код

if(GetOpenFileName(&ofn))
{
    hLibrary=LoadLibrary(TEXT("Riched20.dll"));
    if (!hLibrary)
        return 0;
    hResultWnd=CreateWindowEx(0,RICHEDIT_CLASS,TEXT(""),ES_MULTILINE | WS_VISIBLE |
                      WS_CHILD | WS_BORDER | WS_TABSTOP|WS_VSCROLL,
                      0,0,200,200,hwnd,NULL,hInstance,NULL);
    FillRichEditFromFile(hResultWnd,ofn.lpstrFile);
}


функция FillRichEditFromFile взята из MSDN(http://msdn.microsoft.com/en-us/library/bb787877(VS.85).aspx). Насколько я понял, благодаря этой функции, richedit сам будет подгружать файл по мере необходимости.

вот код:

Код

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


при открытии текстового файла richedit появляется, но содержимого файла в нем нету(.
что может быть не так?

тревога отменяется, надо было вместо SF_RTF поставить SF_TEXT

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)