создание кнопок в неклиентской области

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Ответить
Yuri-ch
Сообщения: 4
Зарегистрирован: 05 июл 2006, 15:36

Переопределил рисование неклиентской области окна.
Пытаюсь вручную создать кнопку закрытия, примерно так:

LRESULT MyCustomPanel::OnNcCreate(WPARAM wParam, LPARAM lParam)
{
Default();
CRect wndBounds(0,0,0,0);
GetWindowRect(&wndBounds);
CRect btnBounds(wndBounds.right-15,wndBounds.top+5,wndBounds.right-5,wndBounds.top+15);

m_ncClose = new CPngTextButton();
m_ncClose->Create(_T(""), WS_CHILD|WS_VISIBLE, btnBounds, this, ID_BTNCLOSE);
}


Кнопка создается, но она не видна (стиль WS_VISIBLE выставляется, проверял с помощью Spy++)

Подскажите, где грабли?
aven
Сообщения: 21
Зарегистрирован: 25 фев 2007, 16:33
Контактная информация:

...Что за класс CPngTextButton?
Yuri-ch
Сообщения: 4
Зарегистрирован: 05 июл 2006, 15:36

CPngTextButton - Класс, где переопределено рисование кнопки.

Короче, сделал вывод что это нереально. Проще сымитировать наличие этих кнопок (рисовать их на заголовке и обрабатывать действия мыши)
aven
Сообщения: 21
Зарегистрирован: 25 фев 2007, 16:33
Контактная информация:

...В неклиентской области нельзя ставить оконные классы. Прокрутки в окнах, например, это не окна а "рисунки" - то же касается и кнопок на заголовке окна.
Глянь мою ссылку: http://www.vbstreets.ru/VB/Sources/66474.aspx - там все кратко и доступно и касательно кнопок в заголовке и вообще оформления неклиентской области...
Ответить