1。TreeCtrl 用了hashbotton属性后,我将TreeCtrl绑定一个24*24 CImageList,结果发现加减号与子项上显示的位图在大小上没有什么出入!真是杯具啊。那位高人做过相关的研究,指点一二。(50分)
2。TreeCtrl 的root能不是将hashLine去掉,而child的hashline是存在的呢?(50)分。分不够可以在加~
2。TreeCtrl 的root能不是将hashLine去掉,而child的hashline是存在的呢?(50)分。分不够可以在加~
然后在构件树内容的时候,可以参考如下代码:class CDialogTest : public CDialog
{
DECLARE_DYNAMIC(CDialogTest)public:
CDialogTest(CWnd* pParent = NULL); // standard constructor
virtual ~CDialogTest();// Dialog Data
enum { IDD = IDD_DIALOG1 };public:
CImageList m_TreeBootImage;//Tree的图标
CString TreeCurrent, TreeParent;//当前和父级项文本内容
HTREEITEM hTreeCurrent, hTreeParent;//当前和父级项句柄public:
struct FI_Sip_Item
{
int nUserID;
std::string strUserName;
std::string strSipID;
FI_Sip_Item()
{
Clear();
}
void Clear()
{
nUserID = 0;
strUserName.clear();
strSipID.clear();
}
}; struct FI_Group_Room
{
std::string strRoomName;
int nRoomID;
std::vector<FI_Sip_Item> arraySipItem; FI_Group_Room()
{
Clear();
}
void Clear()
{
strRoomName.clear();
nRoomID = 0;
arraySipItem.clear();
}
};public:
std::vector<FI_Group_Room> m_arrayItem;
public:
void InitTreeData();
void MakeTree(); void AddSubTree(FI_Group_Room Room, HTREEITEM hPartItem);
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support DECLARE_MESSAGE_MAP()public:
CTreeCtrl m_ctrTree;
virtual BOOL OnInitDialog();
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnNMRclickTree1(NMHDR *pNMHDR, LRESULT *pResult);
CString m_strTips;
afx_msg void OnBnClickedButton1();
};
BOOL CDialogTest::OnInitDialog()
{
CDialog::OnInitDialog(); InitTreeData(); MakeTree(); return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}void CDialogTest::InitTreeData()
{
FI_Group_Room RoomItem;
FI_Sip_Item SipItem;
std::vector<FI_Sip_Item> arraySipItem; arraySipItem.clear(); SipItem.nUserID = 111;
SipItem.strSipID = "3000105";
SipItem.strUserName = "luodx";
arraySipItem.push_back(SipItem); SipItem.nUserID = 112;
SipItem.strSipID = "3000106";
SipItem.strUserName = "apples";
arraySipItem.push_back(SipItem); SipItem.nUserID = 113;
SipItem.strSipID = "3000107";
SipItem.strUserName = "eagles";
arraySipItem.push_back(SipItem); SipItem.nUserID = 114;
SipItem.strSipID = "3000108";
SipItem.strUserName = "jt";
arraySipItem.push_back(SipItem); SipItem.nUserID = 115;
SipItem.strSipID = "3000109";
SipItem.strUserName = "leilei";
arraySipItem.push_back(SipItem);
RoomItem.Clear();
RoomItem.nRoomID = 1;
RoomItem.strRoomName = "MC";
RoomItem.arraySipItem = arraySipItem;
m_arrayItem.push_back(RoomItem); RoomItem.Clear();
arraySipItem.clear();
RoomItem.nRoomID = 2;
RoomItem.strRoomName = "黑翼";
RoomItem.arraySipItem = arraySipItem;
m_arrayItem.push_back(RoomItem); RoomItem.Clear();
arraySipItem.clear();
RoomItem.nRoomID = 3;
RoomItem.strRoomName = "ZG";
RoomItem.arraySipItem = arraySipItem;
m_arrayItem.push_back(RoomItem);
}void CDialogTest::MakeTree()
{
//--------------Tree控件操作变量------------------------
TVINSERTSTRUCT tvInsert;
HTREEITEM hParent, hPartItem; //------------------------------------------------
tvInsert.hParent = NULL;
tvInsert.hInsertAfter = NULL;
tvInsert.item.mask = TVIF_TEXT; //-----------------创建图象标签----------------------------
m_TreeBootImage.Create ( IDB_TreeBootImage, 20, 1, ILC_COLOR8);
m_ctrTree.SetImageList ( &m_TreeBootImage, TVSIL_NORMAL );
m_ctrTree.SetTextColor (RGB(7,145,13)); //--------添加根目录----------------------------------------
tvInsert.item.pszText = _T("我的世界");
hParent = m_ctrTree.InsertItem(&tvInsert); //---------------添加子目录-------------------------------
for (int i=0; i<m_arrayItem.size(); i++)
{
hPartItem = m_ctrTree.InsertItem(m_arrayItem[i].strRoomName.c_str(), hParent, NULL);
m_ctrTree.SetItemData(hPartItem, i);
AddSubTree(m_arrayItem[i], hPartItem);
} //---------------------展开Tree目录------------------
m_ctrTree.Expand(hParent,TVE_EXPAND);
}void CDialogTest::AddSubTree(FI_Group_Room Room, HTREEITEM hPartItem)
{
HTREEITEM hItem = NULL;
for (int i=0; i<Room.arraySipItem.size(); i++)
{
hItem = m_ctrTree.InsertItem(Room.arraySipItem[i].strUserName.c_str(), hPartItem, NULL);
m_ctrTree.SetItemData(hItem, Room.arraySipItem[i].nUserID);
}
}
运行后的截图如下:
你自己换个24的图片就行了,然后把代码m_TreeBootImage.Create ( IDB_TreeBootImage, 20, 1, ILC_COLOR8);
换成m_TreeBootImage.Create ( IDB_TreeBootImage, 24, 1, ILC_COLOR8);就可以了。