网上的方法基本上都是通过 m_psp的设置,典型的代码如下:
// 设置标签的图标:这种方式添加的图标分辨率与颜色深度都很低。
HICON hIcon = AfxGetApp()->LoadIcon( IDI_PPAGE_COORDS );
ASSERT( hIcon != NULL );
m_psp.hIcon = hIcon;
m_psp.dwFlags &= ~PSP_USEICONID;
m_psp.dwFlags |= PSP_USEHICON;
正确的方法是设置属性表的Tab控件的属性,代码如下:
BOOL CMySheet::OnInitDialog()
{
BOOL bResult = CPropertySheet::OnInitDialog();
// TODO: 在此添加您的专用代码
CImageList *pimagelist = new CImageList();
pimagelist->Create(16, 16, ILC_COLOR32, 1, 1);
UINT nIconID[] = { IDI_ICON1, IDI_ICON2, IDI_ICON3, IDI_ICON4, IDI_ICON5 };
for (int i = 0; i< sizeof(nIconID) / sizeof(UINT); i++)
{
pimagelist->Add(AfxGetApp()->LoadIcon(nIconID[i]));
}
CTabCtrl* ptab = GetTabControl();
ptab->SetImageList(pimagelist);
TCITEM tc;
tc.mask = TCIF_IMAGE;
for (int i = 0; i < GetPageCount(); i++)
{
tc.iImage = i;
ptab->SetItem(i, &tc);
}
// ptab->SetItemSize(CSize(20, 20));
SetActivePage(0); // 如果没有这个,标签的初始显示会有问题
return bResult;
}