MFC   VC++   Visual Studio   Visual Studio   プログラミング

ステータスバーにコントロールの説明を表示 その2

 前回の「ステータスバーにコントロールの説明を表示」とは別の方法です。
 前回は「CToolTipCtrl」から派生させてそこに処理を書きましたが、今回はステータスバーのあるクラス(ここではダイアログ)で処理します。

 まず、ヘッダ内(XXXDlg.h)で、
    afx_msg void OnTtnTooltipShow(NMHDR *pNMHDR, LRESULT *pResult);
    afx_msg void OnTtnTooltipPop(NMHDR *pNMHDR, LRESULT *pResult);
と宣言し、ソース内(XXXDlg.cpp)のメッセージマップに、
BEGIN_MESSAGE_MAP(CXXXDlg, CDialog)
    ON_NOTIFY(TTN_SHOW, 0, &CXXXDlg::OnTtnTooltipShow)    // コントロールIDは「0」にする。
    ON_NOTIFY(TTN_POP, 0, &CXXXDlg::OnTtnTooltipPop)
END_MESSAGE_MAP()
 と入力し、後は前回と同じようにリソースのString Tableに必要な文字列を入力し、各関数内で処理をさせます。
 ただし、今回はステータスバーと同じクラスなので、直接文字列をセットできます。
void CXXXDlg::OnTtnTooltipShow(NMHDR *pNMHDR, LRESULT *pResult)
{
    UINT nID = ::GetDlgCtrlID((HWND)pNMHDR->idFrom);    // ウインドウハンドルからコントロールIDを取得

    CString str;
    if(str.LoadString(nID))        // コントロールIDに対応する文字列をリソースから読み取る
        m_wndStatus.SetPaneText(0, str);        // ステータスバーの表示したい位置にテキストをセットする

     *pResult = 0;
}

void CXXXDlg::OnTtnTooltipPop(NMHDR *pNMHDR, LRESULT *pResult)
{
    m_wndStatus.SetPaneText(0, _T("レディ"));        // ここでは「レディ」に戻します。

    *pResult = 0;
}
 前回の方法に比べ今回の方法は、
 ツールチップコントロールに他の処理もさせる場合は前回の派生させる方法で良いかもしれませんが、この処理だけならステータスバーと同じクラスに処理を書く今回の方法が記述的には楽かもしれません。
ランキングへ     posted by 遠雷 | Comment(0) | MFC
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。