ボタンにビットマップが表示される時とされないとき – プログラミング – Home

ボタンにビットマップが表示される時とさ...
 
通知
すべてクリア

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


hako
 hako
(@hako)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

こんにちは。
今回はボタンへのビットマップの貼り付けについての質問です。

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  とっても参考になりました)

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

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

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


引用未解決
トピックタグ
hako
 hako
(@hako)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

すみません、上記ソースに不足がありました。
     button1.SizeToContent();の後に
Invalidate();
が抜けていました。


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

1のボタンに対して

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


返信引用
hako
 hako
(@hako)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

Bunさん、またも、お返事ありがとうございます。

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

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

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


返信引用
sara
 sara
(@sara)
ゲスト
結合: 23年前
投稿: 99
 

横から失礼します。
> ①、②の違いは①が分割前のもとのフォームビューで
> ②は分割で出来たフォームビューという点です。

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

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


返信引用
hako
 hako
(@hako)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

sara さん、お返事ありがとうございます。

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

はい、そうです。

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

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

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

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

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました