コマンドボタンに名前をつける


モナー  2004-08-12 11:59:08  No: 85108  IP: [192.*.*.*]

メッセージボックスを表示させる際に
OKボタンのみ、OKボタンとキャンセルボタン、無視ボタン、
はい、いいえボタンなど表示させるパターンを選択できますが、
ボタンに指定したテキストを表示させることは可能でしょうか?

「あとで処理する」という名前のボタンや、
「〇〇は保存しない」など、関数内でメッセージボックス表示時に
ボタンのテキストを設定してみたいと思ってます。

ヘルプでみたところ無理そうなのですが、やはり無理でしょうか?

編集 削除
りっとっと  2004-08-12 12:18:36  No: 85109  IP: [192.*.*.*]

まあ、一応できます。
こうやればできるかなという手順を書くと
1.メッセージボックスのウィンドウハンドルを取得。
2.取得したウィンドウハンドルを元にEnumChildWindowsで子の
    ウィンドウハンドルを列挙。
3.列挙したウィンドウハンドルを元にそれぞれのウィンドウテキストを
    取得し、コマンドボタンを特定。
4.特定したウィンドウハンドルにSetWindowTextでキャプションを変更
5.必要に応じてSetWindowPosなどでメッセージボックスのウィンドウの
    サイズ及びコマンドボタンのウィンドウサイズを変更
という感じとなります。
しかし、はっきりいって自分でメッセージボックスに似たフォームを作成
してそれを表示するほうがはるかに簡単です。

編集 削除
かきもち  2004-08-12 14:07:59  No: 85110  IP: [192.*.*.*]

そういうサンプルがここにありますね。
http://vbnet.mvps.org/index.html?code/hooks/messageboxhook.htm

編集 削除