* **Electron Version** (output of `node_modules/.bin/electron --version`):
  * 4.0.4 (multiple versions have been tested, going back to 3.0.0)
* **Operating System** (Platform and Version):
  * Windows 10
* **Last known working Electron version** (if applicable):
  * n/a

### Expected Behavior
If a window is minimised then restored, it retains its original size.

### Actual behavior
The BrowserWindow is set to a precise width and height, if it is minimised using the button in the top right then restored, it will resize its height. This new height will be the original height - 20 (approximately the height of the menu bar). If the height is set again using window.setSize, then it will again be 20 off, as if the window height now takes into account the menu when it didn't before.

This can occur multiple times. Repeatedly minimising and restoring the window will reduce the window by the menu height each time.

This resize triggers the "resize" event, but not "will-resize", so it can't be blocked with e.preventDefault.

No other code interacts with the window height. 

I've "fixed" this issue with the following hack:
`
mainWindow.on('restore', function () {
  if (process.platform === 'win32') {
    mainWindow.setSize(windowWidth, windowHeight + 20);
  }
});`

### To Reproduce
Create a BrowserWindow with a fixed height and log the height before and after minimising/restoring on a Windows machine.

### Additional Information
This issue has cropped up multiple times on different projects, on any Windows machine. I've tested it on other platforms and it doesn't happen.

shell/browser/native_window_views_win.cc
WPARAM w_param,
                                                  LPARAM l_param) {
  if (n_code < 0) {
    return CallNextHookEx(NULL, n_code, w_param, l_param);
  }
  
  
  
  if (w_param == WM_MOUSEMOVE) {
    for (auto* window : forwarding_windows_) {
      
      
      
      
      RECT client_rect;
      GetClientRect(window->legacy_window_, &client_rect);
      POINT p = reinterpret_cast<MSLLHOOKSTRUCT*>(l_param)->pt;
      ScreenToClient(window->legacy_window_, &p);
      if (PtInRect(&client_rect, p)) {
        WPARAM w = 0;  
        LPARAM l = MAKELPARAM(p.x, p.y);
        PostMessage(window->legacy_window_, WM_MOUSEMOVE, w, l);
      }
    }
  }
  return CallNextHookEx(NULL, n_code, w_param, l_param);
}
}