C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: C++でWindowsMobileアプリ開発について


(過去ログ 110 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■65156 / inTopicNo.1)  C++でWindowsMobileアプリ開発について
  
□投稿者/ 一期一会 (1回)-(2013/02/08(Fri) 09:13:41)

分類:[C/C++] 

お世話になております。

下記のサイトで、WindowsMobile用の音声録音アプリを作成しているのですが、
録音自体は問題なくできているのですが、画面上部にある"閉じる"ボタンの制御ができません
知りたい事としては、"閉じる"ボタンの非表示、"閉じる"ボタン押下時の終了処理

http://codezine.jp/article/detail/1808
引用返信 編集キー/
■65166 / inTopicNo.2)  Re[1]: C++でWindowsMobileアプリ開発について
□投稿者/ キム (4回)-(2013/02/08(Fri) 15:44:06)
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が飛んでくるようになります。
恐らくここで終了させたいということなのでしょうが、標準の挙動とは異なることを十分考慮してください。
引用返信 編集キー/
■65168 / inTopicNo.3)  Re[2]: C++でWindowsMobileアプリ開発について
□投稿者/ キム (5回)-(2013/02/08(Fri) 16:23:33)
申し訳ないCreateWindowのサンプルが間違えてた^^;
正しくはこちら。

    hWnd = CreateWindow(szWindowClass, szTitle,
        WS_VISIBLE | WS_NONAVDONEBUTTON,
        CW_USEDEFAULT, CW_USEDEFAULT,
        CW_USEDEFAULT, CW_USEDEFAULT,
        NULL, NULL, hInstance, NULL);

さらに、SHDoneButtonを SHDB_SHOWCANCEL で呼び出すサンプルも間違えてた^^;;;

    SHDoneButton(hWnd, SHDB_SHOWCANCEL);

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -