mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-16 06:20:17 +02:00
Raise error for badly created control for "preferred status bar height" initialization. The local variable R is uninitialized (random value from stack) for badly implemented DLLs with forms. The problem is visible for TControl.ChangeBounds / TControl.DoSetBounds methods (randomly raised BoundsOutOfBounds)
git-svn-id: trunk@54120 -
This commit is contained in:
parent
491820a1f4
commit
b22e329287
@ -294,12 +294,19 @@ var
|
|||||||
Parent: HWND;
|
Parent: HWND;
|
||||||
PreferredSizeStatusBar: HWND;
|
PreferredSizeStatusBar: HWND;
|
||||||
R: TRect;
|
R: TRect;
|
||||||
|
AErrorCode: Cardinal;
|
||||||
begin
|
begin
|
||||||
Flags := WS_CHILD or WS_CLIPSIBLINGS or WS_CLIPCHILDREN;
|
Flags := WS_CHILD or WS_CLIPSIBLINGS or WS_CLIPCHILDREN;
|
||||||
Parent := TWin32WidgetSet(WidgetSet).AppHandle;
|
Parent := TWin32WidgetSet(WidgetSet).AppHandle;
|
||||||
PreferredSizeStatusBar := CreateWindowExW(0, STATUSCLASSNAMEW,
|
PreferredSizeStatusBar := CreateWindowExW(0, STATUSCLASSNAMEW,
|
||||||
nil, Flags,
|
nil, Flags,
|
||||||
0, 0, 0, 0, Parent, 0, HInstance, nil);
|
0, 0, 0, 0, Parent, 0, HInstance, nil);
|
||||||
|
if PreferredSizeStatusBar = 0 then
|
||||||
|
begin
|
||||||
|
AErrorCode := GetLastError;
|
||||||
|
DebugLn(['Failed to create win32 control, error: ', AErrorCode, ' : ', GetLastErrorText(AErrorCode)]);
|
||||||
|
raise Exception.Create('Failed to create win32 control, error: ' + IntToStr(AErrorCode) + ' : ' + GetLastErrorText(AErrorCode));
|
||||||
|
end;
|
||||||
GetWindowRect(PreferredSizeStatusBar, R);
|
GetWindowRect(PreferredSizeStatusBar, R);
|
||||||
PreferredStatusBarHeight := R.Bottom - R.Top;
|
PreferredStatusBarHeight := R.Bottom - R.Top;
|
||||||
DestroyWindow(PreferredSizeStatusBar);
|
DestroyWindow(PreferredSizeStatusBar);
|
||||||
|
Loading…
Reference in New Issue
Block a user