+    if (pParent)
+        pParent->AddChild(this);
+
+    wxSystemSettings                vSettings;
+
+    SetBackgroundColour(vSettings.GetSystemColour(wxSYS_COLOUR_WINDOW));
+    SetForegroundColour(pParent->GetForegroundColour());
+
+    m_windowId = (vId == -1) ? (int)NewControlId() : vId;
+
+    int                             nX      = rPos.x;
+    int                             nY      = rPos.y;
+    int                             nWidth  = rSize.x;
+    int                             nHeight = rSize.y;
+
+    m_windowStyle = lStyle;
+
+    lStyle = WS_VISIBLE;
+
+    if (m_windowStyle & wxCLIP_SIBLINGS )
+        lStyle |= WS_CLIPSIBLINGS;
+    if (m_windowStyle & wxLB_MULTIPLE)
+        lStyle |= LS_MULTIPLESEL;
+    else if (m_windowStyle & wxLB_EXTENDED)
+        lStyle |= LS_EXTENDEDSEL;
+    if (m_windowStyle & wxLB_HSCROLL)
+        lStyle |= LS_HORZSCROLL;
+    if (m_windowStyle & wxLB_OWNERDRAW)
+        lStyle |= LS_OWNERDRAW;
+
+    //
+    // Without this style, you get unexpected heights, so e.g. constraint layout
+    // doesn't work properly
+    //
+    lStyle |= LS_NOADJUSTPOS;
+
+    m_hWnd = (WXHWND)::WinCreateWindow( GetWinHwnd(pParent) // Parent
+                                       ,WC_LISTBOX          // Default Listbox class
+                                       ,"LISTBOX"           // Control's name
+                                       ,lStyle              // Initial Style
+                                       ,0, 0, 0, 0          // Position and size
+                                       ,GetWinHwnd(pParent) // Owner
+                                       ,HWND_TOP            // Z-Order
+                                       ,(HMENU)m_windowId   // Id
+                                       ,NULL                // Control Data
+                                       ,NULL                // Presentation Parameters
+                                      );
+    if (m_hWnd == 0)
+    {
+        return FALSE;
+    }