こんにちは。
今回はボタンへのビットマップの貼り付けについての質問です。
SDIでかつSPlitterで分割した画面です。
①と②にはコントロールを配置しています。
①が親(?)ウィンドウです。
①、と②にボタンをおきました。
②、についてはボタンにビットマップは表示されましたが
①については表示されません。
①、②の違いは①が分割前のもとのフォームビューで
②は分割で出来たフォームビューという点です。
-------------------------------
|
|
① |
|
|
|
-------------------------------
②
-------------------------------
□-------------------以下 ソース
フォームビューのクラスに、
CBitmapButton button1;
コンストラクタで初期化
if (!button1.LoadBitmaps(_T(Image1Up), _T(Image1Down), _T
(Image1Focus)))
{
AfxThrowResourceException();
}
OnShowWindow()のなかで、
VERIFY(button1.SubclassDlgItem(IDOK, this));
button1.SizeToContent();
ボタンの「オーナー描画」をチェック
□-------------------以上
( http://www2.odn.ne.jp/~akihiron/memo/vc/tips04.html とっても参考になりました)
のようにソースを書きました。
なぜ②だけ表示されて①は表示されていないのでしょうか?
それともこの書き方はそもそも間違っている?
少々長くなりましたが、どなたかお返事よろしくお願いします。
すみません、上記ソースに不足がありました。
button1.SizeToContent();の後に
Invalidate();
が抜けていました。
1のボタンに対して
SubclassDlgItem されているのでしょうか?
Bunさん、またも、お返事ありがとうございます。
>1のボタンに対してSubclassDlgItem されているのでしょうか?
ということですが
①のボタンは OnShowWindow()のなかで、
VERIFY(button1.SubclassDlgItem(ボタンのID, this));
としています。
これじゃだめなのかな?
参考URLのほかのページにボタンにビットマップを貼り付ける説明あって、
そこではたまに表示されないこともあるとありました。
その、たまになのかもしれませんが、解決するには???
横から失礼します。
> ①、②の違いは①が分割前のもとのフォームビューで
> ②は分割で出来たフォームビューという点です。
①はプロジェクト新規作成時に作ったビューという事でしょうか?
新規作成時に作ったフォームビューで分割するとCViewで作成した場合とでは生成されるコー
ドが随分違うらしいです。
以前、分割ビューの切り替えでトラブルが発生したときも、結局はそれが原因でした。
試しに、現在のプロジェクトとは別に、CViewの基本クラスとしたビューになるように(つま
りはデフォルトのまま)プロジェクトを新規作成してから、改めて①、②のフォームビューと追
加して分割ウィンドウを作ってみてください。
sara さん、お返事ありがとうございます。
>①はプロジェクト新規作成時に作ったビューという事でしょうか?
はい、そうです。
> 新規作成時に作ったフォームビューで分割するとCViewで作成した場合とでは生成されるコ
ードが随分違うらしいです。
そ、そうなんですか!!知らなかったです。
>試しに、現在のプロジェクトとは別に、CViewの基本クラスとしたビューになるように(つま
りはデフォルトのまま)プロジェクトを新規作成してから、改めて①、②のフォームビューと追
加して分割ウィンドウを作ってみてください。
CFormViewでないとコントロールが置けないと思ったんですが、そうですね、デフォルトは
CViewでも分割でCFormViewをつくればいいのか。
ということは、②はうまくいっているから①もうまくいくかも?
ありごとうございます。
早速ためしてみます。