+ Ответить в теме
Показано с 1 по 9 из 9

Тема: Как сделать текст жирным?

  1. #1
    coder Redcat is on a distinguished road
    Регистрация
    08.12.2005
    Адрес
    Russia
    Сообщений
    19
    Вес репутации
    14

    По умолчанию Как сделать текст жирным?

    Кто-нибудь знает, можно ли сделать текст окна жирным с помощью функции Win API SetWindowText? Если нет, то подскажите как? (нужна функция WinAPI)

  2. По умолчанию

     
    Хотите избавиться от рекламы? Зарегистрируйтесь
  3. #2
    senior developer Kolinus is on a distinguished road
    Регистрация
    23.08.2004
    Адрес
    Минск
    Сообщений
    464
    Вес репутации
    15

    По умолчанию

    задаешь нужный фонт и устанавливаешь его
    вродебы CreateFontIndirect должно помочь
    В SAD - все в SAD.

  4. #3
    coder AlexDav is on a distinguished road
    Регистрация
    18.10.2005
    Сообщений
    34
    Вес репутации
    14

    По умолчанию

    Код :
    1. CWnd *cWnd;
    2. CFont font;
    3.     cWnd = GetDlgItem(IDC_STATIC1);
    4.     LOGFONT lf;
    5.     ZeroMemory(&lf, sizeof LOGFONT);
    6.     CClientDC clientDC(this);
    7.     lf.lfHeight = 18;//-(MulDiv(75, ::GetDeviceCaps(clientDC.m_hDC, LOGPIXELSY), 72)); //PointSizeToHeight(24,clientDC.m_hDC);
    8.     lf.lfWeight = FW_BOLD;
    9.     wcscpy(lf.lfFaceName, _T("MS Sans Serif"));
    10.     VERIFY(font.CreateFontIndirect(&lf));
    11.     cWnd->SetFont(&font);

    но это MFC

  5. #4
    coder Redcat is on a distinguished road
    Регистрация
    08.12.2005
    Адрес
    Russia
    Сообщений
    19
    Вес репутации
    14

    По умолчанию

    Спасибо, но мне только API надо :-)

  6. #5
    Moderator Куратор
    system architect
    Romeo is on a distinguished road Аватар для Romeo
    Регистрация
    02.03.2004
    Адрес
    Крым, Севастополь
    Возраст
    37
    Сообщений
    3,091
    Вес репутации
    21

    По умолчанию

    Всё, что написал AlexDav, без проблем переводится на WinAPI с точностью до переобозначений. Вопрос в другом. Тебе нужно специальным фонтом писать на клиентской области или в заголовке окна. Первое продемонстрировал AlexDav. Для второго придётся перехватывать WM_NCPAINT либо программно менять настройки Windows (в этом случае шрифт заголовка поменятеся для всех окон системы).
    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
    ---
    Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

  7. #6
    Moderator Куратор
    system architect
    Eugie is on a distinguished road
    Регистрация
    17.02.2004
    Адрес
    SPb
    Сообщений
    707
    Вес репутации
    17

    По умолчанию

    Redcat, SetWindowText() только меняет текст заголовка окна (или содержимого контрола, типа editbox). Шрифт, как уже отмечалось, задается непосредственно в процедуре отрисовки, т.е. в обработчике событий (WM_PAINT - для клиентской (внутренней) части, WM_NCPAINT - для заголовка) - это для своего окна. А для чужого - в общем случае никак (вариант через настройки ОС не рассматриваю, ну, можно еще путем subclassing'а, но это геморрой), а для контролов - сообщение WM_SETFONT позволяет заменить шрифт.

  8. #7
    coder Redcat is on a distinguished road
    Регистрация
    08.12.2005
    Адрес
    Russia
    Сообщений
    19
    Вес репутации
    14

    По умолчанию

    А я вот как делаю: мне надо, чтобы текст в static control был жирным, я получаю контекст устройства для этого контрола, создаю логический шрифт и вешаю этот шрифт на этот контекст.
    Но у меня следующая проблема: при сворачивании и разворачивании окна текст в этом окошке почему-то пропадает. A когда я хочу вывести новую строку в этот контекст, она накладывается на предидущую строку и получается каша. Строку в контекст я вывожу при помощи TextOut. Как тут быть - как сделать так чтобы очищать контекст устройства от предидущей строки перед выводом новой, и чтобы текст не пропадал из окна при сворачивании/разворачивании?

    А вообще я повторяю кусок кода по созданию контекста устройства, выводу туда текста и освобождению контекста в цикле. Насколько это грамотно?

  9. #8
    Moderator Куратор
    system architect
    Eugie is on a distinguished road
    Регистрация
    17.02.2004
    Адрес
    SPb
    Сообщений
    707
    Вес репутации
    17

    По умолчанию

    Чтобы содержимое окна не "пропадало", нужно его каждый раз обновлять при перерисовке окна, т.е. обрабатывать сообщение WM_PAINT (см. предыдущий вопрос).
    Но в твоем случае все проще - я же сказал, в случае контролов (а static text - контрол) есть спец.сообщение WM_SETFONT, которое позволяет поменять шрифт "на лету":

    Код :
    1.   HFONT hFont;
    2.   // откуда-то получили hFont, напр., создали с помощью CreateFont()
    3.   SendMessage(GetDlgItem(hDltg, IDC_STATIC1), WM_SETFONT, (WPARAM) hFont, TRUE);

  10. #9
    coder Redcat is on a distinguished road
    Регистрация
    08.12.2005
    Адрес
    Russia
    Сообщений
    19
    Вес репутации
    14

    По умолчанию

    OK!! усё ясно!

+ Ответить в теме

Похожие темы

  1. Вписанный текст
    Как средствами VB(A) вписать текст в ячейку таблицы в Worde?
    от kminas в разделе MS Office и VB(A).
  2. Текст в DLL
    Товарищи, Программисты! Не затруднит ли вас показать на конкретном примере (т.е. с исходным кодом) как можно вставить текстовый файл в DLL, а потом...
    от scorpi.on в разделе Delphi и Pascal
  3. как перикодировать текст
    Подскажите как написать функцию которая может распознать кодировку текста и переделать его в нормальный например до ‚ ў®а®в  Ј®бвЁ­Ёжл...
    от Neel в разделе Delphi и Pascal
  4. Вертикальный текст
    Привет! Не знаешь как вывести текст вертикально. Пробовал CDC::TextOut, ExtTextOut, DrawText не получилось.
    от Marjan в разделе C и C++
  5. Текст в Мозилле
    Текст моих HTML документов отображается в Мозилле в виде иероглифов. С чужими файлами все ок. В чем проблема?
    от psix в разделе JScript, VBScript, DHTML...

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения