вопрос такой: делаю добавление новой кнопки в заголовок всех окон с тайтлбаром. Через хуки глобальные. Добавление сделано. сделан хайлайт при наведении мышки. и нажатие при нажатии кнопки. но хотелось бы как в винде - там при нажатой кнопке если отвести курсор с кнопки, она делается обычного вида. при наведении на кнопку - нажатой. перетаскивание окна при нажатой кнопке поборол предотвращением вызова CallNextHook. Но есть одна проблема: при клике на границе окна(менять размер окна) UP(WM_NCLBUTTONUP) не приходит окну. Экспериментировал, методом тыка - ап вызывает след хук, даун нет, оба вызывают, оба нет... Получалось что кнопка или залипает нажатой и размер окна меняется при движении мыша до следующего клика. Либо не срабатывает нажатие. В итоге меню и прочее игнорируется. Причина явно в возвращаемых значениях и вызовах. Но я запутался. Может у кого есть код такого плана? Здесь компа нету со студией, приеду через недельку. Видел в некоторых примерах вызов SendMessage, попробую там. Надеюсь на вашу помощь.
Не совсем понял что имел ввиду, я с туллбарами дело еще не имел... На счет изменения прорисовки кнопки при наведении мыши и снятии при отсутствия таковой я пользуюсь комбинацие WM_NCHITTEST и TrackMouseEvent+WM_MOUSELEAVE. В случае первого кнопку подсвечиваю и вызываю заказ сообщения WM_MOUSELEAVE через TrackMouseEvent, иначе не генерируется. Код (Text): TRACKMOUSEEVENT tm; tm.cbSize=sizeof(tm); tm.dwFlags=TME_LEAVE; tm.dwHoverTime=HOVER_DEFAULT; tm.hwndTrack=hWnd; TrackMouseEvent(&tm); а когда вызывается WM_MOUSELEAVE тушу кнопку. Естественно все делается через сабклассинк кнопки.
На форуме очень хорошая ссылка пробегала по добавлению кнопки, попробуй поискать. Не понял что с границей происходит и когда. Про 'отжатие' кнопки: можно через можно через PtInRect. Создание кнопки происходило через DrawFrameControl? Если да, то TrackMouseEvent не подойдет.
Пришло WM_NCLBUTTONDOWN - проверь где курсор. Если на изображении кнопки, то создавай цикл с PeekMessage пока не поймаешь WM_NCLBUTTONUP. Когда ловится WM_MOUSEMOVE, опять проверяй где курсор и соответственно этому DrawFrameControl.
CodeTao Не с тулбарами, а с тайтлбарами =) Заголовок Я вот думаю что проще всё таки сабклассить, чем такую задачу решать через хуки. У меня все окна просабкласены. Я на сообщения некоторые вызываю перерисовку кнопки. Пожалуй там и поюзаю определение нажатия. Нашёл хороший пример http://www.catch22.net/tuts/titlebar.asp. Я как раз не мог понять, как использовать HRGN, который даёт NCPAINT. Спасибо за ответы. Погода шлак, так что проверю хз как, ибо ехать нет смысла.