CTabCtrl上のDialog上’のエレメントがウィンドウの立ち上がり時表示されない

[戻る]
purev [E-Mail] 2004/01/26(月) 18:13:15
CTabCtrl上のDialog上’のエレメントがウィンドウの立ち上がり時表示されない

BOOL CTab_testDlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    // Add "About..." menu item to system menu.

    // IDM_ABOUTBOX must be in the system command range.
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        CString strAboutMenu;
        strAboutMenu.LoadString(IDS_ABOUTBOX);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, 
strAboutMenu);
        }
    }

    // Set the icon for this dialog.  The framework does this 
automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE);            // Set big icon
    SetIcon(m_hIcon, FALSE);        // Set small icon
    
    // TODO: Add extra initialization here
    m_tab=(CTabCtrl*)GetDlgItem(IDC_TAB1);
    TC_ITEM tc[2];
    tc[0].mask = TCIF_TEXT;
    tc[0].pszText = "Measurement Control";
    tc[1].mask = TCIF_TEXT;
    tc[1].pszText = "Replay Control";
    for(int i=0; i<2; i++){
        m_tab->InsertItem(i, &tc[i]);
    }
tab1.Create(IDD_DIALOG1,this);
    tab2.Create(IDD_DIALOG2,this);
    CRect rect;
    m_tab->GetWindowRect(&rect);     
    ScreenToClient(&rect);          // クライアント座標系に修正
    m_tab->AdjustRect(FALSE, &rect); 
    tab1.MoveWindow(&rect);
    tab2.MoveWindow(&rect);
    m_nCurPage = 0;
    tab2.ShowWindow(SW_SHOW);
    //tab2.UpdateData(TRUE);
    return TRUE;  
}

purev [E-Mail] 2004/01/26(月) 18:26:34
アプリケーションを立ち上げるとShowWindow(SW_SHOW)で指定したDialog(tab2)上のエレ
メント(CListCtrl,CButton)等が表示されないじょうたいです。タブを一旦切り替えて
もとに戻すと問題なく表示されるというじょうたいです。
問題の原因を教えていただきたいのですがよろしくお願いします。
プロジェクトのソースみたい場合はメールに添付して送りますので、連絡ください。

iijima 2004/01/26(月) 19:50:03
推測ですが、

    m_nCurPage = 0;

としていますので、タブが切り替わったときのメッセージ(TCN_SELCHANGE)ハンドラ
OnSelChangeXxxの定義によっては、OnInitDlg終了時にはtab1を表示しようとしているか
も知れません。

    m_nCurPage = 1;

としたらどうなりますか?

iijima 2004/01/26(月) 19:55:34
念のため、OnSelChange***の定義を見せてください。

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