Страница 1 из 1
Круглые элементы управления и окна.
Добавлено: 26 авг 2004, 12:46
Marjan
Как это сделать?! Прочитал что это должна делать функция SetWindowRgn(HRGN). Так и делал. Сначала создал клас окна (new CWnd()) потом создал само окно (CWnd::Create(_T("Button"),...,CRect(0,0,100,100),...)) Потом создал регион (::CreateElipticRgn(0,0,100,100)) а потом уж вызвал SetWindowRgn(). Но кнопка упрямо рисуеться квадратной! !!!HELP!!!
Добавлено: 26 авг 2004, 12:59
Romeo
1. Попробуй спрятать окно перед тем, как вызвать SetWindowRgn, а потом снова показать.
2. Проверь выполнил ли ты все условия из ремарки к функции (на всякий случай привожу их здесь - взято из MSDN for .NET):
The coordinates of a window's window region are relative to the upper-left corner of the window, not the client area of the window.
After a successful call to SetWindowRgn, the system owns the region specified by the region handle hRgn. The system does not make a copy of the region. Thus, you should not make any further function calls with this region handle. In particular, do not delete this region handle. The system deletes the region handle when it no longer needed.
To obtain the window region of a window, call the GetWindowRgn function.
Добавлено: 26 авг 2004, 13:11
Marjan
2. Да, да. Я это читал, а 1. попробую!
Добавлено: 26 авг 2004, 13:30
Marjan
Попробовал 1.
_mw->ShowWindow(SW_HIDE);
_mw->SetWindowRgn(rgn,TRUE);
_mw->ShowWindow(SW_SHOW);
Ничего не вышло

Добавлено: 26 авг 2004, 13:31
Marjan
Весь код:
CWnd* _mw=new CWnd();
HRGN rgn=::CreateEllipticRgn(0,0,100,100);
_mw->Create(_T("Button"),"Round",WS_VISIBLE,CRect(0,0,100,100),this,ID_WND);
_mw->ShowWindow(SW_HIDE);
_mw->SetWindowRgn(rgn,TRUE);
_mw->ShowWindow(SW_SHOW);
Добавлено: 26 авг 2004, 13:33
Marjan
this==CView;
Добавлено: 26 авг 2004, 16:36
Kolinus
Сходи на sources.ru - по-моему там есть готовый пример в разделе элементы управления.