|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.04.2009, 18:03 | #1 |
Пользователь
Регистрация: 12.09.2008
Сообщений: 16
|
Доп кнопка в заголовке окна
Подскажите пожалуйста, как нарисовать дополнительную кнопку в заголовке окна.
|
05.04.2009, 18:21 | #2 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
нужно обрабатывать сообщения WM_NCxxx.
в WM_NCHITTEST - добавляем проверку попадания в эту кнопку в WM_NCPAINT - рисуем эту кнопку. В ХР заголовок портится, так что придется наверно весь заголовок перерисовывать |
06.04.2009, 00:54 | #3 |
Пользователь
Регистрация: 12.09.2008
Сообщений: 16
|
а как именно нарисовать кнопку?
|
06.04.2009, 14:30 | #4 | |
АльTRUEи$т
Форумчанин
Регистрация: 19.03.2009
Сообщений: 784
|
Код:
Цитата:
|
|
06.04.2009, 14:45 | #5 |
Форумчанин
Регистрация: 12.05.2007
Сообщений: 373
|
Иногда появляется необходимость нарисовать, что-нибудь (например, кнопку) в заголовке чужого окна (а возможно и своего). Это можно сделать очень и очень просто.
Пpоцедуpа DrawFrameControl Синтаксис: function DrawFrameControl (DC:HDC;Rc :Trect; uType,uStyle:Word ): Bool; Описание: Рисует один из элементов в заголовке окна. DC : контекст устройства в котором происходит рисование. Rc : Область в которой будет происходить рисование UType: Тип элемента одна из констант: DFC_BUTTON Кнопка DFC_CAPTION Заголовок DCF_MENU Меню DFC_SCROLL Полоса прокрутки Ustyle : Стиль элемента одна из констант: Для кнопок DFCS_BUTTON3STATE Кнопка с тремя состояниями DFCS_BUTTONCHECK Флажок DFCS_BUTTONPUSH Кнопка DFCS_BUTTONRADIO Переключатель DFCS_BUTTONRADIOIMAGE Картинка для переключателя DFCS_BUTTONRADIOMASK Маска для переключателя Для заголовков DFCS_CAPTIONCLOSE Кнопка закрыть DFCS_CAPTIONHELP Кнопка помощь (только Window 9x) DFCS_CAPTIONMAX Кнопка развернуть DFCS_CAPTIONMIN Кнопка свернуть DFCS_CAPTIONRESTORE Кнопка восстановить Для меню DFCS_MENUARROW Стрелка подменю DFCS_MENUBULLET Маркер DFCS_MENUCHECK Маркер - флажек Для полос прокрутки DFCS_SCROLLCOMBOBOX Линейка прокрутки выпадаюшего списка DFCS_SCROLLDOWN Кнопка вниз DFCS_SCROLLLEFT Кнопка влево DFCS_SCROLLRIGHT Кнопка вправо DFCS_SCROLLSIZEGRIP Размерная ручка DFCS_SCROLLUP Кнопка вверх Возвращаемое значение: В случае успешного завеpшения - не нуль; в пpотивном случае - 0. Заметьте, что это функция только рисует элемент заголовка. 14 Отрисовка <фальшивой> кнопки закрыть в заголовке окна. Procedure DrawFalseClose (Wd:HWND; xPos:Integer); Var DC:HDC; begin DC:=GetWindowDC(Wd); // Получим контекст устройства окна If DC>0 then Begin DrawFrameControl (DC,Rect(xPos,4,xPos+16,020),DFC_Ca ption,DFCS_CaptionClose); ReleaseDC(Wd,DC); // Освободим контекст устройства. End; end;
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен: "Перемен!Мы ждем перемен!" |
06.04.2009, 16:59 | #6 |
Участник клуба
Регистрация: 28.11.2007
Сообщений: 1,521
|
Можете просто использовать готовый компонент CaptionButton. Кидаете его на форму и потом в заголовке программы появляется кнопка. Этих кнопок можете ставить сколько угодно. Сам компонент: CaptionButton.rar
Всегда рад помочь!
|
08.04.2009, 19:40 | #7 |
Пользователь
Регистрация: 12.09.2008
Сообщений: 16
|
это на Delphi все, а для С++? там совсем не тоже самое
|
08.04.2009, 20:48 | #8 | ||
АльTRUEи$т
Форумчанин
Регистрация: 19.03.2009
Сообщений: 784
|
Цитата:
Цитата:
|
||
11.09.2010, 20:43 | #9 |
Новичок
Джуниор
Регистрация: 11.09.2010
Сообщений: 1
|
При рисовании новой кнопки в delphi стиль формы меняется со стиля Windows 7 Aero на стиль Win 98. У меня стоит Windows 7.
А нету подписи)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Позиция курсора в заголовке | NieL | Общие вопросы Delphi | 3 | 17.12.2008 18:01 |
Бегущая строка в заголовке приложения (Delphi 7) | Sinx | Помощь студентам | 2 | 08.12.2008 02:35 |
Сортировка с доп параметрами. Хелп | Ice_Juice | Microsoft Office Excel | 22 | 15.03.2008 20:21 |
Рисунок в заголовке TabbedNotebook | Aleksandr | Общие вопросы Delphi | 0 | 28.09.2007 16:03 |
Как сделать чтобы дочерние окна в MDI-приложениях были вне главного окна??? | dimonchuk | Общие вопросы Delphi | 1 | 11.08.2007 12:13 |