CreateWnd method

void CreateWnd()

Implementation

void CreateWnd()
{

  TCreateParams Params = TCreateParams();
  CreateParams(Params);

    if((Params.WndParent == null) && (Params.Style & Windows.WS_CHILD != 0))
      if((Owner != null) && (Owner!.ComponentState.contains(ComponentStates.Reading)) &&
        (Owner is TWinControl))
        Params.WndParent = (Owner as TWinControl).Handle;
      else
        throw EInvalidOperation.CreateFmt(Consts.SParentRequired, [Name]);

  CreateWindowHandle(Params);

  if(WindowHandle == null)
    throw UnsupportedError('RaiseLastOSError');

  var hwnd = WindowHandle!;

  _defWndProc = Windows.ChangeWindowProc(hwnd, (elem, message)
  {
    if(message.Msg == CM_GETINSTANCE)
      message.Result = this;
    else
      WndProc(message);
  });

  Windows.InitWindow(hwnd, INITSTRUCT(
    exStyle: Params.ExStyle,
    windowName: Params.Caption,
    style: Params.Style,
    x: Params.X,
    y: Params.Y,
    width: Params.Width,
    height: Params.Height,
    parent: Params.WndParent,
    param: Params.Param));



  if(Cursor!=TCursor.Default)
    hwnd.clientHandle.style.cursor = Cursor.name;


  /// new ///*



  /// new *///



  UpdateBounds();
  Perform(WM_SETFONT, null, 1);
  if(AutoSize)
    AdjustSize();
}