Всем привет, Пишу довольно сложный диалог с кучей static и edit controls. Всё выводится с помощью CreateWindowEx. Код выглядит несколько монстровато - нужно менять цвет и фонт контролов, сохранять хендлы, координаты там разные... В общем жуть. Затем нужно удалять всё нарисованное с диалога. Вопрос: Можно ли установить фонт всем контролам определенного класса? Как удалить с диалога все edit к примеру или поменять их стиль одним махом? Сорри за нюбские вопросы - но надеюсь на вашу помощь...
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
MirrorBlack Извиняюсь, но я нифига не понял. Собственно его и использую, правда не модальный. И каким боком это относится к поднятым вопросам? Супер, и что дальше? Диалогу или выводимым контролам? Если первое, и так стоит DS_SHELLFONT. Прекрасно работает с контролами определенными в ресурсах, но не работает с контролами которые "рисуются" by CreateWindowEx Тоже забыл. Но сути это не меняет. Я могу всё это сделать используя эти техники, но хотелось бы узнать какие существуют ещё.
ALLeX Дык нарисуи контролы в диалоге. После компоновки контролов (даже если будеш пользоваться CreateWindow) ты сможеш работать с ними как с группой по их ID а не по hWnd.
MirrorBlack Можно здесь немного подробнее? Например, назначение фонта обычно делается парой GetDlgItem + SendMessage/WM_SETFONT. То есть чтобы установить фонт для N контролов, нужно N раз вызвать эту пару. Или ты имеешь ввиду, что можно сделать процедуру, в которой к примеру можно установить фонт для ID 2000..3000?
ALLeX Да, именно это. После создания контролов организуй циклы для групп. Понимаю что это не то что хочется увидеть, но жизнь сильно облегчает. И всё же не пойму, зачем самому рисовать? С DS_SETFONT покозырней будет. Возможно с WS_GROUP чего выйдет... Завтра гляну, а то сам заинтересовался Кстати "GetDlgItem + SendMessage/WM_SETFONT" проще заменить на "SendDlgItemMessage/WM_SETFONT"