Показать сообщение отдельно
Старый 15.09.2004, 17:04     # 1
EjikVTumane
Member
 
Аватар для EjikVTumane
 
Регистрация: 18.04.2002
Адрес: Ф туманах Новосибирска...
Сообщения: 378

EjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собойEjikVTumane Имеются все основания чтобы гордиться собой
Создание непрямоугольного окна с изменяемым размером (WinAPI)

Для получения окна произвольной формы с изменяемым размером обрабатываю WM_SIZE, но при уменьшении размера окна за правой и нижней границей тянется шлейф. Причем только за частями границы, которые отличаются от исходного прямоугольного региона (например за скругленными углами окна).

Самое забавное - есть замечательный пример написанный на MFC http://www.rsdn.ru/article/files/Classes/skindlg.xml и все прекрасно работает. А на WinAPI не получается

Как можно решить данную проблему?

Код:
case WM_SIZE:
{
      RECT clientRect, wndRect;
      GetClientRect(hWnd, &clientRect);
      UpdateMainFrame(((int)(short)LOWORD(lParam)), ((int)(short)HIWORD(lParam)));
      WindowRgn = BitmapToRegion(MainFrame, RGB(255, 0, 255));
      SetWindowRgn(hWnd, WindowRgn, FALSE);
      hdc = GetDC(hWnd);
      HDC MainFrameDC;
      MainFrameDC = CreateCompatibleDC(NULL);
      SelectObject(MainFrameDC, MainFrame);
      BitBlt(hdc, 0, 0, clientRect.right, clientRect.bottom, MainFrameDC, 0, 0, SRCCOPY);
      ReleaseDC(hWnd, hdc);
      DeleteDC(MainFrameDC);

      return 0;
}
Пара пояснений к коду:
UpdateMainFrame - создается BITMAP
BitmapToRegion - создается регион на основе BITMAP'а

Последний раз редактировалось Gunslinger; 15.09.2004 в 17:23.
EjikVTumane вне форума