_______________
| A |
| ----------- |
| |B ---- | |
| | | C | | |
| | ---- | |
| |_________| |
----------------
Combine Rgn для двух прямоугольников
подксажите как решить проблему
Необходимо изобраизить окно из двух прямоугольников некторой толщины
Код:
A - первый прямоугольник
В - дырка в окне
С - Второй прямоугольник
Еще должен быть D - дырка в С - но изображать ее трудно
Я использую этот код
Код:
h = CreateWindow("Highliter","", WS_VISIBLE, 10, 10, 200, 200, NULL, NULL, hInstance,NULL);
HRGN r3 = CreateRectRgn(0,0, 0, 0);
HRGN r4 = CreateRectRgn(0,0, 0, 0);
HRGN r1 = CreateRectRgn(0,0, 200, 200);
HRGN r2 = CreateRectRgn(12,12,198,198);
CombineRgn(r1,r1,r2,RGN_XOR);
int res = CombineRgn(r3,r3,r1,RGN_OR);
SetWindowRgn(h,r3,true);
MessageBox(NULL,"After First Region","",MB_OK);
r1 = CreateRectRgn(20,20, 150, 150);
r2= CreateRectRgn(25,25,130,130);
CombineRgn(r1,r1,r2,RGN_XOR);
res = CombineRgn(r4,r3,r1,RGN_OR);
SetWindowRgn(h,r4,true);
MessageBox(NULL,"After Second Region","",MB_OK);
HRGN r3 = CreateRectRgn(0,0, 0, 0);
HRGN r4 = CreateRectRgn(0,0, 0, 0);
HRGN r1 = CreateRectRgn(0,0, 200, 200);
HRGN r2 = CreateRectRgn(12,12,198,198);
CombineRgn(r1,r1,r2,RGN_XOR);
int res = CombineRgn(r3,r3,r1,RGN_OR);
SetWindowRgn(h,r3,true);
MessageBox(NULL,"After First Region","",MB_OK);
r1 = CreateRectRgn(20,20, 150, 150);
r2= CreateRectRgn(25,25,130,130);
CombineRgn(r1,r1,r2,RGN_XOR);
res = CombineRgn(r4,r3,r1,RGN_OR);
SetWindowRgn(h,r4,true);
MessageBox(NULL,"After Second Region","",MB_OK);
Но в res = CombineRgn(r4,r3,r1,RGN_OR), функция возвращает ERROR, что не так по логике вроде все ок.
[SIZE=2]само проще это так
[/SIZE]
HRGN r1 = CreateRectRgn(0,0, 200, 200);
HRGN r2 = CreateRectRgn(20,20,180,180);
[/SIZE][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][SIZE=2] res = CombineRgn(r1,r1,r2,RGN_XOR);
HRGN r3 = CreateRectRgn(50,50, 150, 150);
HRGN r4 = CreateRectRgn(70,70, 130, 130);
res = CombineRgn(r1,r1,r4,RGN_OR);
SetWindowRgn(hWnd,r1,[/SIZE][SIZE=2][COLOR=#0000ff]true[/COLOR][/SIZE][SIZE=2]);[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2];)
[/SIZE]