Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Текст в RichEdit 
:(
    Опции темы
yngwie19
Дата 7.4.2009, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем привет у меня вопрос. Каким образом програмно можно изменить размер шрифта в RichEdit ?
У меня есть две кнопки на панели инструментов + и - при нажатии на которые масштаб всего текста должен увеличиваться или уменьшаться на 25 %. Подскажите как это сделать?
PM MAIL   Вверх
586
Дата 8.4.2009, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



EM_SETZOOM / EM_GETZOOM

Пример:
SendMessage(hWndRichEdit, EM_SETZOOM, 2, 1);     // масштаб (2:1) 200%
SendMessage(hWndRichEdit, EM_SETZOOM, 1, 1);     // масштаб (1:1) 100%
SendMessage(hWndRichEdit, EM_SETZOOM, 1, 2);     // масштаб (1:2) 50%
SendMessage(hWndRichEdit, EM_SETZOOM, 1, 4);     // масштаб (1:4) 25%

Это сообщение отредактировал(а) 586 - 8.4.2009, 01:47
PM   Вверх
yngwie19
Дата 8.4.2009, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



586, Спасибо большое!
PM MAIL   Вверх
yngwie19
Дата 8.4.2009, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



586, У меня еще вот что не получается. 
1) Когда Я открываю документ то мне нужно чтобы он распологался на всей области RichEdit по ширине а он почему-то сдвигается влево, стиль ES_CENTER ставил не помогает.
2) В моем тексте  есть заголовок почему-то перед ним написано следующее:
Код

ОсновнойтекстОсновнойтекстсотступомКонтрольная работа

PM MAIL   Вверх
yngwie19
Дата 8.4.2009, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(yngwie19 @  8.4.2009,  12:58 Найти цитируемый пост)
) Когда Я открываю документ то мне нужно чтобы он распологался на всей области RichEdit по ширине а он почему-то сдвигается влево, стиль ES_CENTER ставил не помогает.

Вроде разобрался. вообщем сам документ отображается исходя из своих параметров. Мне нужно его отобразить по ширине RichEdit. увеличить масштаб можно только на целые велечины (1 : 1, 2:1, 3:1 и т.д) а как мне увеличить его так чтобы он был ровно по ширине ? Ведь масштаб типа (1.5 : 1) задать нельзя?
PM MAIL   Вверх
586
Дата 8.4.2009, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



Цитата(yngwie19 @  8.4.2009,  13:58 Найти цитируемый пост)
1) Когда Я открываю документ то мне нужно чтобы он распологался на всей области RichEdit по ширине а он почему-то сдвигается влево, стиль ES_CENTER ставил не помогает.

Возможно, этот стиль игнорируется. Тогда можно сделать так:
Код
void SetAlignForAllText(HWND hRichEdit, WORD wAlign)
{
    PARAFORMAT pf = {0};
    DWORD start, end;

    // сохранить выделение (необязательно)
    SendMessage(hRichEdit, EM_GETSEL, (WPARAM)&start, (LPARAM)&end);

    // выделить весь текст
    SendMessage(hRichEdit, EM_SETSEL, 0, -1);

    // выровнить весь текст по центру
    pf.cbSize = sizeof(pf);
    pf.dwMask = PFM_ALIGNMENT;
    pf.wAlignment = wAlign;
    SendMessage(hRichEdit, EM_SETPARAFORMAT, 0, (LPARAM)&pf);

    // восстановить выделенный текст (необязательно)
    SendMessage(hRichEdit, EM_SETSEL, start, end);
}

WNDPROC pRichEditWndProc = 0;
LRESULT CALLBACK RichEditWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
    case WM_MBUTTONDOWN:
        SetAlignForAllText(hWnd, PFA_CENTER);
    case WM_MBUTTONUP:
        return 0;
    }
    return CallWindowProc(pRichEditWndProc, hWnd, uMsg, wParam, lParam);
}


Цитата(yngwie19 @  8.4.2009,  13:58 Найти цитируемый пост)
2) В моем тексте  есть заголовок почему-то перед ним написано следующее:

Без образца файла сложно что-либо сказать...

Цитата(yngwie19 @  8.4.2009,  13:58 Найти цитируемый пост)
Ведь масштаб типа (1.5 : 1) задать нельзя?

Но можно указать (15 : 10)
PM   Вверх
yngwie19
Дата 8.4.2009, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



586, Спасибо тебе огромное.

Цитата(586 @  8.4.2009,  17:00 Найти цитируемый пост)
Без образца файла сложно что-либо сказать...

Я чуть позже прикреплю файлик, который открываю.

Кстати можешь дать ссылку где почитать про все возвожности RichEdit, а то мне придется с ним еще долго работать
PM MAIL   Вверх
yngwie19
Дата 9.4.2009, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



586, делаю выравнивание по цетру по твоему примеру, а он расширяет окно и уезжает куда-то вправо

Добавлено через 7 минут и 1 секунду
Вот пример файла, который Я хочу открыть

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  3.rtf 18,94 Kb
PM MAIL   Вверх
yngwie19
Дата 10.4.2009, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



вообщем моя задача заключается в том, чтобы при открытии докуента эта таблица, которая в этом файле располагалась по всей ширине окна RichEdit в развернутом состоянии.
PM MAIL   Вверх
586
Дата 10.4.2009, 09:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



Цитата(yngwie19 @  9.4.2009,  17:44 Найти цитируемый пост)
делаю выравнивание по цетру по твоему примеру, а он расширяет окно и уезжает куда-то вправо

Похоже, RichEdit некорректно отображает таблицы по центру. Не знаю, почему.

Цитата(yngwie19 @  8.4.2009,  13:58 Найти цитируемый пост)
2) В моем тексте  есть заголовок почему-то перед ним написано следующее:
Код
ОсновнойтекстОсновнойтекстсотступомКонтрольная работа

Документы RTF, отредактированные в MS Word плохо поддерживаются RichEdit'ом. Поэтому и посоветовал WordPad.

Добавлено через 3 минуты и 41 секунду
Цитата(yngwie19 @  8.4.2009,  19:08 Найти цитируемый пост)

Кстати можешь дать ссылку где почитать про все возвожности RichEdit, а то мне придется с ним еще долго работать 

Это MSDN + Google.

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  4.rtf 2,09 Kb
PM   Вверх
yngwie19
Дата 10.4.2009, 10:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



586, а можно ли как- нибудь рассчитать масштаб чтобы с помощью сообщения EM_SETZOOM его задать так, чтобы таблица вытянулась ровно по ширине?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




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


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

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