<!--  As an open source project with a dedicated but small maintainer team, it can sometimes take a long time for issues to be addressed so please be patient and we will get back to you as soon as we can.
-->

### Preflight Checklist
<!-- Please ensure you've completed the following steps by replacing [ ] with [x]-->

* [x] I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/master/CONTRIBUTING.md) for this project.
* [x] I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md) that this project adheres to.
* [x] I have searched the issue tracker for an issue that matches the one I want to file, **only found a [closed issue](https://github.com/electron/electron/issues/21159) that doesn't works**.

### Issue Details

* **Electron Version:**
  * 7.1.9
* **Operating System:**
  * Windows 10, 1809

### Expected Behavior
The `checkboxChecked` property of dialog boxes should works in the promise.

### Actual Behavior
It doens't work when the `checkboxChecked` is set to be false, it works when `checkboxChecked` is set to be true.
This problem is said to be solved, but it hasn't been...

### To Reproduce
@jrdiard gave a example in the old and closed 21159 issue,
with the fiddle code in main.js:
```
const { app, BrowserWindow, dialog } = require('electron')

let mainWindow = null

app.on('ready', () => {
  mainWindow = new BrowserWindow({ height: 600, width: 600 })

  var ret = dialog.showMessageBox(mainWindow, {
    type: "question", buttons: ["Yes", "No"],
    message: "Do you want to run the demonstration scenes?",
    cancelId: 1,
    checkboxLabel: "Save images for each scene", checkboxChecked: true, noLink: false
  });
  ret.then((val) => {
    console.log("Run Demo: " + val.response + " Save scenes: " + val.checkboxChecked);
  });

})
```

shell/browser/ui/message_box_win.cc
std::vector<base::string16> utf16_buttons;
  for (const auto& button : settings.buttons)
    utf16_buttons.push_back(base::UTF8ToUTF16(button));
  const base::string16 title_16 = base::UTF8ToUTF16(settings.title);
  const base::string16 message_16 = base::UTF8ToUTF16(settings.message);
  const base::string16 detail_16 = base::UTF8ToUTF16(settings.detail);
  const base::string16 checkbox_label_16 =
      base::UTF8ToUTF16(settings.checkbox_label);
  return ShowTaskDialogUTF16(
      settings.parent_window, settings.type, utf16_buttons, settings.default_id,
      settings.cancel_id, settings.no_link, title_16, message_16, detail_16,
      checkbox_label_16, settings.checkbox_checked, settings.icon);
}
void RunMessageBoxInNewThread(base::Thread* thread,
                              const MessageBoxSettings& settings,
                              MessageBoxCallback callback) {
  DialogResult result = ShowTaskDialogUTF8(settings);
  base::PostTask(
      FROM_HERE, {content::BrowserThread::UI},
      base::BindOnce(std::move(callback), result.first, result.second));
  content::BrowserThread::DeleteSoon(content::BrowserThread::UI, FROM_HERE,
                                     thread);
}
}  
int ShowMessageBoxSync(const MessageBoxSettings& settings) {