比如有一个Tab控件,其中有3个标签,在一定情况下,不能让用户点击其他标签,也就是要把另2个标签变灰,codeproject中也找到了一个例子,不过是用WTL作的,看不懂,麻烦哪为大哥有这方面的例子或思路的话帮以下,急用.如果谁有代码的话可以发到我. 定倾分向送.

解决方案 »

  1.   

    额,为什么非要变灰啊?我是在程序中始终由一个变量来记录当前TAB显示的页。
    然后如果你在切换的时候,判断一下是否满足需要切换的条件,如果不满足的话,就不切换就好了呗。
    把m_ctlTab.SetCurSel()给设置成点击以前的页面就好了。起码我是这样实现的。
      

  2.   

    在你的Tab Selchange函数中:
    if(需要一直显示dlg1)
    {
        m_dlg1.ShowWindow(SW_SHOW); //要显示的标签页
        m_dlg2.ShowWindow(SW_HIDE); //隐藏其他标签页
        m_dlg3.ShowWindow(SW_HIDE);
       ...
    }
      

  3.   

    或者满足条件的时候删除掉其他的标签
    m_ctrltab.DeleteItem(iterm);
    ...
      

  4.   

    TABCTRL自绘,每个TAB项添加一个属性,根据属性来决定是普通绘制还是用灰色绘制。
    在切换时也根据属性来判断,可以在父窗口里处理TCN_SELCHANGING通知消息,通过返回TRUE来阻止切换到目标页面。
      

  5.   

    不满足条件,不可切换属性页。
    这个可以CTabCtrl的话处理SetCurSel,不让切换就return不执行.
    CpropretyPage的话处理OnKillActive,不让切换也就return FALSE;标签变灰对CTabCtrl来说只有重绘,对CPropretyPage来说简单点,要取得Create这个属性页的CPropretySheet *
    用CPropretySheet::Set什么什么(可以动态改变标签字休大小颜色的@_@我忘了)
      

  6.   

    try Paul's CTabCtrlWithDisable 
    http://www.microsoft.com/msj/0898/c0898.aspx
    http://www.microsoft.com/msj/0398/c0398.aspx