Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Текстовый редактор, Поддержка формата RTF 
:(
    Опции темы
Solomon
Дата 4.5.2007, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

Репутация: нет
Всего: 2



Вот нашел исходники текстового редактора и немного их переделал. Немогу сделать поддержку формата RTF. 
Вообще  мне удавалось сделать загрузку и сохранение rtf формата, но только с помощью сласса CRichEdit.
А в данном проекте не получатся это реализовать (
Помогите.
Вот файлы проекта

Добавлено через 23 секунды
млин

Присоединённый файл ( Кол-во скачиваний: 13 )
Присоединённый файл  CurPosIndicatorDoc.cpp 1,79 Kb


--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Solomon
Дата 4.5.2007, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

Репутация: нет
Всего: 2



и вот файл представления

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  CurPosIndicatorView.cpp 2,56 Kb


--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Greeen
Дата 4.5.2007, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: 10
Всего: 18



Мало что понятно, кода практически нет. Видно только что класс представления у тебя производный от CEditView. RTF он не поддерживает. Используй CRichEditView.


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Solomon
Дата 4.5.2007, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

Репутация: нет
Всего: 2



В книге я нашел вот такое создание представления.Было в примере CListBox. Если это перелелать на CEditView, то все работает нифтяк

*.h
Код

#pragma once

class CListBoxView : public CCtrlView
{
    DECLARE_DYNCREATE(CListBoxView)
    public:
        CListBoxView();
    public:
        CEditView & GetListBox() const;
    
    DECLARE_MESSAGE_MAP()
    
};


*.cpp

Код

#include "stdafx.h"
#include "ListBoxView.h"

IMPLEMENT_DYNCREATE(CListBoxView, CCtrlView)

CListBoxView::CListBoxView():
CCtrlView(_T("EDIT"),AFX_WS_DEFAULT_VIEW){};

CEditView & CListBoxView::GetListBox() const
{return *(CEditView*)this;}

BEGIN_MESSAGE_MAP(CListBoxView, CCtrlView)
    ON_WM_NCDESTROY()
END_MESSAGE_MAP()



все работает класнно.

А когда же начинаю пробывать CRichEditView, то пишит что такой тип не существует.  :(


--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Greeen
Дата 4.5.2007, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: 10
Всего: 18



Так есть же уже класс CRichEditView, объявлен в afxrich.h
Зачем придумывать свое что то?


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Solomon
Дата 4.5.2007, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

Репутация: нет
Всего: 2



Greeen,  smile. Млин книга классная, но там про CRichEditView толком не написанно, и всего что надобы было из-за чего не получалось это небыло подключена afxrich.h.

только одна загвоздка. Когда делаю предпросмотр

Код

BOOL CSReaderView::OnPreparePrinting(CPrintInfo* pInfo)
{
    // default preparation
    return CRichEditView::DoPreparePrinting(pInfo);
}


то программа вылетает с ошибкой :(

Добавлено через 6 минут и 16 секунд
Да и еще вот допустим считали мы текст с файла. Каким макаром его отобразить на эране, т.е.
Код

static DWORD CALLBACK MyStreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
    CFile *pFile = (CFile*) dwCookie;
    *pcb = pFile->Read(pbBuff, cb);
    return 0;
}

void CCurPosIndicatorDoc::ReadRTFDocument(CString const &strFilename)
{
    CFile file(strFilename, CFile::modeRead);
    EDITSTREAM es;
    es.dwCookie=(DWORD) &file;
    es.pfnCallback = MyStreamInCallback;
    text->StreamOut(SF_RTF, es);
    Serialize;
}


что далее предпринять для отображения полученного текста на экран??


--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Greeen
Дата 4.5.2007, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: 10
Всего: 18



Solomon, не StreamOut, а StreamIn


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Solomon
Дата 4.5.2007, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

Репутация: нет
Всего: 2



Все правильно. StreamIn, но теперь когда нажимаем открыть файл то также вылетаем с ошибкой :(
непойму что то делал же так загрузку нормально было


--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Greeen
Дата 4.5.2007, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: 10
Всего: 18



Код

static DWORD CALLBACK MyStreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
    CFile *pFile = (CFile*)dwCookie;
    *pcb = pFile->Read(pbBuff, cb);
    return 0;
}

void CRichViewTestView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
    CString strFile = GetDocument()->GetPathName();
    if(strFile.GetLength() == 0)
        return;
    CFile file(strFile, CFile::modeRead);
    EDITSTREAM es;
    es.dwCookie = (DWORD)&file;
    es.pfnCallback = MyStreamInCallback;
    GetRichEditCtrl().StreamIn(SF_RTF, es); // если обычный текстовый файл, то первый параметр SF_TEXT
}


Это сообщение отредактировал(а) Greeen - 4.5.2007, 17:35


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Solomon
Дата 4.5.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

Репутация: нет
Всего: 2



на эту строчку говорит что GetRichEditCtrl неизвестный определитель
Цитата

GetRichEditCtrl().StreamIn(SF_RTF, es); // если обычный текстовый файл, то первый параметр SF_TEXT



--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Greeen
Дата 4.5.2007, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: 10
Всего: 18



На самом деле я ступил. Конечно логичней засунуть все это в OnOpenDocument
Код

static DWORD CALLBACK MyStreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
    CFile *pFile = (CFile*) dwCookie;
    *pcb = pFile->Read(pbBuff, cb);
    return 0;
}

BOOL CRichViewTestDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
    if (!CRichEditDoc::OnOpenDocument(lpszPathName))
        return FALSE;
    
    CFile file(lpszPathName, CFile::modeRead);
    EDITSTREAM es;
    es.dwCookie = (DWORD)&file;
    es.pfnCallback = MyStreamInCallback;
    GetView()->GetRichEditCtrl().StreamIn(SF_TEXT, es);
    return TRUE;
}


Добавлено через 1 минуту и 54 секунды
Цитата(Solomon @  4.5.2007,  17:48 Найти цитируемый пост)
на эту строчку говорит что GetRichEditCtrl неизвестный определитель

Убедись, что у тебя класс представления - наследник CRichEditView, а класс документа - наследник CRichEditDoc


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Solomon
Дата 4.5.2007, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

Репутация: нет
Всего: 2



теперь говорит что GetView() неизвесный определитель :(


--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Greeen
Дата 4.5.2007, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: 10
Всего: 18



virtual CRichEditView* CRichEditDoc::GetView( ) const;
Посмотри еще раз, какие родители у вида и документа.

Это сообщение отредактировал(а) Greeen - 4.5.2007, 18:02


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Solomon
Дата 4.5.2007, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

Репутация: нет
Всего: 2



Цитата

а класс документа - наследник CRichEditDoc


небыло

но теперь матюкается на строку 
Цитата

IMPLEMENT_DYNCREATE(CRichViewTestDoc, CRichEditDoc)

error C2259: 'CSReaderDoc' : cannot instantiate abstract class



--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Greeen
Дата 4.5.2007, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: 10
Всего: 18



Вообще лучше всего пересоздать проект и на последней вкладке визарда (Generated classes) указать своему View родителя CRichEditView.


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0581 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.