ボタンが3Dにならない?

解決


AxAxA  2009-05-24 18:30:17  No: 70195  IP: [192.*.*.*]

VC++, Windows APIを使っています。
OSはWindows Vista(Home Premium)です。

VC++でダイアログのリソースを作成し、そのダイアログを表示するソフトを作っています。
リソースエディット画面ではボタンなどのコントロールがきちんと3Dっぽく表示されているのですが(参考画像左)、
コンパイルして実行すると、ボタンなどが全て2D(フラット?)っぽくなってしまいます。(参考画像右)


↓のURLに参考画像をうpしておきました。
http://upload.jpn.ph/upload/img/u40753.bmp


他の(自作ではない)ソフトを実行すると、3Dなボタンがきちんと表示されるので、Windowsの視覚スタイルの問題などでは無いと思います。
原因が分かる方、教えて下さい><

編集 削除
AxAxA  2009-05-24 22:31:13  No: 70196  IP: [192.*.*.*]

画像がリンク切れ?になっていたので友達のブログの鯖借りてうpし直しました^^;

http://www.ryushiblog.com/button.bmp

編集 削除
Blue  2009-05-25 11:50:01  No: 70197  IP: [192.*.*.*]

Visual C++ 2005以降でマルチバイト文字セットを使うになっていませんか?
でしたら
http://social.msdn.microsoft.com/Forums/ja-JP/vcgeneralja/thread/57809419-194b-4560-afea-cc7b67454ff5
を参考にしてみてください。

編集 削除
AxAxA  2009-05-25 21:07:43  No: 70198  IP: [192.*.*.*]

無事できました!!!

Windows Vistaでも、この問題が発生するようですね。
Blueさんが教えて下さった方法で3Dなコントロールを作成することができました。
本当にありがとうございました。

表題の件は無事解決したのですが、ちょっと疑問に思ったことがあったので、もう一つだけ質問させて頂けませんでしょうか?

確かに、マルチバイト文字セットを使用して、違う環境で文字化けが起こらないように『TEXT("")』で文字列を囲ってプログラミングしているのですが、
プロジェクト自体の文字セットをユニコードにして開発した方が良いのでしょうか?

日本語等のマルチバイト文字でも、1文字としてカウントされる、
外国語が使える(?)、
等の利点があるようですが・・・

編集 削除
Blue  2009-05-26 09:29:26  No: 70199  IP: [192.*.*.*]

文字セットにおける移植性の利点
http://msdn.microsoft.com/ja-jp/library/zhkk3525.aspx
より
Windows2000以降のOSでの運用を考えているのであれば、Unicodeで開発したほうが良いでしょう。
ただ、TCHARを使ったコーディングをしておけば、オプション一つでUnicodeにもマルチバイトにも
容易に変更が効くのでそうすべきでしょう。
(デフォルトはUnicodeだが、常にTCHAR、TEXTマクロ等を使う)

編集 削除
AxAxA  2009-05-26 22:02:44  No: 70200  IP: [192.*.*.*]

回答ありがとうございます!

デフォルトでUnicodeを使って、Win2000などの別の環境にはTEXTマクロを使って対応すればいいということですね^^

別のことまで教えていただいて本当に感謝してます><
また機会があれば、どうぞよろしくお願いします。

編集 削除