Здравствуйте господа разработчики ГТК.
Возник вопрос по методу ScreenRepaint компоненты TMapScreen
Наш код написан таким образом, что периодически, функция scrDrawMap внутри нижеописанного метода срабатывает аварийно (многонитевая программа - несколько TThread)
После сбоя, методу "уходит" в ветку except
Вопрос:
Что делает ветка except и когда она срабатывает ???
----------------
Код содержит следующую переменную "судба которой "выглядит вот так:
Второй вопрос, в каком случае срабатывает pf_scrReleaseDC ?
Возник вопрос по методу ScreenRepaint компоненты TMapScreen
Наш код написан таким образом, что периодически, функция scrDrawMap внутри нижеописанного метода срабатывает аварийно (многонитевая программа - несколько TThread)
После сбоя, методу "уходит" в ветку except
Вопрос:
Что делает ветка except и когда она срабатывает ???
Код |
---|
procedure TMapScreen.ScreenRepaint(aPaintRectInWin : PRect); var rect1 : TRECT; position : TPOINT; ScreenDc : HDC; begin ScreenDc := 0; try if FMapScreen = 0 then exit; FPaintPosHor := MapLeft; // 16/01/2004 FPaintPosVer := MapTop; if aPaintRectInWin <> nil then begin position.x := aPaintRectInWin.Left; position.Y := aPaintRectInWin.Top; rect1 := rect(aPaintRectInWin.Left + FPaintPosHor, aPaintRectInWin.Top + FPaintPosVer, aPaintRectInWin.Right + FPaintPosHor, aPaintRectInWin.Bottom + FPaintPosVer); end else begin position.x := 0; position.Y := 0; rect1 := rect(FPaintPosHor, FPaintPosVer, FPaintPosHor + width, FPaintPosVer + height); end; pf_scrDrawMap(FMapScreen, rect1, position); FScreenUpdateBeforePaint := false; // 27/04/2009 if Assigned(FOnMapScreenUpdate) then FOnMapScreenUpdate(Self, rect1, position.x, position.y); // FScreenUpdateBeforePaint := false; 27/04/2009 except if ScreenDc <> 0 then pf_scrReleaseDC(FMapScreen); end; end; |
----------------
Код содержит следующую переменную "судба которой "выглядит вот так:
Код |
---|
var ScreenDc : HDC; begin ScreenDc := 0; .... try .... except if ScreenDc <> 0 then pf_scrReleaseDC(FMapScreen); end; end; |
Второй вопрос, в каком случае срабатывает pf_scrReleaseDC ?
Не тот глуп кто не знает, а тот, кто не знает где искать.