tab control位于dialog 中,我在dialog中添加了消息OnDrawItem,然后在自己写的类Ctab(继承于CtabCtrl)中重载了virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);但是运行的时候发现dialog中OndrawItem(当控件句柄为tab control时)没有执行,所以Ctab::drawItem也没有执行,但是在另外一个小程序中这样写是正确的,但是加入到一个复杂的界面就不行了,请教各位大侠是什么原因??
说明,tab control我是这样修改为owner draw 不知道是否正确?
void Ctab::PreSubclassWindow()
{
//// TODO: Add your specialized code here and/or call the base class
ModifyStyle(0, TCS_OWNERDRAWFIXED);
CTabCtrl::PreSubclassWindow();}
void CSDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
Ctab *pTabCtrl = (Ctab *)GetDlgItem(IDC_MAIN_TAB); if (pTabCtrl->m_hWnd == lpDrawItemStruct->hwndItem)
{ AfxMessageBox(_T("CsDlg::OnDrawItem"));
} CResizingDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
说明,tab control我是这样修改为owner draw 不知道是否正确?
void Ctab::PreSubclassWindow()
{
//// TODO: Add your specialized code here and/or call the base class
ModifyStyle(0, TCS_OWNERDRAWFIXED);
CTabCtrl::PreSubclassWindow();}
void CSDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
Ctab *pTabCtrl = (Ctab *)GetDlgItem(IDC_MAIN_TAB); if (pTabCtrl->m_hWnd == lpDrawItemStruct->hwndItem)
{ AfxMessageBox(_T("CsDlg::OnDrawItem"));
} CResizingDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
解决方案 »
- 新手请教个关于mfc动态链接库中dialog值传递的问题
- 动态创建Tab标签
- COM组件调用问题!
- 请高手推荐几本MFC网络编程的经典书籍
- 100分求助,MIDL2039错误是什么意思
- 有关VARANT_BOOL的真假的比较问题
- 我在程序中使用了BCG类库,使用ROSE的逆向工程生成类图,但是ROSE不认识BCG,好多继承关系都没有显示出来,怎么办呢?!
- 既然vc,vb等都可以调用windows api,但是vc vb语法不同啊,调用就不一样了,那api函数又怎么实现来满足不同语法的compiler呢??
- SetWindowPos的问题
- 请问CEditView中如何控制其换行显示?用SetWindowText()老是覆盖了第一条数据!
- 基础问题:关于指针,拷贝.麻烦大哥们给我解释一下.
- ole放在对话框里
应该在自定义tab里定义吧?
当然自定义的tab 中也加入了ondrawItem 但是也没执行
大侠,请帮忙再分析下