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:
hnb 2017-02-08 12:49:35 +00:00
parent 491820a1f4
commit b22e329287

View File

@ -294,12 +294,19 @@ var
Parent: HWND;
PreferredSizeStatusBar: HWND;
R: TRect;
AErrorCode: Cardinal;
begin
Flags := WS_CHILD or WS_CLIPSIBLINGS or WS_CLIPCHILDREN;
Parent := TWin32WidgetSet(WidgetSet).AppHandle;
PreferredSizeStatusBar := CreateWindowExW(0, STATUSCLASSNAMEW,
nil, Flags,
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);
PreferredStatusBarHeight := R.Bottom - R.Top;
DestroyWindow(PreferredSizeStatusBar);