+ -
当前位置:首页 → 问答吧 → 自绘ctabctrl后添加子页面不显示,哪位有自绘控件经验的帮忙看一下

自绘ctabctrl后添加子页面不显示,哪位有自绘控件经验的帮忙看一下

时间:2011-12-23

来源:互联网

这里是我的自绘代码:
#include "StdAfx.h"
#include "TabCtrlStyle.h"

CTabCtrlStyle::CTabCtrlStyle(void)
{
}

CTabCtrlStyle::~CTabCtrlStyle(void)
{
}

void CTabCtrlStyle::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC* pDc=CDC::FromHandle(lpDrawItemStruct->hDC);
RECT rect;
TCITEM tcItem;
DWORD count=GetItemCount();

for(DWORD i=0;i<count;i++)
{
GetItemRect(i,&rect);
CBrush br(RGB(220, 240, 230)); //TAB标签背景颜色
pDc->FillRect(&rect,&br);

wchar_t buffer[256] = {0};
tcItem.pszText = buffer;
tcItem.cchTextMax = 256;
tcItem.mask = TCIF_TEXT;
GetItem(i, &tcItem);
pDc->SetTextColor(RGB(57,117,157));
pDc->DrawText(buffer,&rect,DT_CENTER); //TAB在上面  
}
}
void CTabCtrlStyle::InsertItem(int nItem,LPCTSTR lpszItem, CDialog *pDialog)
{
m_pageList.push_back(pDialog);
if(m_pageList.size() == 1)
{
m_curSel = 0;
SetCurSel(m_curSel);
m_pageList.at(m_curSel)->ShowWindow(SW_SHOW);
}
CTabCtrl::InsertItem(nItem, lpszItem);
}

BEGIN_MESSAGE_MAP(CTabCtrlStyle, CTabCtrl)
ON_WM_ERASEBKGND()
ON_NOTIFY_REFLECT(TCN_SELCHANGE, &CTabCtrlStyle::OnTcnSelchange)
END_MESSAGE_MAP()

BOOL CTabCtrlStyle::OnEraseBkgnd(CDC* pDC)
{
RECT rect;
GetClientRect(&rect);
CBrush br(RGB(197, 235, 251));  
pDC->SetBkMode(TRANSPARENT);
pDC->FillRect(&rect,&br); 
return TRUE;
}


void CTabCtrlStyle::OnTcnSelchange(NMHDR *pNMHDR, LRESULT *pResult)
{
m_pageList.at(m_curSel)->ShowWindow(SW_HIDE);
m_curSel = GetCurSel();
m_pageList.at(m_curSel)->ShowWindow(SW_SHOW);
*pResult = 0;
}

使用代码如下:
void CMobileClientDlg::InitTabCtrl()
{
m_tab.Create(TCS_TABS|TCS_OWNERDRAWFIXED | TCS_FIXEDWIDTH | WS_CHILD | WS_VISIBLE,rect, this, 1234); //创建TAB控件

m_inboxPage.Create(IDD_INBOX_DIALOG, &m_tab);
m_outboxPage.Create(IDD_OUTBOX_DIALOG, &m_tab);

m_tab.GetClientRect(&rect);
rect.top += 24;
m_inboxPage.MoveWindow(&rect);
m_outboxPage.MoveWindow(&rect);

m_tab.InsertItem(0, _T("收件箱"), &m_inboxPage);
m_tab.InsertItem(1, _T("已发送"), &m_outboxPage);
}
之前自绘成功,效果都有,包括背景和item字体背景切换标签都可以看到效果,后来不知道修改了什么地方导致子对话框添加之后不显示,切换也不显示,但是通过跟踪我发现InsertItem和OnTcnSelchange都能调用到,不知道为什么看不到效果,哪位有空请不吝赐教,在此拜谢了

作者: ligan0302   发布时间: 2011-12-23

先查看m_pageList里边是不是又对话框句柄,如果有还不显示,
就在初始化中直接加载对话框资源试试

作者: hezhe1008   发布时间: 2011-12-23