ツールバー について – プログラミング – Home

通知
すべてクリア

[解決済] ツールバー について


GG
 GG
(@GG)
ゲスト
結合: 18年前
投稿: 185
Topic starter  

いつもお世話になっています。GGです。

自作したツールバー があります、
その中に一時使っていない項目があります、
その項目を無効化したいのですが、(淡色表示)
どうしたらいいでしょうか。

よろしくお願いします。

環境:.Net(2002) MFC使用、Win2000


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

質問前に過去ログ検索か、Web検索してね。

ToolBarの各ボタンの無効化について
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200307/03070084.txt


返信引用
GG
 GG
(@GG)
ゲスト
結合: 18年前
投稿: 185
Topic starter  

Blueさん、
ご返事ありがとう。

>ToolBarの各ボタンの無効化について
> http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200307/03070084.txt

MainFrm.cpp
CToolBarCtrl bar = m_wndToolBar.GetToolBarCtrl;
bar.EnableButton( ID_TOOL_POINT, FALSE );

エラーが出ます、
..\MainFrm.cpp(515): error C2440: '初期化中' : 'overloaded-function' か
ら 'CToolBarCtrl' に変換できません。

ヘルプを見ても解決できません。

よろしくお願いします。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

CToolBarCtrl& bar = m_wndToolBar.GetToolBarCtrl();

これでダメ?


返信引用
GG
 GG
(@GG)
ゲスト
結合: 18年前
投稿: 185
Topic starter  

επιστημη さん、
ご返事ありがとう。

>CToolBarCtrl& bar = m_wndToolBar.GetToolBarCtrl();

コンバイルを通ったのですが、
bar =0X000000
です。

よろしくお願いします。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

どのタイミングで呼び出していますか?
ツールバーがCreateされた後でないと状態を変えることはできませんよ?


返信引用
GG
 GG
(@GG)
ゲスト
結合: 18年前
投稿: 185
Topic starter  

Blueさん、
ご返事ありがとう。

>どのタイミングで呼び出していますか?
>ツールバーがCreateされた後でないと状態を変えることはできませんよ?

確認しました。
bar =有効になっています。

でも、
bar.EnableButton( ID_TOOL_POINT, FALSE );は
無効になっていません(淡色になっていません)
(クリックすると有効になっています。)
void CMainFrame::OnUpdateFrameTitle(BOOL bAddToTitle)
{
//項目淡色表示
CToolBarCtrl& bar = m_wndZyosiBar.GetToolBarCtrl();
bar.EnableButton( ID_TOOL_POINT, FALSE );

}

一時に淡色になったのですが、
(起動の途中であるメッセージボックス(自作)が出ると
その時に淡色になっています、メッセージボックスを閉じるとその淡色の項目
(ID_TOOL_POINT)は有効になっています(淡色ではない)、
そのメッセージボックスが出ない場合
淡色になっていません(起動後の状態))

試しに
BOOL CMainFrame::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
//項目淡色表示
CToolBarCtrl& bar = m_wndZyosiBar.GetToolBarCtrl();
bar.EnableButton( ID_TOOL_POINT, FALSE );

に置くと淡色になったのですが、マウスを動くと、ツールバーが再描画にしています。

正解はどこにおけばいいでしょうか。

よろしくお願いします。


返信引用
ひろ
 ひろ
(@ひろ)
ゲスト
結合: 24年前
投稿: 149
 

通常はこんな感じに書くと思いますが。

【MainFrm.h】

afx_msg void OnUpdateToolPoint(CCmdUI* pCmdUI);

【MainFrm.cpp】

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)

ON_UPDATE_COMMAND_UI(ID_TOOL_POINT, OnUpdateToolPoint)

END_MESSAGE_MAP()

void CMainFrame::OnUpdateToolPoint(CCmdUI* pCmdUI)
{
if (xxx) // 有効にしたい条件のとき
pCmdUI->Enable(TRUE);
else // 無効にしたい条件のとき
pCmdUI->Enable(FALSE);
}


返信引用
GG
 GG
(@GG)
ゲスト
結合: 18年前
投稿: 185
Topic starter  

ひろさん、
ご返事ありがとう。

>通常はこんな感じに書くと思いますが。

なるほど、うまくできました。

ほんとにありがとうございました。

Blueさん、επιστημη さん、ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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