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

解決


AxAxA  2009-05-25 03:30:17  No: 70195

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-25 07:31:13  No: 70196

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

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


Blue  2009-05-25 20:50:01  No: 70197

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


AxAxA  2009-05-26 06:07:43  No: 70198

無事できました!!!

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

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

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

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


Blue  2009-05-26 18:29:26  No: 70199

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


AxAxA  2009-05-27 07:02:44  No: 70200

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

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加