这个控件不太好用,只能使用这点功能了:
void CTocDlg::OnOnBeginLabelEditToccontrol1(long x, long y, BOOL FAR* CanEdit)
{ //
esriTOCControlItem item = esriTOCControlItemNone;
IBasicMapPtr ipBasicMap = 0;
ILayerPtr ipLayer = 0;
IUnknownPtr ipUnk = 0;
CComVariant data = 0;
// Determine what kind of item has been clicked on
LPUNKNOWN pUnk = m_TOCControl.GetControlUnknown();
LPDISPATCH pDisp = 0;
pUnk->QueryInterface(IID_IDispatch, (void **) &m_ipTOCControl);
m_ipTOCControl->HitTest(x, y, &item, &ipBasicMap, &ipLayer, &ipUnk, &data);
//Only layer items can have their labels edited
if (item != esriTOCControlItemLayer)
*CanEdit = VARIANT_FALSE;
} ////////////////////////////////////////////////// //
void CTocDlg::OnOnEndLabelEditToccontrol1(long x, long y, LPCTSTR newLabel, BOOL FAR* CanEdit)
{ //
CComBSTR bstr(newLabel);
if (SysStringLen(bstr.m_str) == 0)
*CanEdit = VARIANT_FALSE;
} ///////////////////////////////////////////////////// //
void CTocDlg::OnOnMouseDownToccontrol1(long button, long shift, long x, long y)
{
esriTOCControlItem item = esriTOCControlItemNone;
IBasicMapPtr ipBasicMap = 0;
ILayerPtr ipLayer = 0;
IUnknownPtr ipUnk = 0;
CComVariant data = 0;
LPUNKNOWN pUnk = m_TOCControl.GetControlUnknown();
LPDISPATCH pDisp = 0;
pUnk->QueryInterface(IID_IDispatch, (void **) &m_ipTOCControl);
m_ipTOCControl->HitTest(x, y, &item, &ipBasicMap, &ipLayer, &ipUnk, &data);
switch(button)
{
case 2:
{
if (item == esriTOCControlItemMap)
MessageBox("New GroupLayer!");
if(item == esriTOCControlItemLayer)
MessageBox("New Element Layer!");
}
break;
case 1:
default:
break;
};
}