ビットマップボタンについて – プログラミング – Home

ビットマップボタンについて
 
通知
すべてクリア

[解決済] ビットマップボタンについて


goo
 goo
(@goo)
ゲスト
結合: 24年前
投稿: 10
Topic starter  

VC++6.0 MFC Windows2000でアプリケーションを作成しています。
ボタンにビットマップを貼り付けて表示しているのですが、
ModifyStyleでボタンを無効にしたときに、ビットマップが灰色になって消えてしまいます。
無効用のビットマップを作成して、切り替えるという方法しか思い浮かばないのですが、
他にいい方法をご存じの方はいますでしょうか?


引用未解決
トピックタグ
sugar
 sugar
(@sugar)
ゲスト
結合: 25年前
投稿: 448
 

ここで言うビットマップボタンとは、
CBitmapButtonですか?
CButtonで、オーナー描画でビットマップを表示してるんですか?


返信引用
goo
 goo
(@goo)
ゲスト
結合: 24年前
投稿: 10
Topic starter  

CButtonでオーナー描画しています。


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 25年前
投稿: 448
 

「ビットマップが灰色になって消えてしまいます」という表現が微妙ですね。
「ビットマップがまるっきり表示されない」と読み替えて差し支えないでしょうか。

ボタンがDISABLEになった時、
DRAWITEMSTRUCT構造体のitemStateメンバにはODS_DISABLEDが
設定されていると思うのですが、
この時、ビットマップを描画するロジックに到達してますか?

オーナー描画の場合、DISABLEになったからといって、
ビットマップを自動的にエンボス加工してくれるわけではありません。
gooさんの仰る、DISABLE用のビットマップを別途準備する方法が
一番手っ取り早いと思います。

ビットマップの加工を動的に行いたい場合は、以下が参考になるのではないでしょうか。
これはビットマップがついたメニューのサンプルですが、
DISABLEになったメニューアイテムのビットマップを、動的にエンボス加工してます。

http://www.codeproject.com/menu/bcmenu.asp


返信引用
PATIO
(@patio)
Famed Member
結合: 5年前
投稿: 2660
 

蛇足になりますが、
オーナー描画モードというのは何から何までプログラマーがコードを書かないと
何もしてくれないモードです。
ですから、ボタンコントロールに考えられる全ての状況を想定して全ての状況に
対応する描画ロジックを組み込まなければ、普通に提供されているボタンと同じ
振る舞いをさせることは出来ません。
オーナー描画をしておられるのであれば、おわかりかと思いますが、
ボタンのエッジも自分で描画しなくてはいけませんし、押された時の描画も自分で
やらなくてはいけません。

DRAWITEMSTRUCT構造体のitemStateメンバの状況を見て、ボタンが置かれた状況に
応じて必要なロジックが組み込まれているかを一度確認するべきでしょう。


返信引用
goo
 goo
(@goo)
ゲスト
結合: 24年前
投稿: 10
Topic starter  

ありがとうございました。
やはり自ら表示するコードを書く必要があるみたいですね。
便利なDLLとかないかなぁ~。と感じてしまう方も多いのではないでしょうかね~。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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