Move CPWL_CREATPARAM to CPWL_Wnd::CreateParams

This nesting makes so much more sense when I read the code.
Fix member naming for this in CPWL_Wnd.
Pass in/out CreateParams arg as pointer.
Kill Reset() method, only called during destroy and nothing needs
explicit cleanup.

Change-Id: If50e403e11c131e7656da09c0cb36866223d64c6
Reviewed-on: https://pdfium-review.googlesource.com/14070
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/pwl/cpwl_appstream.cpp b/fpdfsdk/pwl/cpwl_appstream.cpp
index 405a205..c7188ad 100644
--- a/fpdfsdk/pwl/cpwl_appstream.cpp
+++ b/fpdfsdk/pwl/cpwl_appstream.cpp
@@ -691,7 +691,7 @@
     return CFX_ByteString();
 
   CPWL_Icon icon;
-  PWL_CREATEPARAM cp;
+  CPWL_Wnd::CreateParams cp;
   cp.dwFlags = PWS_VISIBLE;
   icon.Create(cp);
   icon.SetIconFit(&fit);
diff --git a/fpdfsdk/pwl/cpwl_button.cpp b/fpdfsdk/pwl/cpwl_button.cpp
index 525148a..fc0479b 100644
--- a/fpdfsdk/pwl/cpwl_button.cpp
+++ b/fpdfsdk/pwl/cpwl_button.cpp
@@ -15,24 +15,20 @@
   return "CPWL_Button";
 }
 
-void CPWL_Button::OnCreate(PWL_CREATEPARAM& cp) {
-  cp.eCursorType = FXCT_HAND;
+void CPWL_Button::OnCreate(CreateParams* pParamsToAdjust) {
+  pParamsToAdjust->eCursorType = FXCT_HAND;
 }
 
 bool CPWL_Button::OnLButtonDown(const CFX_PointF& point, uint32_t nFlag) {
   CPWL_Wnd::OnLButtonDown(point, nFlag);
-
   m_bMouseDown = true;
   SetCapture();
-
   return true;
 }
 
 bool CPWL_Button::OnLButtonUp(const CFX_PointF& point, uint32_t nFlag) {
   CPWL_Wnd::OnLButtonUp(point, nFlag);
-
   ReleaseCapture();
   m_bMouseDown = false;
-
   return true;
 }
diff --git a/fpdfsdk/pwl/cpwl_button.h b/fpdfsdk/pwl/cpwl_button.h
index 44cc1e2..f26ae1c 100644
--- a/fpdfsdk/pwl/cpwl_button.h
+++ b/fpdfsdk/pwl/cpwl_button.h
@@ -16,7 +16,7 @@
 
   // CPWL_Wnd
   CFX_ByteString GetClassName() const override;
-  void OnCreate(PWL_CREATEPARAM& cp) override;
+  void OnCreate(CreateParams* pParamsToAdjust) override;
   bool OnLButtonDown(const CFX_PointF& point, uint32_t nFlag) override;
   bool OnLButtonUp(const CFX_PointF& point, uint32_t nFlag) override;
 
diff --git a/fpdfsdk/pwl/cpwl_combo_box.cpp b/fpdfsdk/pwl/cpwl_combo_box.cpp
index 8c5e99f..0365194 100644
--- a/fpdfsdk/pwl/cpwl_combo_box.cpp
+++ b/fpdfsdk/pwl/cpwl_combo_box.cpp
@@ -151,9 +151,9 @@
   return "CPWL_ComboBox";
 }
 
-void CPWL_ComboBox::OnCreate(PWL_CREATEPARAM& cp) {
-  cp.dwFlags &= ~PWS_HSCROLL;
-  cp.dwFlags &= ~PWS_VSCROLL;
+void CPWL_ComboBox::OnCreate(CreateParams* pParamsToAdjust) {
+  pParamsToAdjust->dwFlags &= ~PWS_HSCROLL;
+  pParamsToAdjust->dwFlags &= ~PWS_VSCROLL;
 }
 
 void CPWL_ComboBox::OnDestroy() {
@@ -237,20 +237,20 @@
     m_pEdit->ClearSelection();
 }
 
-void CPWL_ComboBox::CreateChildWnd(const PWL_CREATEPARAM& cp) {
+void CPWL_ComboBox::CreateChildWnd(const CreateParams& cp) {
   CreateEdit(cp);
   CreateButton(cp);
   CreateListBox(cp);
 }
 
-void CPWL_ComboBox::CreateEdit(const PWL_CREATEPARAM& cp) {
+void CPWL_ComboBox::CreateEdit(const CreateParams& cp) {
   if (m_pEdit)
     return;
 
   m_pEdit = new CPWL_Edit();
   m_pEdit->AttachFFLData(m_pFormFiller.Get());
 
-  PWL_CREATEPARAM ecp = cp;
+  CreateParams ecp = cp;
   ecp.pParentWnd = this;
   ecp.dwFlags = PWS_VISIBLE | PWS_CHILD | PWS_BORDER | PES_CENTER |
                 PES_AUTOSCROLL | PES_UNDO;
@@ -267,13 +267,13 @@
   m_pEdit->Create(ecp);
 }
 
-void CPWL_ComboBox::CreateButton(const PWL_CREATEPARAM& cp) {
+void CPWL_ComboBox::CreateButton(const CreateParams& cp) {
   if (m_pButton)
     return;
 
   m_pButton = new CPWL_CBButton;
 
-  PWL_CREATEPARAM bcp = cp;
+  CreateParams bcp = cp;
   bcp.pParentWnd = this;
   bcp.dwFlags = PWS_VISIBLE | PWS_CHILD | PWS_BORDER | PWS_BACKGROUND;
   bcp.sBackgroundColor = CFX_Color(COLORTYPE_RGB, 220.0f / 255.0f,
@@ -285,14 +285,14 @@
   m_pButton->Create(bcp);
 }
 
-void CPWL_ComboBox::CreateListBox(const PWL_CREATEPARAM& cp) {
+void CPWL_ComboBox::CreateListBox(const CreateParams& cp) {
   if (m_pList)
     return;
 
   m_pList = new CPWL_CBListBox();
   m_pList->AttachFFLData(m_pFormFiller.Get());
 
-  PWL_CREATEPARAM lcp = cp;
+  CreateParams lcp = cp;
   lcp.pParentWnd = this;
   lcp.dwFlags =
       PWS_CHILD | PWS_BORDER | PWS_BACKGROUND | PLBS_HOVERSEL | PWS_VSCROLL;
diff --git a/fpdfsdk/pwl/cpwl_combo_box.h b/fpdfsdk/pwl/cpwl_combo_box.h
index 7059fac..b431191 100644
--- a/fpdfsdk/pwl/cpwl_combo_box.h
+++ b/fpdfsdk/pwl/cpwl_combo_box.h
@@ -51,13 +51,13 @@
 
   // CPWL_Wnd:
   CFX_ByteString GetClassName() const override;
-  void OnCreate(PWL_CREATEPARAM& cp) override;
+  void OnCreate(CreateParams* pParamsToAdjust) override;
   void OnDestroy() override;
   bool OnKeyDown(uint16_t nChar, uint32_t nFlag) override;
   bool OnChar(uint16_t nChar, uint32_t nFlag) override;
   void NotifyLButtonDown(CPWL_Wnd* child, const CFX_PointF& pos) override;
   void NotifyLButtonUp(CPWL_Wnd* child, const CFX_PointF& pos) override;
-  void CreateChildWnd(const PWL_CREATEPARAM& cp) override;
+  void CreateChildWnd(const CreateParams& cp) override;
   void RePosChildWnd() override;
   CFX_FloatRect GetFocusRect() const override;
   void SetFocus() override;
@@ -84,9 +84,9 @@
   void AttachFFLData(CFFL_FormFiller* pData) { m_pFormFiller = pData; }
 
  private:
-  void CreateEdit(const PWL_CREATEPARAM& cp);
-  void CreateButton(const PWL_CREATEPARAM& cp);
-  void CreateListBox(const PWL_CREATEPARAM& cp);
+  void CreateEdit(const CreateParams& cp);
+  void CreateButton(const CreateParams& cp);
+  void CreateListBox(const CreateParams& cp);
   void SetPopup(bool bPopup);
 
   CFX_UnownedPtr<CPWL_Edit> m_pEdit;
diff --git a/fpdfsdk/pwl/cpwl_edit_ctrl.cpp b/fpdfsdk/pwl/cpwl_edit_ctrl.cpp
index 3a79e0a..7baaaa8 100644
--- a/fpdfsdk/pwl/cpwl_edit_ctrl.cpp
+++ b/fpdfsdk/pwl/cpwl_edit_ctrl.cpp
@@ -24,12 +24,12 @@
 
 CPWL_EditCtrl::~CPWL_EditCtrl() {}
 
-void CPWL_EditCtrl::OnCreate(PWL_CREATEPARAM& cp) {
-  cp.eCursorType = FXCT_VBEAM;
+void CPWL_EditCtrl::OnCreate(CreateParams* pParamsToAdjust) {
+  pParamsToAdjust->eCursorType = FXCT_VBEAM;
 }
 
 void CPWL_EditCtrl::OnCreated() {
-  SetFontSize(GetCreationParam().fFontSize);
+  SetFontSize(GetCreationParams().fFontSize);
 
   m_pEdit->SetFontMap(GetFontMap());
   m_pEdit->SetNotify(this);
@@ -85,19 +85,19 @@
   m_pEdit->SetScrollPos(CFX_PointF(m_pEdit->GetScrollPos().x, pos));
 }
 
-void CPWL_EditCtrl::CreateChildWnd(const PWL_CREATEPARAM& cp) {
+void CPWL_EditCtrl::CreateChildWnd(const CreateParams& cp) {
   if (!IsReadOnly())
     CreateEditCaret(cp);
 }
 
-void CPWL_EditCtrl::CreateEditCaret(const PWL_CREATEPARAM& cp) {
+void CPWL_EditCtrl::CreateEditCaret(const CreateParams& cp) {
   if (m_pEditCaret)
     return;
 
   m_pEditCaret = new CPWL_Caret;
   m_pEditCaret->SetInvalidRect(GetClientRect());
 
-  PWL_CREATEPARAM ecp = cp;
+  CreateParams ecp = cp;
   ecp.pParentWnd = this;
   ecp.dwFlags = PWS_CHILD | PWS_NOREFRESHCLIP;
   ecp.dwBorderWidth = 0;
diff --git a/fpdfsdk/pwl/cpwl_edit_ctrl.h b/fpdfsdk/pwl/cpwl_edit_ctrl.h
index 03dc4be..eb4470f 100644
--- a/fpdfsdk/pwl/cpwl_edit_ctrl.h
+++ b/fpdfsdk/pwl/cpwl_edit_ctrl.h
@@ -44,8 +44,8 @@
 
   void SetReadyToInput();
 
-  // CPWL_Wnd
-  void OnCreate(PWL_CREATEPARAM& cp) override;
+  // CPWL_Wnd:
+  void OnCreate(CreateParams* pParamsToAdjust) override;
   void OnCreated() override;
   bool OnKeyDown(uint16_t nChar, uint32_t nFlag) override;
   bool OnChar(uint16_t nChar, uint32_t nFlag) override;
@@ -55,7 +55,7 @@
   void SetScrollInfo(const PWL_SCROLL_INFO& info) override;
   void SetScrollPosition(float pos) override;
   void ScrollWindowVertically(float pos) override;
-  void CreateChildWnd(const PWL_CREATEPARAM& cp) override;
+  void CreateChildWnd(const CreateParams& cp) override;
   void RePosChildWnd() override;
   void SetFontSize(float fFontSize) override;
   float GetFontSize() const override;
@@ -88,7 +88,7 @@
   bool m_bMouseDown;
 
  private:
-  void CreateEditCaret(const PWL_CREATEPARAM& cp);
+  void CreateEditCaret(const CreateParams& cp);
 
   int32_t m_nCharSet;
 };
diff --git a/fpdfsdk/pwl/cpwl_list_box.cpp b/fpdfsdk/pwl/cpwl_list_box.cpp
index a9c553e..4090e79 100644
--- a/fpdfsdk/pwl/cpwl_list_box.cpp
+++ b/fpdfsdk/pwl/cpwl_list_box.cpp
@@ -83,7 +83,7 @@
 
   SetHoverSel(HasFlag(PLBS_HOVERSEL));
   m_pList->SetMultipleSel(HasFlag(PLBS_MULTIPLESEL));
-  m_pList->SetFontSize(GetCreationParam().fFontSize);
+  m_pList->SetFontSize(GetCreationParams().fFontSize);
 
   m_bHoverSel = HasFlag(PLBS_HOVERSEL);
 }
diff --git a/fpdfsdk/pwl/cpwl_scroll_bar.cpp b/fpdfsdk/pwl/cpwl_scroll_bar.cpp
index ea38b0f..1524729 100644
--- a/fpdfsdk/pwl/cpwl_scroll_bar.cpp
+++ b/fpdfsdk/pwl/cpwl_scroll_bar.cpp
@@ -131,8 +131,8 @@
   return "CPWL_SBButton";
 }
 
-void CPWL_SBButton::OnCreate(PWL_CREATEPARAM& cp) {
-  cp.eCursorType = FXCT_ARROW;
+void CPWL_SBButton::OnCreate(CreateParams* pParamsToAdjust) {
+  pParamsToAdjust->eCursorType = FXCT_ARROW;
 }
 
 void CPWL_SBButton::DrawThisAppearance(CFX_RenderDevice* pDevice,
@@ -329,8 +329,8 @@
   return "CPWL_ScrollBar";
 }
 
-void CPWL_ScrollBar::OnCreate(PWL_CREATEPARAM& cp) {
-  cp.eCursorType = FXCT_ARROW;
+void CPWL_ScrollBar::OnCreate(CreateParams* pParamsToAdjust) {
+  pParamsToAdjust->eCursorType = FXCT_ARROW;
 }
 
 void CPWL_ScrollBar::OnDestroy() {
@@ -539,8 +539,8 @@
     OnPosButtonMouseMove(pos);
 }
 
-void CPWL_ScrollBar::CreateButtons(const PWL_CREATEPARAM& cp) {
-  PWL_CREATEPARAM scp = cp;
+void CPWL_ScrollBar::CreateButtons(const CreateParams& cp) {
+  CreateParams scp = cp;
   scp.pParentWnd = this;
   scp.dwBorderWidth = 2;
   scp.nBorderStyle = BorderStyle::BEVELED;
@@ -863,7 +863,7 @@
   return fTrue;
 }
 
-void CPWL_ScrollBar::CreateChildWnd(const PWL_CREATEPARAM& cp) {
+void CPWL_ScrollBar::CreateChildWnd(const CreateParams& cp) {
   CreateButtons(cp);
 }
 
diff --git a/fpdfsdk/pwl/cpwl_scroll_bar.h b/fpdfsdk/pwl/cpwl_scroll_bar.h
index e35a6a0..44c72cb 100644
--- a/fpdfsdk/pwl/cpwl_scroll_bar.h
+++ b/fpdfsdk/pwl/cpwl_scroll_bar.h
@@ -50,7 +50,7 @@
 
   // CPWL_Wnd
   CFX_ByteString GetClassName() const override;
-  void OnCreate(PWL_CREATEPARAM& cp) override;
+  void OnCreate(CreateParams* pParamsToAdjust) override;
   void DrawThisAppearance(CFX_RenderDevice* pDevice,
                           const CFX_Matrix& mtUser2Device) override;
   bool OnLButtonDown(const CFX_PointF& point, uint32_t nFlag) override;
@@ -120,9 +120,9 @@
   explicit CPWL_ScrollBar(PWL_SCROLLBAR_TYPE sbType = SBT_HSCROLL);
   ~CPWL_ScrollBar() override;
 
-  // CPWL_Wnd
+  // CPWL_Wnd:
   CFX_ByteString GetClassName() const override;
-  void OnCreate(PWL_CREATEPARAM& cp) override;
+  void OnCreate(CreateParams* pParamsToAdjust) override;
   void OnDestroy() override;
   void RePosChildWnd() override;
   void DrawThisAppearance(CFX_RenderDevice* pDevice,
@@ -134,7 +134,7 @@
   void NotifyLButtonDown(CPWL_Wnd* child, const CFX_PointF& pos) override;
   void NotifyLButtonUp(CPWL_Wnd* child, const CFX_PointF& pos) override;
   void NotifyMouseMove(CPWL_Wnd* child, const CFX_PointF& pos) override;
-  void CreateChildWnd(const PWL_CREATEPARAM& cp) override;
+  void CreateChildWnd(const CreateParams& cp) override;
   void TimerProc() override;
 
   float GetScrollBarWidth() const;
@@ -151,7 +151,7 @@
   CFX_FloatRect GetScrollArea() const;
 
  private:
-  void CreateButtons(const PWL_CREATEPARAM& cp);
+  void CreateButtons(const CreateParams& cp);
 
   void OnMinButtonLBDown(const CFX_PointF& point);
   void OnMinButtonLBUp(const CFX_PointF& point);
diff --git a/fpdfsdk/pwl/cpwl_wnd.cpp b/fpdfsdk/pwl/cpwl_wnd.cpp
index e26df4d..e259d1f 100644
--- a/fpdfsdk/pwl/cpwl_wnd.cpp
+++ b/fpdfsdk/pwl/cpwl_wnd.cpp
@@ -21,7 +21,7 @@
 
 }  // namespace
 
-PWL_CREATEPARAM::PWL_CREATEPARAM()
+CPWL_Wnd::CreateParams::CreateParams()
     : rcRectWnd(0, 0, 0, 0),
       pSystemHandler(nullptr),
       pFontMap(nullptr),
@@ -42,7 +42,7 @@
       pMsgControl(nullptr),
       eCursorType(FXCT_ARROW) {}
 
-PWL_CREATEPARAM::PWL_CREATEPARAM(const PWL_CREATEPARAM& other) = default;
+CPWL_Wnd::CreateParams::CreateParams(const CreateParams& other) = default;
 
 class CPWL_MsgControl : public CFX_Observable<CPWL_MsgControl> {
   friend class CPWL_Wnd;
@@ -148,52 +148,47 @@
   return "CPWL_Wnd";
 }
 
-void CPWL_Wnd::Create(const PWL_CREATEPARAM& cp) {
+void CPWL_Wnd::Create(const CreateParams& cp) {
   if (IsValid())
     return;
 
-  m_sPrivateParam = cp;
-  OnCreate(m_sPrivateParam);
-
-  m_sPrivateParam.rcRectWnd.Normalize();
-  m_rcWindow = m_sPrivateParam.rcRectWnd;
+  m_CreationParams = cp;
+  OnCreate(&m_CreationParams);
+  m_CreationParams.rcRectWnd.Normalize();
+  m_rcWindow = m_CreationParams.rcRectWnd;
   m_rcClip = m_rcWindow;
   if (!m_rcClip.IsEmpty()) {
     m_rcClip.Inflate(1.0f, 1.0f);
     m_rcClip.Normalize();
   }
   CreateMsgControl();
+  if (m_CreationParams.pParentWnd)
+    m_CreationParams.pParentWnd->AddChild(this);
 
-  if (m_sPrivateParam.pParentWnd)
-    m_sPrivateParam.pParentWnd->AddChild(this);
-
-  PWL_CREATEPARAM ccp = m_sPrivateParam;
-
+  CreateParams ccp = m_CreationParams;
   ccp.dwFlags &= 0xFFFF0000L;  // remove sub styles
   CreateScrollBar(ccp);
   CreateChildWnd(ccp);
-
   m_bVisible = HasFlag(PWS_VISIBLE);
   OnCreated();
-
   RePosChildWnd();
   m_bCreated = true;
 }
 
-void CPWL_Wnd::OnCreate(PWL_CREATEPARAM& cp) {}
+void CPWL_Wnd::OnCreate(CreateParams* pParamsToAdjust) {}
 
 void CPWL_Wnd::OnCreated() {}
 
 void CPWL_Wnd::OnDestroy() {}
 
 void CPWL_Wnd::InvalidateFocusHandler(IPWL_FocusHandler* handler) {
-  if (m_sPrivateParam.pFocusHandler == handler)
-    m_sPrivateParam.pFocusHandler = nullptr;
+  if (m_CreationParams.pFocusHandler == handler)
+    m_CreationParams.pFocusHandler = nullptr;
 }
 
 void CPWL_Wnd::InvalidateProvider(IPWL_Provider* provider) {
-  if (m_sPrivateParam.pProvider.Get() == provider)
-    m_sPrivateParam.pProvider.Reset();
+  if (m_CreationParams.pProvider.Get() == provider)
+    m_CreationParams.pProvider.Reset();
 }
 
 void CPWL_Wnd::Destroy() {
@@ -208,13 +203,12 @@
         delete pChild;
       }
     }
-    if (m_sPrivateParam.pParentWnd)
-      m_sPrivateParam.pParentWnd->RemoveChild(this);
+    if (m_CreationParams.pParentWnd)
+      m_CreationParams.pParentWnd->RemoveChild(this);
 
     m_bCreated = false;
   }
   DestroyMsgControl();
-  m_sPrivateParam.Reset();
   m_Children.clear();
 }
 
@@ -235,7 +229,7 @@
   if (bRefresh)
     InvalidateRectMove(rcOld, rcNew);
 
-  m_sPrivateParam.rcRectWnd = m_rcWindow;
+  m_CreationParams.rcRectWnd = m_rcWindow;
 }
 
 void CPWL_Wnd::InvalidateRectMove(const CFX_FloatRect& rcOld,
@@ -310,7 +304,7 @@
 
   if (CFX_SystemHandler* pSH = GetSystemHandler()) {
     if (CPDFSDK_Widget* widget = static_cast<CPDFSDK_Widget*>(
-            m_sPrivateParam.pAttachedWidget.Get())) {
+            m_CreationParams.pAttachedWidget.Get())) {
       pSH->InvalidateRect(widget, rcWin);
     }
   }
@@ -413,16 +407,8 @@
 
 void CPWL_Wnd::NotifyMouseMove(CPWL_Wnd* child, const CFX_PointF& pos) {}
 
-bool CPWL_Wnd::IsValid() const {
-  return m_bCreated;
-}
-
-const PWL_CREATEPARAM& CPWL_Wnd::GetCreationParam() const {
-  return m_sPrivateParam;
-}
-
 CPWL_Wnd* CPWL_Wnd::GetParentWindow() const {
-  return m_sPrivateParam.pParentWnd;
+  return m_CreationParams.pParentWnd;
 }
 
 CFX_FloatRect CPWL_Wnd::GetWindowRect() const {
@@ -448,40 +434,40 @@
 }
 
 bool CPWL_Wnd::HasFlag(uint32_t dwFlags) const {
-  return (m_sPrivateParam.dwFlags & dwFlags) != 0;
+  return (m_CreationParams.dwFlags & dwFlags) != 0;
 }
 
 void CPWL_Wnd::RemoveFlag(uint32_t dwFlags) {
-  m_sPrivateParam.dwFlags &= ~dwFlags;
+  m_CreationParams.dwFlags &= ~dwFlags;
 }
 
 void CPWL_Wnd::AddFlag(uint32_t dwFlags) {
-  m_sPrivateParam.dwFlags |= dwFlags;
+  m_CreationParams.dwFlags |= dwFlags;
 }
 
 CFX_Color CPWL_Wnd::GetBackgroundColor() const {
-  return m_sPrivateParam.sBackgroundColor;
+  return m_CreationParams.sBackgroundColor;
 }
 
 void CPWL_Wnd::SetBackgroundColor(const CFX_Color& color) {
-  m_sPrivateParam.sBackgroundColor = color;
+  m_CreationParams.sBackgroundColor = color;
 }
 
 CFX_Color CPWL_Wnd::GetTextColor() const {
-  return m_sPrivateParam.sTextColor;
+  return m_CreationParams.sTextColor;
 }
 
 BorderStyle CPWL_Wnd::GetBorderStyle() const {
-  return m_sPrivateParam.nBorderStyle;
+  return m_CreationParams.nBorderStyle;
 }
 
 void CPWL_Wnd::SetBorderStyle(BorderStyle nBorderStyle) {
   if (HasFlag(PWS_BORDER))
-    m_sPrivateParam.nBorderStyle = nBorderStyle;
+    m_CreationParams.nBorderStyle = nBorderStyle;
 }
 
 int32_t CPWL_Wnd::GetBorderWidth() const {
-  return HasFlag(PWS_BORDER) ? m_sPrivateParam.dwBorderWidth : 0;
+  return HasFlag(PWS_BORDER) ? m_CreationParams.dwBorderWidth : 0;
 }
 
 int32_t CPWL_Wnd::GetInnerBorderWidth() const {
@@ -489,30 +475,30 @@
 }
 
 CFX_Color CPWL_Wnd::GetBorderColor() const {
-  return HasFlag(PWS_BORDER) ? m_sPrivateParam.sBorderColor : CFX_Color();
+  return HasFlag(PWS_BORDER) ? m_CreationParams.sBorderColor : CFX_Color();
 }
 
 const CPWL_Dash& CPWL_Wnd::GetBorderDash() const {
-  return m_sPrivateParam.sDash;
+  return m_CreationParams.sDash;
 }
 
 void* CPWL_Wnd::GetAttachedData() const {
-  return m_sPrivateParam.pAttachedData;
+  return m_CreationParams.pAttachedData;
 }
 
 CPWL_ScrollBar* CPWL_Wnd::GetVScrollBar() const {
   return HasFlag(PWS_VSCROLL) ? m_pVScrollBar.Get() : nullptr;
 }
 
-void CPWL_Wnd::CreateScrollBar(const PWL_CREATEPARAM& cp) {
+void CPWL_Wnd::CreateScrollBar(const CreateParams& cp) {
   CreateVScrollBar(cp);
 }
 
-void CPWL_Wnd::CreateVScrollBar(const PWL_CREATEPARAM& cp) {
+void CPWL_Wnd::CreateVScrollBar(const CreateParams& cp) {
   if (m_pVScrollBar || !HasFlag(PWS_VSCROLL))
     return;
 
-  PWL_CREATEPARAM scp = cp;
+  CreateParams scp = cp;
 
   // flags
   scp.dwFlags =
@@ -569,7 +555,7 @@
 }
 
 const CPWL_Wnd* CPWL_Wnd::GetRootWnd() const {
-  auto* pParent = m_sPrivateParam.pParentWnd;
+  auto* pParent = m_CreationParams.pParentWnd;
   return pParent ? pParent->GetRootWnd() : this;
 }
 
@@ -618,20 +604,20 @@
   pVSB->Move(rcVScroll, true, false);
 }
 
-void CPWL_Wnd::CreateChildWnd(const PWL_CREATEPARAM& cp) {}
+void CPWL_Wnd::CreateChildWnd(const CreateParams& cp) {}
 
 void CPWL_Wnd::SetCursor() {
   if (IsValid()) {
     if (CFX_SystemHandler* pSH = GetSystemHandler()) {
-      int32_t nCursorType = GetCreationParam().eCursorType;
+      int32_t nCursorType = GetCreationParams().eCursorType;
       pSH->SetCursor(nCursorType);
     }
   }
 }
 
 void CPWL_Wnd::CreateMsgControl() {
-  if (!m_sPrivateParam.pMsgControl)
-    m_sPrivateParam.pMsgControl = new CPWL_MsgControl(this);
+  if (!m_CreationParams.pMsgControl)
+    m_CreationParams.pMsgControl = new CPWL_MsgControl(this);
 }
 
 void CPWL_Wnd::DestroyMsgControl() {
@@ -641,7 +627,7 @@
 }
 
 CPWL_MsgControl* CPWL_Wnd::GetMsgControl() const {
-  return m_sPrivateParam.pMsgControl;
+  return m_CreationParams.pMsgControl;
 }
 
 bool CPWL_Wnd::IsCaptureMouse() const {
@@ -673,27 +659,27 @@
 }
 
 float CPWL_Wnd::GetFontSize() const {
-  return m_sPrivateParam.fFontSize;
+  return m_CreationParams.fFontSize;
 }
 
 void CPWL_Wnd::SetFontSize(float fFontSize) {
-  m_sPrivateParam.fFontSize = fFontSize;
+  m_CreationParams.fFontSize = fFontSize;
 }
 
 CFX_SystemHandler* CPWL_Wnd::GetSystemHandler() const {
-  return m_sPrivateParam.pSystemHandler;
+  return m_CreationParams.pSystemHandler;
 }
 
 IPWL_FocusHandler* CPWL_Wnd::GetFocusHandler() const {
-  return m_sPrivateParam.pFocusHandler;
+  return m_CreationParams.pFocusHandler;
 }
 
 IPWL_Provider* CPWL_Wnd::GetProvider() const {
-  return m_sPrivateParam.pProvider.Get();
+  return m_CreationParams.pProvider.Get();
 }
 
 IPVT_FontMap* CPWL_Wnd::GetFontMap() const {
-  return m_sPrivateParam.pFontMap;
+  return m_CreationParams.pFontMap;
 }
 
 CFX_Color CPWL_Wnd::GetBorderLeftTopColor(BorderStyle nBorderStyle) const {
@@ -719,7 +705,7 @@
 }
 
 int32_t CPWL_Wnd::GetTransparency() {
-  return m_sPrivateParam.nTransparency;
+  return m_CreationParams.nTransparency;
 }
 
 void CPWL_Wnd::SetTransparency(int32_t nTransparency) {
@@ -727,7 +713,7 @@
     if (pChild)
       pChild->SetTransparency(nTransparency);
   }
-  m_sPrivateParam.nTransparency = nTransparency;
+  m_CreationParams.nTransparency = nTransparency;
 }
 
 CFX_Matrix CPWL_Wnd::GetWindowMatrix() const {
@@ -778,11 +764,11 @@
 }
 
 CFX_Matrix CPWL_Wnd::GetChildMatrix() const {
-  return HasFlag(PWS_CHILD) ? m_sPrivateParam.mtChild : CFX_Matrix();
+  return HasFlag(PWS_CHILD) ? m_CreationParams.mtChild : CFX_Matrix();
 }
 
 void CPWL_Wnd::SetChildMatrix(const CFX_Matrix& mt) {
-  m_sPrivateParam.mtChild = mt;
+  m_CreationParams.mtChild = mt;
 }
 
 const CPWL_Wnd* CPWL_Wnd::GetFocused() const {
diff --git a/fpdfsdk/pwl/cpwl_wnd.h b/fpdfsdk/pwl/cpwl_wnd.h
index cd1c060..4074e93 100644
--- a/fpdfsdk/pwl/cpwl_wnd.h
+++ b/fpdfsdk/pwl/cpwl_wnd.h
@@ -118,58 +118,35 @@
   virtual void OnSetFocus(CPWL_Edit* pEdit) = 0;
 };
 
-struct PWL_CREATEPARAM {
- public:
-  PWL_CREATEPARAM();
-  PWL_CREATEPARAM(const PWL_CREATEPARAM& other);
-
-  void Reset() {
-    rcRectWnd.Reset();
-    pSystemHandler = nullptr;
-    pFontMap = nullptr;
-    pProvider.Reset();
-    pFocusHandler = nullptr;
-    dwFlags = 0;
-    sBackgroundColor.Reset();
-    pAttachedWidget.Reset();
-    nBorderStyle = BorderStyle::SOLID;
-    dwBorderWidth = 0;
-    sBorderColor.Reset();
-    sTextColor.Reset();
-    nTransparency = 0;
-    fFontSize = 0.0f;
-    sDash.Reset();
-    pAttachedData = nullptr;
-    pParentWnd = nullptr;
-    pMsgControl = nullptr;
-    eCursorType = 0;
-    mtChild.SetIdentity();
-  }
-
-  CFX_FloatRect rcRectWnd;                      // required
-  CFX_SystemHandler* pSystemHandler;            // required
-  IPVT_FontMap* pFontMap;                       // required
-  IPWL_Provider::ObservedPtr pProvider;         // required
-  IPWL_FocusHandler* pFocusHandler;             // optional
-  uint32_t dwFlags;                             // optional
-  CFX_Color sBackgroundColor;                   // optional
-  CPDFSDK_Widget::ObservedPtr pAttachedWidget;  // required
-  BorderStyle nBorderStyle;                     // optional
-  int32_t dwBorderWidth;                        // optional
-  CFX_Color sBorderColor;                       // optional
-  CFX_Color sTextColor;                         // optional
-  int32_t nTransparency;                        // optional
-  float fFontSize;                              // optional
-  CPWL_Dash sDash;                              // optional
-  void* pAttachedData;                          // optional
-  CPWL_Wnd* pParentWnd;                         // ignore
-  CPWL_MsgControl* pMsgControl;                 // ignore
-  int32_t eCursorType;                          // ignore
-  CFX_Matrix mtChild;                           // ignore
-};
-
 class CPWL_Wnd : public CPWL_TimerHandler, public CFX_Observable<CPWL_Wnd> {
  public:
+  struct CreateParams {
+   public:
+    CreateParams();
+    CreateParams(const CreateParams& other);
+
+    CFX_FloatRect rcRectWnd;                      // required
+    CFX_SystemHandler* pSystemHandler;            // required
+    IPVT_FontMap* pFontMap;                       // required
+    IPWL_Provider::ObservedPtr pProvider;         // required
+    IPWL_FocusHandler* pFocusHandler;             // optional
+    uint32_t dwFlags;                             // optional
+    CFX_Color sBackgroundColor;                   // optional
+    CPDFSDK_Widget::ObservedPtr pAttachedWidget;  // required
+    BorderStyle nBorderStyle;                     // optional
+    int32_t dwBorderWidth;                        // optional
+    CFX_Color sBorderColor;                       // optional
+    CFX_Color sTextColor;                         // optional
+    int32_t nTransparency;                        // optional
+    float fFontSize;                              // optional
+    CPWL_Dash sDash;                              // optional
+    void* pAttachedData;                          // optional
+    CPWL_Wnd* pParentWnd;                         // ignore
+    CPWL_MsgControl* pMsgControl;                 // ignore
+    int32_t eCursorType;                          // ignore
+    CFX_Matrix mtChild;                           // ignore
+  };
+
   CPWL_Wnd();
   ~CPWL_Wnd() override;
 
@@ -207,7 +184,7 @@
 
   void InvalidateFocusHandler(IPWL_FocusHandler* handler);
   void InvalidateProvider(IPWL_Provider* provider);
-  void Create(const PWL_CREATEPARAM& cp);
+  void Create(const CreateParams& cp);
   void Destroy();
   void Move(const CFX_FloatRect& rcNew, bool bReset, bool bRefresh);
 
@@ -274,13 +251,13 @@
   // CPWL_TimerHandler
   CFX_SystemHandler* GetSystemHandler() const override;
 
-  virtual void CreateChildWnd(const PWL_CREATEPARAM& cp);
+  virtual void CreateChildWnd(const CreateParams& cp);
   virtual void RePosChildWnd();
 
   virtual void DrawThisAppearance(CFX_RenderDevice* pDevice,
                                   const CFX_Matrix& mtUser2Device);
 
-  virtual void OnCreate(PWL_CREATEPARAM& cp);
+  virtual void OnCreate(CreateParams* pParamsToAdjust);
   virtual void OnCreated();
   virtual void OnDestroy();
 
@@ -288,10 +265,9 @@
   virtual void OnKillFocus();
 
   void SetNotifyFlag(bool bNotifying = true) { m_bNotifying = bNotifying; }
-
-  bool IsValid() const;
-  const PWL_CREATEPARAM& GetCreationParam() const;
   bool IsNotifying() const { return m_bNotifying; }
+  bool IsValid() const { return m_bCreated; }
+  const CreateParams& GetCreationParams() const { return m_CreationParams; }
 
   void InvalidateRectMove(const CFX_FloatRect& rcOld,
                           const CFX_FloatRect& rcNew);
@@ -322,8 +298,8 @@
   void AddChild(CPWL_Wnd* pWnd);
   void RemoveChild(CPWL_Wnd* pWnd);
 
-  void CreateScrollBar(const PWL_CREATEPARAM& cp);
-  void CreateVScrollBar(const PWL_CREATEPARAM& cp);
+  void CreateScrollBar(const CreateParams& cp);
+  void CreateVScrollBar(const CreateParams& cp);
 
   void AdjustStyle();
   void CreateMsgControl();
@@ -331,8 +307,8 @@
 
   CPWL_MsgControl* GetMsgControl() const;
 
+  CreateParams m_CreationParams;
   std::vector<CPWL_Wnd*> m_Children;
-  PWL_CREATEPARAM m_sPrivateParam;
   CFX_UnownedPtr<CPWL_ScrollBar> m_pVScrollBar;
   CFX_FloatRect m_rcWindow;
   CFX_FloatRect m_rcClip;