MFC中如何增大CTreeCtrl项文本区域宽度

2025-03-09 20:41:58
推荐回答(2个)
回答1:

估计是你在处理单击事件的时候,因为只有单击文本区域才会相应,所以你想增长这个文本区域。。是吧。我也没找到方法,但是你可以重载树控件的鼠标响应事件,就可以实现了。CTreeCtrlBT重载CTreeCtrl类。在类中加入如下void CTreeCtrlBT::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if( m_bCursorOnTree == FALSE ) //m_bCursorOnTree是全局的BOOL变量,判断鼠标是否在上面
{
TRACKMOUSEEVENT tme;
ZeroMemory(&tme,sizeof(TRACKMOUSEEVENT));
tme.cbSize = sizeof(tme);
tme.hwndTrack = m_hWnd;
tme.dwFlags = TME_LEAVE|TME_HOVER;
tme.dwHoverTime = 1;
m_bCursorOnTree = _TrackMouseEvent(&tme);
}
CTreeCtrl::OnMouseMove(nFlags, point);
}LRESULT CTreeCtrlBT::OnMouseLeave(WPARAM wparam, LPARAM lparam)
{
m_bCursorOnTree = FALSE;
return 0L;
} LRESULT CTreeCtrlBT::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_LBUTTONDBLCLK: //左键单击
{ //............... break;
}
case WM_RBUTTONDOWN: //右键单击
{//....break;
}
return CTreeCtrl::DefWindowProc(message, wParam, lParam);
}

回答2:

直接调用CWnd的MoveWindow函数就可以了。

比如你的控件ID是IDC_TREE1
这样:
GetDlgItem(IDC_TREE1)->MoveWindow(10, 10, 300, 50);

这样就把控件的宽度设置成了300,高度设置成了500
控件的顶-左位置为 10,10