Форум программистов CodeGuru
18 Январь 2018, 18:04:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: помогите с текстовым редактором!  (Прочитано 17259 раз)
0 Пользователей и 1 Гость смотрят эту тему.
XvosT
Новичок
*
Офлайн Офлайн

Сообщений: 4


Просмотр профиля
« : 23 Ноябрь 2006, 01:29:27 »

нам задали сделать текстовый редактор, по типу Блокнота, на CEdit и вот возник первый жестокий вопрос: как корректно сделать функцию "Перенос по строкам"?? и еще хотелось бы знать: как автоматически определить кодировку открываемого файла???
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #1 : 24 Ноябрь 2006, 05:50:11 »

Цитировать
как корректно сделать функцию "Перенос по строкам"??

CEdit  и так корректно по строкам переносит - где нажмете enter, там и перенесет.
Или имеется в виду, как сделать, чтобы перенос был только там, где кончается строка ?
Если генерируете приложение визардом и делаете его типа Single Document, либо Multiple Document (не на базе диалога), то сгенерируется класс View (имя типа C<имя проекта>View). Вот, идете в код метода PreCreateWindow этого View и смотрите... Например, имя класса View CMyEditView. Там будет что то типа:
Код:
BOOL CMyEditView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
//  the CREATESTRUCT cs

BOOL bPreCreated = CEditView::PreCreateWindow(cs);
cs.style &= ~(ES_AUTOHSCROLL|WS_HSCROLL); // Enable word-wrapping

return bPreCreated;
}

Убираете стиль WS_HSCROLL:
Код:
BOOL CMyEditView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
//  the CREATESTRUCT cs

BOOL bPreCreated = CEditView::PreCreateWindow(cs);
cs.style &= ~(ES_AUTOHSCROLL); // Enable word-wrapping

return bPreCreated;
}

И будет щастье Улыбка
Если я, конечно, правильно понял задачу.
Записан

XvosT
Новичок
*
Офлайн Офлайн

Сообщений: 4


Просмотр профиля
« Ответ #2 : 24 Ноябрь 2006, 10:39:39 »

не совсем, но рядом. приложение как-раз делаеться на базе диалога. и требуеться сделать функцию переноса по строкам, при нажатии на пункт меню(а-ля блокнот). как я понимаю нужно перекидывать стили CEdit в обработчике этого пункта меню. вот я и хотел узнать как это сделать?? 8))
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #3 : 25 Ноябрь 2006, 12:37:13 »

Цитировать
не совсем, но рядом. приложение как-раз делаеться на базе диалога. и требуеться сделать функцию переноса по строкам, при нажатии на пункт меню(а-ля блокнот).

Это в смысле, если "перенос по словам" включен, то в редакторе выравнивание как бы по ширине, и горизонтального скролла нет, а если не включен, то строки только на месте разрыва строки переносятся ?
Цитировать
как я понимаю нужно перекидывать стили CEdit в обработчике этого пункта меню. вот я и хотел узнать как это сделать?? 8))

Если так как описано, то действительно надо просто стили перекидывать.
Допустим, есть объект класса CEdit m_wndEdit.
Если пункт меню включается, то надо сделать ему:
Код:
m_wndEdit.ModifyStyle(WS_HSCROLL, 0);

Если наоборот - чека снимается, то:
Код:
m_wndEdit.ModifyStyle(0, WS_HSCROLL);
Записан

XvosT
Новичок
*
Офлайн Офлайн

Сообщений: 4


Просмотр профиля
« Ответ #4 : 25 Ноябрь 2006, 13:10:05 »

премного благодарен!
а как насчет второго вопроса?? по поводу кодировок???
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #5 : 26 Ноябрь 2006, 03:31:50 »

Цитировать
а как насчет второго вопроса?? по поводу кодировок???

А... забыл ответить.
Это достаточно большая проблема на самом деле. Кодировка текста определяется обычно при помощи частотного анализа. И это не точно (и весьма сложно к тому же). Если набор кодировок мал, то можно еще что то придумать, а если как в браузерах, типа - автоматическое определение среди кучи возможных кодировок - боюсь, тут солжно будет сделать.
Записан

XvosT
Новичок
*
Офлайн Офлайн

Сообщений: 4


Просмотр профиля
« Ответ #6 : 26 Ноябрь 2006, 19:37:07 »

Ясна, пасиба, вапрос снят!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!