MFC
ダイアログの表示/非表示を起動直後からコントロールする


HomeProgramming TipsMFC Tips[MFC-001]

メンバ変数に表示/非表示のコントロール変数を追加します。
public でも構いません。もし、private 扱いとするならアクセスメンバ関数を用意してください。


    BOOL m_bVisible;


ダイアログのコンストラクタで最初の状態を設定します。


    m_bVisible = TRUE;     // 最初は表示する場合
    m_bVisible = FALSE;    // 最初は表示しない場合


WM_WINDOWPOSCHANGING にプログラムを追加します。


void CMyDlg::OnWindowPosChanging(WINDOWPOS* lpwndpos)
{
    CDialog::OnWindowPosChanging(lpwndpos);
    if (m_bVisible)
        lpwndpos->flags |= SWP_SHOWWINDOW;
    else
        lpwndpos->flags &= ~SWP_SHOWWINDOW;
}


これで、メンバ変数 m_bVisible に TRUE(表示)、FALSE(非表示)を設定した後、SetWindowsPos() や、ShowWindow() など、
WM_WINDOWPOSCHANGING が発生する関数を使えば、表示の ON/OFF を自在にコントロールできます。

例えば以下のように実装します。


void CMyDlg::ShowEnable(BOOL bEnable = TRUE)
{
    m_bVisible = bEnable;
    ShowWindow(bEnable ? SW_SHOWWINDOW : SW_HIDE):
}



 Copyright 2005 VALGUS. All Rights Reserved.