<!--  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
electron::UnresponsiveSuppressor suppressor;
  DialogResult result = ShowTaskDialogUTF8(settings);
  return result.first;
}
void ShowMessageBox(const MessageBoxSettings& settings,
                    MessageBoxCallback callback) {
  auto thread =
      std::make_unique<base::Thread>(ELECTRON_PRODUCT_NAME "MessageBoxThread");
  thread->init_com_with_mta(false);
  if (!thread->Start()) {
    std::move(callback).Run(settings.cancel_id, settings.checkbox_checked);
    return;
  }
  base::Thread* unretained = thread.release();
  unretained->task_runner()->PostTask(
      FROM_HERE,
      base::BindOnce(&RunMessageBoxInNewThread, base::Unretained(unretained),
                     settings, std::move(callback)));
}
void ShowErrorBox(const base::string16& title, const base::string16& content) {
  electron::UnresponsiveSuppressor suppressor;
  ShowTaskDialogUTF16(nullptr, MessageBoxType::kError, {}, -1, 0, false,
                      L"Error", title, content, L"", false, gfx::ImageSkia());
}
}