title: Create window without titlebar, with resizable border and without bogus 6px white stripe
body: <p>I want a window without title bar but with resizable frames and shadow.
  This can easily be achieved by removing WS_CAPTION and adding WS_THICKFRAME, however, since Windows 10, there's a 6px white non-client area.</p>
  
  <p>With the following code I create a window and paint all the client area with black, the window gets a left, right and bottom 6px transparent margins, however the top margin is white.</p>
  
  <pre><code>#ifndef UNICODE
  #define UNICODE
  #endif 
  
  #include &lt;windows.h&gt;
  
  LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  
  int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)
  {
      // Register the window class.
      const wchar_t CLASS_NAME[]  = L"Sample Window Class";
  
      WNDCLASS wc = { };
  
      wc.lpfnWndProc   = WindowProc;
      wc.hInstance     = hInstance;
      wc.lpszClassName = CLASS_NAME;
  
      RegisterClass(&amp;wc);
  
      // Create the window.
  
      HWND hwnd = CreateWindowEx(
          0,                              // Optional window styles.
          CLASS_NAME,                     // Window class
          L"",    // Window text
                  0,
          // Size and position
          CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
          NULL,       // Parent window    
          NULL,       // Menu
          hInstance,  // Instance handle
          NULL        // Additional application data
          );
  
      ShowWindow(hwnd, nCmdShow);
  
      LONG lStyle = GetWindowLong(hwnd, GWL_STYLE);
      lStyle |= WS_THICKFRAME;
      lStyle = lStyle &amp; ~WS_CAPTION;
      SetWindowLong(hwnd, GWL_STYLE, lStyle);
      SetWindowPos(hwnd, NULL, 0,0,0,0, SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER);
  
      // Run the message loop.
  
      MSG msg = { };
      while (GetMessage(&amp;msg, NULL, 0, 0))
      {
          TranslateMessage(&amp;msg);
          DispatchMessage(&amp;msg);
      }
  
      return 0;
  }
  
  LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  {
      switch (uMsg)
      {
      case WM_DESTROY:
          PostQuitMessage(0);
          return 0;
  
      case WM_PAINT:
          {
              PAINTSTRUCT ps;
              HDC hdc = BeginPaint(hwnd, &amp;ps);
  
  
              // Paint everything black
              FillRect(hdc, &amp;ps.rcPaint, (HBRUSH) (COLOR_WINDOWTEXT));
              EndPaint(hwnd, &amp;ps);
          }
          return 0;
  
      }
      return DefWindowProc(hwnd, uMsg, wParam, lParam);
  }
  </code></pre>
  
  <p>Renders:
  <a href="https://i.stack.imgur.com/ncGYJ.png" rel="noreferrer"><img src="https://i.stack.imgur.com/ncGYJ.png" alt="image showing the problem"></a></p>
  
  <p>How can I remove the white stripe ?
  I also found this related Qt bug report <a href="https://bugreports.qt.io/browse/QTBUG-47543" rel="noreferrer">QTBUG-47543</a> which was closed as not being a Qt problem, because it can be reproduced with win32 api.</p>