環境
WindowsNT4.0(SP4)
IE4.01(SP1)
VC++6.0
VB6.0
TreeView を VB からも使用できるように SysTreeView32 をサブクラスした OCX を作成する.
ActiveX コントロールコンテナでは正常だが,実際に VB に貼り付けてみると,階層を接続する点線のまわりの背景がグレーで描画されてしまう.
BOOL CMyTreeViewCtrl::PreCreateWindow(CREATESTRUCT& cs)
{
// サブクラス化
cs.lpszClass = _T("SysTreeView32");
cs.style |= WS_CHILD | WS_VISIBLE | WS_BORDER | TVS_LINESATROOT | TVS_HASLINES | TVS_HASBUTTONS;
return COleControl::PreCreateWindow(cs);
}
int CMyTreeViewCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;
// TreeView 作成
m_pTreeCtrl = (CTreeCtrl*)this;
// ImageList 作成
m_imagelist.Create(IDB_TREEICON, 16, 100, RGB(255, 255, 255));
m_pTreeCtrl->SetImageList(&m_imagelist, TVSIL_NORMAL);
SetAppearance(1);
return 0;
}
HTREEITEM CMyTreeViewCtrl::InsertItem(HTREEITEM hParent, LPSTR pszText, int iImage, int iSelImage, LPARAM pos)
{
TV_INSERTSTRUCT treeitem;
memset(&treeitem, 0, sizeof(treeitem));
treeitem.hParent = hParent;
treeitem.hInsertAfter = TVI_SORT;
treeitem.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM;
treeitem.item.pszText = pszText;
treeitem.item.iImage = iImage;
treeitem.item.iSelectedImage = iSelImage;
treeitem.item.lParam = pos;
return m_pTreeCtrl->InsertItem(&treeitem);
}
これは API の
バグである.
以下の KB を参照(回避コード)
最終更新日: 1999/02/10
文書番号 : J046748
SDK32 : TreeView コントロール ボタンの背景が変更されない
参照