Изменение цвета текста

Тема в разделе "Общие вопросы по С и С++", создана пользователем alekssgor, 11 дек 2009.

  1. alekssgor

    alekssgor Well-Known Member

    Регистрация:
    26 май 2008
    Сообщения:
    118
    Симпатии:
    0
    Как изменить цвет текста в элементах управления?
    Так же как и при выводе в окно(Через PAINTSTRUCT, HDC и события WM_PAINT)???

    Вот фрагмент кода:

    Код (Text):
    static HWND hEdit;
    static HFONT hFont;
    switch (message)                 /* handle the messages */
    {
    case WM_CREATE:
    {
    hEdit = CreateWindow("EDIT", NULL,
    WS_CHILD|WS_VISIBLE|ES_LEFT|WS_BORDER,
    30, 30, 350, 20, hwnd, (HMENU)ID_EDIT, hinstance, NULL);
    SendMessage(hEdit,EM_LIMITTEXT,(WPARAM)40,0);
    //Изменить шрифт
    hFont = CreateFontA(15,8,0,0,FW_BOLD,FALSE,TRUE,FALSE,1,OUT_CHARACTER_PRECIS,
    OUT_CHARACTER_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_SCRIPT,0);
    SetWindowFont(hEdit,hFont,0);
    //Изменить цвет текста
    //????????????????????
    break;
    }
     
  2. Maxx

    Maxx Гость

    посмотри в MSDN сообщения WM_CTLCOLORxxx
     
  3. flierhosta

    flierhosta Гость

    На сколько помню я, это делается так:
    SetTextColor(hdc, RGB(255,0,0)); //текст должен вывестись красным цветом

    SetBkColor(hdc, RGB(255,0,0)); //или красный цвет фона под текстом
     
  4. alekssgor

    alekssgor Well-Known Member

    Регистрация:
    26 май 2008
    Сообщения:
    118
    Симпатии:
    0
    Не ты не про то! Ты про тупо вывод в окно. А мы про элементы управления. Я уже допёр
    Просто не мог понять как найти контекст отображения для элементов управления
    Теперь понял через сообщение WM_CTLCOLOREDIT:
    Код (Text):
    Фрагмент функции окна

    static HWND hEdit[2];
    switch (message)                 /* handle the messages */
    {
    case WM_CREATE:
    {
    hEdit[0] = CreateWindow("EDIT","Зелёный фон, красный шрифт",
    WS_CHILD|WS_VISIBLE|WS_BORDER,
    10,100,250,20,hwnd,(HMENU)ID_EDIT1,hinstance,0);
    hEdit[1] = CreateWindow("EDIT","Красный фон, зелёный шрифт",
    WS_CHILD|WS_VISIBLE|WS_BORDER,
    10,150,250,20,hwnd,(HMENU)ID_EDIT2,hinstance,0);
    SetFocus(hEdit[0]);
    break;
    }

    case WM_CTLCOLOREDIT:
    {
    if((HWND)lParam == hEdit[0])
    {
    SetBkColor((HDC)wParam,RGB(0,255,0));
    SetTextColor((HDC)wParam,RGB(255,0,0));
    break;
    }
    else if((HWND)lParam == hEdit[1])
    {
    SetBkColor((HDC)wParam,RGB(255,0,0));
    SetTextColor((HDC)wParam,RGB(0,255,0));
    break;
    }
    break;
    }
     
Загрузка...

Поделиться этой страницей