いつもお世話になっています。GGです。
自作したツールバー があります、
その中に一時使っていない項目があります、
その項目を無効化したいのですが、(淡色表示)
どうしたらいいでしょうか。
よろしくお願いします。
環境:.Net(2002) MFC使用、Win2000
質問前に過去ログ検索か、Web検索してね。
ToolBarの各ボタンの無効化について
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200307/03070084.txt
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' に変換できません。
ヘルプを見ても解決できません。
よろしくお願いします。
CToolBarCtrl& bar = m_wndToolBar.GetToolBarCtrl();
これでダメ?
επιστημη さん、
ご返事ありがとう。
>CToolBarCtrl& bar = m_wndToolBar.GetToolBarCtrl();
コンバイルを通ったのですが、
bar =0X000000
です。
よろしくお願いします。
どのタイミングで呼び出していますか?
ツールバーがCreateされた後でないと状態を変えることはできませんよ?
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 );
}
に置くと淡色になったのですが、マウスを動くと、ツールバーが再描画にしています。
正解はどこにおけばいいでしょうか。
よろしくお願いします。
通常はこんな感じに書くと思いますが。
【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);
}
ひろさん、
ご返事ありがとう。
>通常はこんな感じに書くと思いますが。
なるほど、うまくできました。
ほんとにありがとうございました。
Blueさん、επιστημη さん、ありがとうございました。