Страница 1 из 1

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

Добавлено: 07 май 2007, 14:57
Yuri-ch
Переопределил рисование неклиентской области окна.
Пытаюсь вручную создать кнопку закрытия, примерно так:

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++)

Подскажите, где грабли?

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

Добавлено: 11 май 2007, 19:05
aven
...Что за класс CPngTextButton?

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

Добавлено: 14 май 2007, 12:54
Yuri-ch
CPngTextButton - Класс, где переопределено рисование кнопки.

Короче, сделал вывод что это нереально. Проще сымитировать наличие этих кнопок (рисовать их на заголовке и обрабатывать действия мыши)

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

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