skulle någon kunna hjälpa mig med hur man kombinerar regioner, jag har försökt med CombineRgn, men jag får det inte att funka Fantasifulla variabelnamn måste jag säga :-)CombineRgn
min kod ser ut som följer:
Private Sub Form_Load()
Dim rgnTemp As Long, rgnTemp1 As Long, rgnTemp2 As Long, rgnTemp3 As Long, rgnTemp4 As Long, rgnTemp5 As Long, rgnTempA As Long, rgnTempB As Long, rgnTempC As Long
rgnTemp1 = CreateRectRgn(0, 0, 240, 120)
rgnTemp2 = CreateEllipticRgn(-26, -26, 26, 26)
rgnTemp3 = CreateEllipticRgn(214, -26, 266, 26)
rgnTempA = CombineRgn(rgnTempA, rgnTemp2, rgnTemp3, RGN_AND)
rgnTemp4 = CreateEllipticRgn(-26, 94, 26, 146)
rgnTemp5 = CreateEllipticRgn(214, 94, 266, 146)
rgnTempB = CombineRgn(rgnTempB, rgnTemp4, rgnTemp5, RGN_AND)
rgnTempC = CombineRgn(rgnTempC, rgnTempA, rgnTempB, RGN_AND)
rgnTemp = CombineRgn(rgnTemp, rgnTemp1, rgnTempC, RGN_OR)
SetWindowRgn Me.hwnd, rgnTemp, True
End Sub
rgnTemp, rgnTempA, rgnTempB och rgnTempC får samtliga värdet "0", och det är ju inte meningen... meningen är att rgnTemp2, rgnTemp3, rgnTemp4 och rgnTemp5 ska tas bort från rgnTemp1...
snälla HJÄLP.../TobiasSv: CombineRgn
>rgnTempA = CombineRgn(rgnTempA, rgnTemp2, rgnTemp3, RGN_AND)
Fel 1: rgnTempA måste vara en giltig region innan du anropar CombineRgn. Enklast fixar du detta genom att skriva
rgnTempA = CreateRectRgn(0, 0, 0, 0)
på raden innan.
Fel 2: CombineRgn returnerar inte ett regions handle, utan bara ett värde som indikerar vilken typ av region som skapats, eller noll vid fel. Du ska alltså inte tilldela returvärdet till rgnTempA.
Detsamma gäller för de övriga CombineRgn anrop du har.
Fel 3: Din kod läcker som ett såll. Städa upp efter dig genom att ta bort alla regioner du inte använder (alla utom rgnTemp alltså) med DeleteObject.
MS
PS, det hjälper inte att ICQa mig och be att jag ska svara. Jag kikar hit lite då och då, och svarar på det jag kan/har lust.