ツールバーの絵を変えるには?

[戻る]
TKH [E-Mail] 2003/02/28(金) 16:33:12
TKH申します。

表示中のツールバーのある1つのボタンの絵に、状態に応じて"AAA"や"BBB"のテキスト文字を
書き加えるにはどのようにしたら良いのでしょうか。

環境 : Win2K + VC6 + SP5

ご教授お願いします。

kai 2003/02/28(金) 20:32:31
MFCでよろしければ。。。

CToolBar::SetButtonText()を使います。

http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_TBtext.html

たまには、回答側に(^^)

TKH [E-Mail] 2003/03/01(土) 08:01:06
回答ありがとうございます。

説明不足でしたが、やりたいことは、ツールバーのボタンに貼り付けている
ビットマップを取得し、そのビットマップに変更を加えたいのです。

よろしくお願いします。

==
TKH

kai 2003/03/01(土) 08:53:25
試したこともないのですが、、、

あらかじめ文字を書き込んでおいたツールバーリソースを
作成しておいて、 CToolbar::LoadToolBar()したら
いけませんかね?

または2つのオブジェクトを切り替えてつかうとか。。。
(あらかじめ2つ、つくっておく)

ダメなら、ちょっと他に方法を思いつきません。

dairygoods 2003/03/01(土) 16:42:05
CToolBar::GetTooBarCtrl()でCToolBarCtrl()が得られます。

ボタンに書き込む文字列が固定で個数が決まっているなら、
あらかじめ必要なだけのボタンを用意しておき、
CToolBarCtrl::HideButton()で表示/非表示を切り替えればできそうです。

ボタンのビットマップに任意の文字列を書かねばならないなら、
CToolBarCtrl::GetImageList()でツールバーのイメージリストが
取得できますので、このイメージリストを適当に書き換えれば、
可能ではないでしょうか。

TKH [E-Mail] 2003/03/01(土) 22:27:35
回答ありがとうございます。

状態に応じて書き込む文字は、その時の状態によりきまり、
100種類ぐらいになってしまいます。

>ボタンのビットマップに任意の文字列を書かねばならないなら、
>CToolBarCtrl::GetImageList()でツールバーのイメージリストが
>取得できます

この方法で、少し検討してみます。

TKH [E-Mail] 2003/03/06(木) 13:43:55
[[解決]]
大変遅くなりましたが、解決しましたので報告だけしておきます。
有難うございます。

CToobar::LoadBitmap()のソース部分を参考に以下のとおり行いました。

まず、ツールバーのビットマップをリソース(IDB_BITMAP1)をあらかじめ用意しておきます。

LPCTSTR lpszResourceName = MAKEINTRESOURCE( IDB_BITMAP1);
HINSTANCE hInstImageWell = AfxFindResourceHandle(lpszResourceName, RT_BITMAP);
HRSRC hRsrcImageWell = ::FindResource(hInstImageWell,
                    lpszResourceName, RT_BITMAP);
HBITMAP hbmImageWell;
hbmImageWell = AfxLoadSysColorBitmap( hInstImageWell, hRsrcImageWell);
//
//hbmImageWellを編集する
//
mytoolbar.AddReplaceBitmap( hbmImageWell);

AfxFindResourceHandle()
AfxLoadSysColorBitmap() <--この関数は大変便利です。
AddReplaceBitmap()
などの非公開関数を仕様することになりましたが、システムのツールバーの背景色に色を合わせ
るなどの処理が出来ました。

AfxLoadSysColorBitmap()関数は便利です。
==
TKH

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