На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> Как поменять цвет фона у Edit-a?
    Создаю эдит:
    ExpandedWrap disabled
          hwTx = CreateWindowExW(392, StrPtr("Edit") _
            , StrPtr("ля-ля-ля",  WS_CHILD Or WS_VISIBLE Or WS_BORDER _
            , 0, 0, 200, 30 _
            , Me.hwnd, 0, App.hInstance, ByVal 0)

    Пытаюсь поменять фон вот так:
    ExpandedWrap disabled
      Private Sub Command1_Click()
      Dim hdcT As Long
      hdcT = GetWindowDC(hwTx)
      SetBkColor hdcT, &HFF00&
      End Sub

    и вот так:
    ExpandedWrap disabled
      Private Sub Command2_Click()
            SendMessageW hwnd, ByVal EM_SETBKGNDCOLOR, ByVal 0, ByVal &HFF&
      End Sub

    Ни то, ни другое результата не даёт.
    Меняю фон у родителя - выясняется, что эдит при перерисовке берёт цвет как раз у родителя.
    Что я делаю не так?
    Прикреплённый файлПрикреплённый файлbackcolor.zip (1,98 Кбайт, скачиваний: 135)
      Цитата Артур @
      Пытаюсь поменять фон вот так:

      Чтобы раскрасить Edit, надо обрабатывать
      сообщение WM_CTLCOLOREDIT.
      И надо не один цвет указывать, а сразу 3 - текста, фона текста (цвет знакоместа) и фона контрола.
        ЫукпШ
        Спасибо :)

        Да, как то так:)

        Субклассирую, затем:
        ExpandedWrap disabled
          If uMsg = WM_CTLCOLOREDIT Then
               SetBkColor wParam, BkColor 'перерисовываю фон под текстом
               WinProc = hBrush 'возвращаю кисть для перерисовки остального фона
               Exit Function
          Цитата Артур @
          Субклассирую, затем:

          Вот эти тонкости я не знаю.
          WM_COLORxxx (цветовые сообщения) контролов
          пересылаются их родителю, каждый раз, когда контрол
          перерисовывается.
          Искать и обрабатывать эти сообщения в оконной
          процедуре самого контрола я не пробовал.
          Цитата

          ...
          An edit control that is not read-only or disabled sends the WM_CTLCOLOREDIT message
          to its parent window when the control is about to be drawn.
          ...

          Так что не совсем понятно, кого субклассировать
          Сообщение отредактировано: ЫукпШ -
            Не, ну, субклассирую я обоих - и контрол, и родителя. Конкретно для перерисовки фона - ловлю ведь WM_CTLCOLOREDIT, значит это в родителе. Это ведь контрол шлет родителю, так что в сам контрол, на сколько я понимаю, это сообщение и не приходит.
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0253 ]   [ 18 queries used ]   [ Generated: 29.03.24, 06:50 GMT ]