VC++, Windows APIを使っています。
OSはWindows Vista(Home Premium)です。
VC++でダイアログのリソースを作成し、そのダイアログを表示するソフトを作っています。
リソースエディット画面ではボタンなどのコントロールがきちんと3Dっぽく表示されているのですが(参考画像左)、
コンパイルして実行すると、ボタンなどが全て2D(フラット?)っぽくなってしまいます。(参考画像右)
↓のURLに参考画像をうpしておきました。
http://upload.jpn.ph/upload/img/u40753.bmp
他の(自作ではない)ソフトを実行すると、3Dなボタンがきちんと表示されるので、Windowsの視覚スタイルの問題などでは無いと思います。
原因が分かる方、教えて下さい><
画像がリンク切れ?になっていたので友達のブログの鯖借りてうpし直しました^^;
http://www.ryushiblog.com/button.bmp
Visual C++ 2005以降でマルチバイト文字セットを使うになっていませんか?
でしたら
http://social.msdn.microsoft.com/Forums/ja-JP/vcgeneralja/thread/57809419-194b-4560-afea-cc7b67454ff5
を参考にしてみてください。
無事できました!!!
Windows Vistaでも、この問題が発生するようですね。
Blueさんが教えて下さった方法で3Dなコントロールを作成することができました。
本当にありがとうございました。
表題の件は無事解決したのですが、ちょっと疑問に思ったことがあったので、もう一つだけ質問させて頂けませんでしょうか?
確かに、マルチバイト文字セットを使用して、違う環境で文字化けが起こらないように『TEXT("")』で文字列を囲ってプログラミングしているのですが、
プロジェクト自体の文字セットをユニコードにして開発した方が良いのでしょうか?
日本語等のマルチバイト文字でも、1文字としてカウントされる、
外国語が使える(?)、
等の利点があるようですが・・・
文字セットにおける移植性の利点
http://msdn.microsoft.com/ja-jp/library/zhkk3525.aspx
より
Windows2000以降のOSでの運用を考えているのであれば、Unicodeで開発したほうが良いでしょう。
ただ、TCHARを使ったコーディングをしておけば、オプション一つでUnicodeにもマルチバイトにも
容易に変更が効くのでそうすべきでしょう。
(デフォルトはUnicodeだが、常にTCHAR、TEXTマクロ等を使う)
回答ありがとうございます!
デフォルトでUnicodeを使って、Win2000などの別の環境にはTEXTマクロを使って対応すればいいということですね^^
別のことまで教えていただいて本当に感謝してます><
また機会があれば、どうぞよろしくお願いします。
ツイート | ![]() |