![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SetWindowRgn [D6, Win95/98, WinME, Win2k, WinXP]
mike.dld © (2003-06-08 21:49:00)Использую эту ф-ю несколько раз: у меня два региона и я время от времени для окна то один делаю, то другой. Так вот, MemProof пишет, что "Unknown Win32 Error", когда я вызываю функцию второй раз для региона, который уже использовал, но, ещё раз повторюсь, я регионы поочерёдно меняю, два раза подряд один регион не задаю. В чём дело?
MBo (2003-06-09 08:09:00) [1]В хелпе по SetWindowRgn кое-что написано.
mike.dld (2003-06-09 00:29:00) [2]Проблема даже вот в чём.
Если перед тем, как повторно использовать к-л регион, сделать его DeleteObject, а потом заново его создать, то всё хорошо. Но я читаю координаты для региона из файла, а координат может быть внушительное количество, т.к. я заранее не знаю, сколько. Значит, чтобы создать регион заново, тратится лишнее время. А это нехорошо.
KilkennyCat (2003-06-08 23:10:00) [3]WndRgns[wkMain,ShadeMode[wkMain],DoubleSize] - это должно быть типом HRGN, то есть THandle... как то он старнно выглядит, а?
ну, не должно у тебя быть проблем.... делаешь
var
h1,h2,h3,h4 : THRg;
begin
h1 := creatergn(то что тут надо)...h4 := creatergn(...);
А потом переключаешься SetWindowRGN(hwnd, h1 (или h2..h4), true)
я попробовал - работает.
mike.dld (2003-06-08 22:22:00) [4]
SetWindowRgn(MainWnd,WndRgns[wkMain,ShadeMode[wkMain],DoubleSize],true);
invalidateRect(MainWnd,nil,true);