Цвет выделенного текста (и фона под ним) в edit control

Тема в разделе "WASM.WIN32", создана пользователем clone, 31 авг 2006.

  1. clone

    clone New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2006
    Сообщения:
    84
    Меняю цвет текста и фона в edit control, обрабатывая сообщение WM_CTLCOLOREDIT, но сабж при этом остаётся таким, какой настроен в системе. Как поменять?
     
  2. Avoidik

    Avoidik New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2004
    Сообщения:
    288
    Адрес:
    Russia
    Код (Text):
    1.     ...
    2. case WM_INITDIALOG:
    3.     hBackBrush=CreateSolidBrush(GetSysColor(COLOR_WINDOW)); // цвет фона
    4.     break;
    5.  
    6. case WM_CTLCOLOREDIT:
    7.     if (lParam == (LPARAM)GetDlgItem(hWnd,ID_ESLOG) && hBackBrush)
    8.     {
    9.     SetTextColor((HDC)wParam,0x0800000); // цвет текста
    10.     return (int)hBackBrush;
    11.     }
    12.     break;
    13.    
    14. case WM_CLOSE:
    15.     DeleteObject(hBackBrush);
    16.     break;
    17.     ...
     
  3. clone

    clone New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2006
    Сообщения:
    84
    Я же написал, что нужно изменить цвет и фон выделенного текста.
     
  4. Kmet

    Kmet New Member

    Публикаций:
    0
    Регистрация:
    24 июн 2006
    Сообщения:
    28
    Адрес:
    Belarus
    Обычно выделение обозначается инвертированием(AFAIK для всех стандартных контролов это справедливо)
     
  5. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Тогда фон выделенного текста на белом фоне был бы черным, а не синим.
     
  6. CnCVK

    CnCVK New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    108
    1) Хучить системные цвета GetSysColor (Но это не переносимо:dntknw:
    2) Переписать весь контрол самому (Это не очень сложно как кажется:)
    Контрол какой : SINGLELINE or MULTILINE?
     
  7. clone

    clone New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2006
    Сообщения:
    84
    CnCVK
    Переносимость нужна в диапазоне от Win2K и выше.
    Но нужно бороться с ленью :)
    SINGLELINE.
     
  8. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    Мля, в чем трабла? Вот аттач моего конвертера из разных систем счисления десятичную и назад, написанный на асме, там я юзал этот метод и у мя ВСЕ прекрасно работает... Компилил в Масме 6.0
     
  9. clone

    clone New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2006
    Сообщения:
    84
    Pinkbyte
    Ээ... аттач не глядел, но из поста понял, что не в тему.
     
  10. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    Хехехе... Все в тему. Я просто решил приукрасить прогу и поменял цвета фона и текста всех edit control'ов. Так что открывай исходник, а потом уж кричи что не в тему ))))
     
  11. clone

    clone New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2006
    Сообщения:
    84
    Pinkbyte
    Посмотрел. Не в тему.
    Внимательно читаем сабж и предыдущие посты. Речь идёт о выделенном (selected) тексте.
     
  12. CnCVK

    CnCVK New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    108
    1)Попробуй хучить GetSysColor используя
    push
    ret
    2)Перерисовывай выделеный текст после каждого сообщения
    3)Написать новый Single-line контрол очень просто:
    -Структуру данных где храниться первый видимый, первый выделеный символ и т.д
    -В WM_PAINT просто рисуешь текст
    Если хочешь могу прислать source from Win2K:)
     
  13. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    Честно говоря у меня меняется и цвет выделенного текста, только инверсивно, то есть был красным - стал синим. Но это скорее как эффект винды, нежели желаемый. Так что тут я действительно не ф тему :dntknw:
     
  14. clone

    clone New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2006
    Сообщения:
    84
    CnCVK
    Минус хука в том, что он влияет на все контролы, в т.ч. в стандартных диалогах.

    Видимо, придётся рисовать самому. А так хотелось простого варианта...
     
  15. CnCVK

    CnCVK New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    108
    Ну ты можешь проверять что-нибудь или завести глобальный флаг:)