::AfxMessageBox()について

[戻る]
H.H 2008/02/07(木) 14:42:25
VC++6.0 MFCです。

OKボタンと、CANCELボタンのあるメッセージボックスを作りたいのですが、
下記方法でやると[OK]ボタンと、[キャンセル]ボタンのメッセージボックスが
作られてしまいます。

ボタンを[キャンセル]⇒[CANCEL]にするにはどうしたら良いのでしょうか?
よろしくお願いします。

::AfxMessageBox("TEST", MB_OKCANCEL|MB_ICONASTERISK);

通行人 2008/02/07(木) 15:07:28
SetWindowsHookExでフックするらしい。

http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200402/04020074.txt
http://q.hatena.ne.jp/1180966114

面倒臭そう・・・・・。

bun 2008/02/07(木) 15:12:14
[OK], [キャンセル]が日本語Windowsの標準なので、
標準をねじ曲げてしまうことは、私個人的には好きではないので、
やめた方が良いと思います。

ただ、どうしてもという強い要望なら、
  CWinApp::DoMessageBox()
をオーバーライドしてください。

ただ、一筋縄ではいかないと思われます。

たいちう 2008/02/07(木) 15:23:54
> 面倒臭そう・・・・・。

ハテナの回答は良くまとまっているので、このまま使えますね。
でも、下手にMsgBoxHookProcを変更するよりは、
自作ダイアログでメッセージボックスを出した方が良いでしょうね。

通行人 2008/02/07(木) 15:38:25
 > 自作ダイアログでメッセージボックスを出した方が良いでしょうね。

激しく同感です。

PATIO 2008/02/07(木) 15:57:54
もしくは、仕様書(画面設計書)の方を書き換えるとか。(^^;
その仕様にリーズナブルな理由が無いのであれば、いらぬ工数を使うより
仕様の方を変えたほうが建設的だと思ったり。

H.H 2008/02/07(木) 16:25:14
[[解決]]
通行人さんありがとうございます。
教えて頂いたリンク先とても解りやすかったです。

ただ、みなさんがおっしゃる通り、
自作ダイアログメッセージを作るか、
仕様の方を変える方が賢明な気がします。

ありがとうございました。

maru 2008/02/07(木) 16:58:00
国際化対応等を考えると、
> 自作ダイアログメッセージを作る
はやめておいた方が良いでしょう。
やっぱり仕様を変える方が幸せ。
# というか、なぜ、標準のまま使わないの?

ITO 2008/02/08(金) 20:39:13
># というか、なぜ、標準のまま使わないの?
日本語のWindowsXPですべてを英語仕様にしたいとか?
ソフトの実行を英語版のWINDOWSにして、リソースの設定を
すべて日本語にすればうまくいくと思うんだけど
うちで外国に納めているソフトはみなそうしています。

ITO 2008/02/09(土) 15:16:26
修正です

>ソフトの実行を英語版のWINDOWSにして、リソースの設定を
>すべて日本語にすればうまくいくと思うんだけど
日本語→英語です。

maru 2008/02/12(火) 15:41:40
> 日本語のWindowsXPですべてを英語仕様にしたいとか?
確かにそれもありかも。

でも、そうすると、ファイルオープンダイアログとか、プリンタ設定とかも
全部英語にしないと調和が取れないような気がします。

うちではさっぱりとあきらめて、メッセージボックスやファイルオープンダ
イアログ等はOSが抱いているリソースにしています。

# ユーザには、「それらも換えたかったらOSから換えて」って言ってます。

ITO 2008/02/12(火) 19:30:29
># ユーザには、「それらも換えたかったらOSから換えて」って言ってます。
#とユーザに頼んだら、OS買うから入れ替えてと頼まれてしまいました。
#それから輸出版のソフトはインストール作業の前にOSの再インストールです。

古いスレッドには追加発言できません。