うならぼ

申し訳程度のアフィリエイトとか広告とか解析とかは/aboutを参照

シャットダウン中の保存確認でいいえを選択したら閉じてほしい話

保存せずにシャットダウン始めると「以下のアプリケーションがシャットダウンを妨げています」みたいな画面が出るじゃないですか。まあそれ保存しなくていいんだけど、強制終了するのもあれだし、とか思いながらシャットダウンをキャンセルするじゃないですか。

『保存しますか?』「いいえ」『……』

\答えたのにアプリが終了しない/

仕方ないので自分でウィンドウを閉じようとします(もしくは再度シャットダウン)。

『保存しますか?』

\さっき答えた/

そういうわけで

ウィンドウを手で閉じるとき同様に、キャンセル以外を選択したら終了してほしい。特に「いいえ」は二度手間になるので。

メモ帳に至っては「はい」を選べば終了してくれるようで、わざとなんだろうか?

ついでに自分でも書いてみた。

case WM_QUERYENDSESSION:
    ShutdownBlockReasonCreate(hWnd, _T("Block reason"));
    switch (MessageBox(hWnd, _T("Save?"), _T("test"), MB_YESNOCANCEL))
    {
    case IDYES:
        // 保存処理
        DestroyWindow(hWnd); // まあこれはどっちでもいい
        break;
    case IDNO:
        DestroyWindow(hWnd); // 本命
        break;
    case IDCANCEL:
        // この時だけ終了しない
        break;
    }
    ShutdownBlockReasonDestroy(hWnd);
    break;

ちなみにこの話を思い出したきっかけはこのツイートなんですが、

そのいじくるつくーるはどうなっているかというと、「保存せず閉じますよ? はい/いいえ」という二択で、

  • 「はい」なら保存せず閉じる
  • 「いいえ」なら保存も閉じもしない(キャンセル相当)

だったので、これはウィンドウ閉じた時と同じ挙動で違和感ないです。はい。

まあそもそもはい・いいえ・キャンセルがわかりにくいとか、TaskDialog使って何が起きるかの説明をとか、そんな気もする。

続きを書きました

unarist.hatenablog.com