ボタンにビットマップが表示される時とされないとき

[戻る]
hako 2002/02/19(火) 16:00:00
こんにちは。
今回はボタンへのビットマップの貼り付けについての質問です。

SDIでかつSPlitterで分割した画面です。

@とAにはコントロールを配置しています。
@が親(?)ウィンドウです。
@、とAにボタンをおきました。

A、についてはボタンにビットマップは表示されましたが
@については表示されません。
@、Aの違いは@が分割前のもとのフォームビューで
Aは分割で出来たフォームビューという点です。


-------------------------------
     | 
     |
  @  |   
     |
     |
     |
-------------------------------
        A
-------------------------------


□-------------------以下  ソース
フォームビューのクラスに、
    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 とっても参考になりました)

のようにソースを書きました。

なぜAだけ表示されて@は表示されていないのでしょうか?
それともこの書き方はそもそも間違っている?

少々長くなりましたが、どなたかお返事よろしくお願いします。

hako 2002/02/19(火) 16:02:59
すみません、上記ソースに不足がありました。
     button1.SizeToContent();の後に
    Invalidate();
が抜けていました。

Bun 2002/02/20(水) 11:08:33
1のボタンに対して

SubclassDlgItem されているのでしょうか?

hako 2002/02/20(水) 14:42:31
Bunさん、またも、お返事ありがとうございます。

>1のボタンに対してSubclassDlgItem されているのでしょうか?

ということですが
@のボタンは OnShowWindow()のなかで、
    VERIFY(button1.SubclassDlgItem(ボタンのID, this));
としています。
これじゃだめなのかな?

参考URLのほかのページにボタンにビットマップを貼り付ける説明あって、
そこでは"たまに表示されないこともある"とありました。
その、たまになのかもしれませんが、解決するには???

sara 2002/02/20(水) 15:07:30
横から失礼します。
> @、Aの違いは@が分割前のもとのフォームビューで
> Aは分割で出来たフォームビューという点です。

 @はプロジェクト新規作成時に作ったビューという事でしょうか?
 新規作成時に作ったフォームビューで分割するとCViewで作成した場合とでは生成されるコー
ドが随分違うらしいです。
 以前、分割ビューの切り替えでトラブルが発生したときも、結局はそれが原因でした。

 試しに、現在のプロジェクトとは別に、CViewの基本クラスとしたビューになるように(つま
りはデフォルトのまま)プロジェクトを新規作成してから、改めて@、Aのフォームビューと追
加して分割ウィンドウを作ってみてください。

hako 2002/02/21(木) 12:45:29
[[解決]]
sara さん、お返事ありがとうございます。

>@はプロジェクト新規作成時に作ったビューという事でしょうか?

はい、そうです。

> 新規作成時に作ったフォームビューで分割するとCViewで作成した場合とでは生成されるコ
ードが随分違うらしいです。

そ、そうなんですか!!知らなかったです。

>試しに、現在のプロジェクトとは別に、CViewの基本クラスとしたビューになるように(つま
りはデフォルトのまま)プロジェクトを新規作成してから、改めて@、Aのフォームビューと追
加して分割ウィンドウを作ってみてください。

CFormViewでないとコントロールが置けないと思ったんですが、そうですね、デフォルトは
CViewでも分割でCFormViewをつくればいいのか。
ということは、Aはうまくいっているから@もうまくいくかも?

ありごとうございます。
早速ためしてみます。

古いスレッドには追加発言できません。