VC++6.0 MFCです。
OKボタンと、CANCELボタンのあるメッセージボックスを作りたいのですが、
下記方法でやると[OK]ボタンと、[キャンセル]ボタンのメッセージボックスが
作られてしまいます。
ボタンを[キャンセル]⇒[CANCEL]にするにはどうしたら良いのでしょうか?
よろしくお願いします。
::AfxMessageBox(TEST, MB_OKCANCEL|MB_ICONASTERISK);
SetWindowsHookExでフックするらしい。
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200402/04020074.txt
http://q.hatena.ne.jp/1180966114
面倒臭そう・・・・・。
[OK], [キャンセル]が日本語Windowsの標準なので、
標準をねじ曲げてしまうことは、私個人的には好きではないので、
やめた方が良いと思います。
ただ、どうしてもという強い要望なら、
CWinApp::DoMessageBox()
をオーバーライドしてください。
ただ、一筋縄ではいかないと思われます。
> 面倒臭そう・・・・・。
ハテナの回答は良くまとまっているので、このまま使えますね。
でも、下手にMsgBoxHookProcを変更するよりは、
自作ダイアログでメッセージボックスを出した方が良いでしょうね。
> 自作ダイアログでメッセージボックスを出した方が良いでしょうね。
激しく同感です。
もしくは、仕様書(画面設計書)の方を書き換えるとか。(^^;
その仕様にリーズナブルな理由が無いのであれば、いらぬ工数を使うより
仕様の方を変えたほうが建設的だと思ったり。
通行人さんありがとうございます。
教えて頂いたリンク先とても解りやすかったです。
ただ、みなさんがおっしゃる通り、
自作ダイアログメッセージを作るか、
仕様の方を変える方が賢明な気がします。
ありがとうございました。
国際化対応等を考えると、
> 自作ダイアログメッセージを作る
はやめておいた方が良いでしょう。
やっぱり仕様を変える方が幸せ。
# というか、なぜ、標準のまま使わないの?
># というか、なぜ、標準のまま使わないの?
日本語のWindowsXPですべてを英語仕様にしたいとか?
ソフトの実行を英語版のWINDOWSにして、リソースの設定を
すべて日本語にすればうまくいくと思うんだけど
うちで外国に納めているソフトはみなそうしています。
修正です
>ソフトの実行を英語版のWINDOWSにして、リソースの設定を
>すべて日本語にすればうまくいくと思うんだけど
日本語→英語です。
> 日本語のWindowsXPですべてを英語仕様にしたいとか?
確かにそれもありかも。
でも、そうすると、ファイルオープンダイアログとか、プリンタ設定とかも
全部英語にしないと調和が取れないような気がします。
うちではさっぱりとあきらめて、メッセージボックスやファイルオープンダ
イアログ等はOSが抱いているリソースにしています。
# ユーザには、「それらも換えたかったらOSから換えて」って言ってます。
># ユーザには、「それらも換えたかったらOSから換えて」って言ってます。
#とユーザに頼んだら、OS買うから入れ替えてと頼まれてしまいました。
#それから輸出版のソフトはインストール作業の前にOSの再インストールです。