Tab Control,已经子类化,怎样处理消息才能实现自绘?(纯SDK实现)
dmznc 2007-04-30 06:42:57 想实现的功能:
⒈ 获取及改变标签的背景色;
⒉ 获取及改变Tab页面的背景色;
⒊ 改变标签的字体;
经网上搜索,发现所有相关的资料都是从CTabCtrl类派生后实现。而我并不使用MFC,寻求SDK的实现方法。
部分消息:
WM_MOUSEMOVE
WM_MOUSELEAVE
TCN_SELCHANGING
TCN_SELCHANGE
TCM_SETCURSEL
WM_HSCROLL
WM_PAINT
WM_ERASEBKGND
WM_KILLFOCUS
WM_SETFOCUS
下面是我子类化后的处理代码,请帮忙修改一下:
// 父窗口过程
LRESULT CALLBACK CTabSub::DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_ERASEBKGND:
{
RECT rc;
HBRUSH hBr;
GetClientRect(hDlg, &rc);
hBr = ::CreateSolidBrush(0xFF0000);
::FillRect((HDC)wParam, &rc, hBr);
DeleteObject(hBr);
return TRUE;
}
case WM_PAINT:
{
RECT rc;
HBRUSH hBr;
GetClientRect(hDlg, &rc);
rc.left += 100;
rc.bottom += 50;
hBr = ::CreateSolidBrush(0x00FF00);
::FillRect((HDC)wParam, &rc, hBr);
DeleteObject(hBr);
return TRUE;
}
}
return FALSE;
}
// 子窗口过程
LRESULT CALLBACK CtlProc(HWND hCtl, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_MOUSEMOVE:
{
CMsg::Show(1);
return TRUE;
}
}
return FALSE;
}