0

使用 VS 2015。我有一个基于对话框的应用程序(不是 PropertySheet),并且有一个 CTabCtrl 派生对象,我想在其中禁用特定选项卡。从我用谷歌搜索的内容来看,所有者绘制是要走的路。很好,可以这么理解。

我想做的是从一个与非所有者绘制的版本完全一样的所有者绘制的版本开始,然后开始对它进行各种调整以进行实验。例如,我想使用类似的东西

void CTabControl::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct )
{
    CTabCtrl::DrawItem( lpDrawItemStruct );  // do exactly what unmodified does
}

所以我基本上调用了未修改的 CTabCtrl 为完成绘图所做的一切。即使是最简单的起点也会有所帮助。我需要覆盖或拦截哪些例程才能做到这一点?

我在 PreSubclassWindow() 中设置 TCS_OWNERDRAWFIXED 并执行我上面显示的操作以及其他一两件事,但结果肯定看起来不一样。一方面,标签中没有文字。

如果我能得到一些关于从哪里开始的指示,我会非常喜欢它。顺便说一句,我正在以编程方式创建控件(无对话框资源),如下所示(CTabControl 继承自 CTabCtrl):

MyDlg::OnInitDialog()
{
    ...
    m_tabctrl = new CTabControl();
    m_tabctrl->Create( TCS_TABS | TCS_BOTTOM | TCS_HOTTRACK | TCS_FIXEDWIDTH | WS_CHILD | WS_VISIBLE, dummyRect, this, ID_TABCTRL );
    ...
}
4

0 回答 0