Как использовать фишки класса окна?

Тема в разделе "WASM.WIN32", создана пользователем ALLeX, 20 мар 2009.

  1. ALLeX

    ALLeX Member

    Публикаций:
    0
    Регистрация:
    21 окт 2004
    Сообщения:
    141
    Адрес:
    Ukraine
    Всем привет,

    Пишу довольно сложный диалог с кучей static и edit controls. Всё выводится с помощью CreateWindowEx. Код выглядит несколько монстровато - нужно менять цвет и фонт контролов, сохранять хендлы, координаты там разные... В общем жуть. Затем нужно удалять всё нарисованное с диалога. Вопрос: Можно ли установить фонт всем контролам определенного класса? Как удалить с диалога все edit к примеру или поменять их стиль одним махом?
    Сорри за нюбские вопросы - но надеюсь на вашу помощь...
     
  2. ALLeX

    ALLeX Member

    Публикаций:
    0
    Регистрация:
    21 окт 2004
    Сообщения:
    141
    Адрес:
    Ukraine
    PS. А без сабклассинга?
     
  3. MirrorBlack

    MirrorBlack Алексей

    Публикаций:
    0
    Регистрация:
    21 июн 2008
    Сообщения:
    249
    Адрес:
    Moscow
    ALLeX
    Чтоб небыло жути воспользуйся диалогом (самое простое DialogBoxParam).
    Компонуй контролы по типу. Например Edit 1001-2000 Static 2001-3000 и т.д.
    По фонтам - поставь стиль DS_SETFONT или DS_SHELLFONT. Подробнее здесь:
    http://vsokovikov.narod.ru/New_MSDN_API/Dlg_box/dlg_font.htm

    Забыл добавить что существует ещё и "суперклассинг":
    http://www.wasm.ru/print.php?article=1001022
     
  4. ALLeX

    ALLeX Member

    Публикаций:
    0
    Регистрация:
    21 окт 2004
    Сообщения:
    141
    Адрес:
    Ukraine
    MirrorBlack
    Извиняюсь, но я нифига не понял.
    Собственно его и использую, правда не модальный. И каким боком это относится к поднятым вопросам?
    Супер, и что дальше?
    Диалогу или выводимым контролам? Если первое, и так стоит DS_SHELLFONT. Прекрасно работает с контролами определенными в ресурсах, но не работает с контролами которые "рисуются" by CreateWindowEx
    Тоже забыл. Но сути это не меняет. Я могу всё это сделать используя эти техники, но хотелось бы узнать какие существуют ещё.
     
  5. MirrorBlack

    MirrorBlack Алексей

    Публикаций:
    0
    Регистрация:
    21 июн 2008
    Сообщения:
    249
    Адрес:
    Moscow
    ALLeX
    Дык нарисуи контролы в диалоге.
    После компоновки контролов (даже если будеш пользоваться CreateWindow) ты сможеш работать с ними как с группой по их ID а не по hWnd.
     
  6. ALLeX

    ALLeX Member

    Публикаций:
    0
    Регистрация:
    21 окт 2004
    Сообщения:
    141
    Адрес:
    Ukraine
    MirrorBlack
    Можно здесь немного подробнее?
    Например, назначение фонта обычно делается парой GetDlgItem + SendMessage/WM_SETFONT. То есть чтобы установить фонт для N контролов, нужно N раз вызвать эту пару. Или ты имеешь ввиду, что можно сделать процедуру, в которой к примеру можно установить фонт для ID 2000..3000?
     
  7. MirrorBlack

    MirrorBlack Алексей

    Публикаций:
    0
    Регистрация:
    21 июн 2008
    Сообщения:
    249
    Адрес:
    Moscow
    ALLeX
    Да, именно это. После создания контролов организуй циклы для групп.
    Понимаю что это не то что хочется увидеть, но жизнь сильно облегчает.
    И всё же не пойму, зачем самому рисовать?
    С DS_SETFONT покозырней будет.

    Возможно с WS_GROUP чего выйдет...
    Завтра гляну, а то сам заинтересовался :)

    Кстати "GetDlgItem + SendMessage/WM_SETFONT" проще заменить на "SendDlgItemMessage/WM_SETFONT"