|
■No65156 (一期一会 さん) に返信
■No65156 (一期一会 さん) に返信
提示されているサイトのサンプルがMFC不使用なので、Win32 スマートデバイス プロジェクトであると仮定して説明します。
■"閉じる"ボタン([×]ボタン)の非表示 CreateWindow APIの dwStyle パラメーターに WS_NONAVDONEBUTTON を加えるだけです。 WS_NONAVDONEBUTTONと競合してしまうスタイルもあるので詳細はMSDNで確認してください。
hWnd = CreateWindow(0, szWindowClass, szTitle, WS_VISIBLE | WS_NONAVDONEBUTTON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
■"閉じる"ボタン押下時の終了処理 ん?[×]ボタンは非表示にするのでは? それとWindows Mobileの仕様では、[×]ボタンでアプリは終了せず非表示になるだけです。 Windowsでいえば最小化ボタンの動作に近いものです。 それを理解していますか?
とはいえ、方法はちゃんとあります。 SHDoneButton APIを SHDB_SHOW で呼び出します。
SHDoneButton(hWnd, SHDB_SHOW);
これで、タイトルバー右に[×]ボタンの代わりに[ok]ボタンが表示され、押下時にWM_COMMANDメッセージのIDOKが飛んでくるようになります。 [ok]ボタンで終了するのはOSの仕様にも合致していると思われるのでこの方法をお勧めします。
また、どうしても[×]ボタン表示のまま制御したいのであれば、SHDoneButton APIを SHDB_SHOWCANCEL で呼び出します。
SHDoneButton(hWnd, SHDB_SHOW);
これで、タイトルバー右は[×]ボタン表示で、押下時にWM_COMMANDメッセージのIDCANCELが飛んでくるようになります。 恐らくここで終了させたいということなのでしょうが、標準の挙動とは異なることを十分考慮してください。
|