问题描述:
     我现在有一个TabControl控件,该控件有12个Tab页。所以,Tab显示需要2行。我的实现代码逻辑如下:
     CDialog m_pTabs[12];
    CDialog tabPage;
    for (int i=0; i < 12; i++) {
        m_pTabs[0] = &tabPage;
        tabControl.InsertItem(i, _T("test"));
    }
    tabPage.Create(IDD_TAB_DLG, &tabControl);
    CRect rc;
    tabControl.GetClientRect(rc);
    
     rc.top    += 40;
     rc.bottom += 40;    for (int i = 0; i < 12; i++) {
m_pTabs[i]->MoveWindow(&rc);
               m_pTabs[i]->ShowWindow(SW_HIDE);
}
     m_pTabs[0]->ShowWindow(SW_SHOW);现在的问题是:
1)如果我将TabControl的“Multiline”属性设置为“FALSE",则能正常显示;
2)如果我将TabControl的“Multiline”属性设置为“TRUE",则界面启动后,Tab区显示空白。哪位大侠遇到过这样的问题?请指教!谢谢!

解决方案 »

  1.   

    “TabControl的“Multiline”属性设置为“TRUE",则界面启动后”
    是 Tab 中 文字(头) 可以 2行, 不是 2行 Tab 。 
    一般 是 用 “+” 或者 ‘》’ 表示 后面 还有。
      

  2.   

    不好意思“是 Tab 中 文字(头) 可以 2行, 不是 2行 Tab 。”说错了。
    “Multiline”属性设置为“TRUE",后 是可以 显示 2 行 tab 。
    不过 它 自己 就可以 显示 2行,不需要:
        for (int i = 0; i < 12; i++) {
            m_pTabs[i]->MoveWindow(&rc);
                   m_pTabs[i]->ShowWindow(SW_HIDE);
        }
    吧我有个 6个 tab 的 dlg。
    把 dlg 宽 缩小后。 就 可以 有 2行 tab
    分别 为:
    tab1   tab2   tab3
    tab4   tab5   tab6.
    我 没有 移动 tab。
      

  3.   

    CRect rc;
    tabControl.GetClientRect(rc);
    tabControl.AdjustRect(FALSE, &rc);
    for (int i = 0; i < 12; i++) 
    {
      m_pTabs[i]->MoveWindow(&rc);
      m_pTabs[i]->ShowWindow(SW_HIDE);
    }
      

  4.   

    首先谢谢schlafenhamster和zgl7903 的帮助。
    TabControl可以制动显示多行 这个没问题, 只要将Multiline设置为True,则如果tab页多的话,会自动分两行显示。
    现在的问题是:我程序第一起来的时候,tab1里显示的是白板,但是,我按一下其他的tab也再回到这个tab也就不是白板了,能正常显示。这个问题让人很困惑!还请二位大侠再研究一下哈。问题解了我再散分哈^_^
      

  5.   

    “tab1里显示的是白板”
    tab1 里有什么 对话框 ?
    当前 激活的是不是 tab1 ?
      

  6.   

    对的,tab1里显示的是m_pTabs[0]这个Dialog,我设置的selectIndex  = 0 ;所以,程序逻辑没问题。但是,程序一起来的时候,这个Dialog不能正确显示。
      

  7.   

    “这个Dialog不能正确显示”在 对话框 的 init 断点看看。