![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
Всем привет. У меня есть editbox большого размера, в который Я пытаюсь считать текстовый файл. Считываю с помощью ReadFile(). С файлом .txt проблем нет, а вот когда хочу считать файл в формате .doc то тут получаются каракули, причем их совсем мало (явно не весь файл). Подскажите, может есть какая-нибудь особенность считывания из .doc.
P.S: Да и еще подскажите как мне считать текст так, чтобы его форматирование сохранилось, и как сделать чтобы после считывания в editbox с текстом НЕльзя было работать (нельзя было копировать, выделять и т.д, т.е полностью заблокировать). Спасибо! |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
А та пробовал открывать док файл блокнотом? Что там пишет? Это сообщение отредактировал(а) Andrey44 - 1.4.2009, 14:18 -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
Andrey44, да такая же фигня, тока тут намного больше каракулей чем у меня когда считываю (странно почему). Ну вообщем Я так понял что это не ReadFile() - ом делается? Подскажи пожалуйста как мне быть? Все файлы в txt переименовывать и только тогда считывать?
(хотя нет одна фигня же)P.S: кстати объясни пожалуйста почему когда блокнотом открываешь каракули вылезают. Кодировку не поддерживает вордовскую? Это сообщение отредактировал(а) yngwie19 - 1.4.2009, 14:32 |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
Потому-что у док файла свой формат, и просто блокнотом его не прочитать. Для работы с док файлом есть какие-то свои интерфейсы. Не могу сказать какие. Или ищи формат док файла. -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
Потому что файл .doc бинарный (кроме текста находится ещё и другая информация - форматирование текста, рисунки и др.), и в блокноте, перед загрузкой файла в edit, в файле удаляются нулевые символы - поэтому файл загружается полностью. Как насчёт RTF-формата? Его можно загрузить в RichEdit. Это сообщение отредактировал(а) 586 - 1.4.2009, 15:03 |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
586, есть примерчик?
|
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
Вместо Edit создаётся RichEdit - загружается библиотека с RichEdit'ом riched20.dll (если она загружена, то повторно загружать не нужно
Файл считывается в память, а потом загружается в RichEdit с помощью SetWindowTextA (также, как и в Edit).
Если текстовый документ начинается со слова "{\rtf" или "{urtf", то он парсится как RTF документ, иначе, просто открывается, как текстовый документ в Edit. Это сообщение отредактировал(а) 586 - 1.4.2009, 15:56 |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
586, разве SetWindowText установит рич-текст?
для этого же существует EM_STREAMIN/EM_STREAMOUT Добавлено через 3 минуты и 44 секунды SetWindowText не пробовал, но EM_STREAMIN работает точно -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
В билдере у меня получилось... Но если нужно будут получить обратно RTF код, то при вызове GetWindowText будет возвращён обычный текст, без RTF кодов, и тогда уже не обойтись без EM_STREAMOUT.
|
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
проверил,
это работает только в RichEdit'е самой первой версии(еще без юникод-поддержки): RICHEDIT_CLASS10A{"RICHEDIT"} последующие версии такой доступ уже не поддерживают версии RichEdit'ов (не CE): 1.0 Riched32.dll - RICHEDIT_CLASS10A{"RICHEDIT"} 2.0 Riched20.dll - RICHEDIT_CLASS{"RichEdit20A","RichEdit20W"} 3.0 Riched20.dll - RICHEDIT_CLASS{"RichEdit20A","RichEdit20W"} 4.1(и выше) Msftedit.dll - MSFTEDIT_CLASS{"RICHEDIT50A","RICHEDIT50W"} -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
Ребят а при использовании RichEdit форматирование текста сохранится? Я имею ввиду Размер заголовков, отступы и т.д ?
|
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
Сохранится. Содержимое документа будет выглядеть как в WordPad. WordPad основан на RichEdit. Ещё, есть сообщение EM_SETTEXTEX, оно для RichEdit'ов. |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
Ребят и как сделать чтобы после считывания в Richedit с текстом НЕльзя было работать (нельзя было копировать, выделять и т.д, т.е полностью заблокировать). Спасибо
|
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
вот что он у меня выдает:
![]() а вот загружаемый файл: Это сообщение отредактировал(а) yngwie19 - 1.4.2009, 20:52 Присоединённый файл ( Кол-во скачиваний: 6 )
1.doc 215,00 Kb |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
стиль ES_READONLY или EnableWindow(hWndRichEdit, FALSE); RichEdit не моддерживает doc-файлы. Присоединённый файл ( Кол-во скачиваний: 6 )
test.PNG 52,60 Kb |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |