MFC控件使用

1.带checkbox的treectrl控件,点击复选框的操作(选中时,使其子节点全选中。未选中时,使其子节点和所有父节点全未选中)
 void CSpectrumDlg::OnClickTree1(NMHDR *pNMHDR, LRESULT *pResult){// TODO: 在此添加控件通知处理程序代码CTreeCtrl* pTreeCtrl = (CTreeCtrl*)this->GetDlgItem(IDC_TREE1);UINT nFlag;CPoint pt;GetCursorPos(&pt); //获得屏幕光标坐标pTreeCtrl->ScreenToClient(&pt);//转换到树HTREEITEM hitem = pTreeCtrl->HitTest(pt,&nFlag);//碰撞检测if(hitem && (nFlag & TVHT_ONITEMSTATEICON)){//点击的是checkbox框BOOL isCheck = pTreeCtrl->GetCheck(hitem);//获得item的check属性isCheck = !isCheck;//设置此节点的checkbox状态。//pTreeCtrl->SetCheck(hitem,1);//此句加上就错了,应为默认的程序对单机复选框已经有了相关的//事件处理方式(取反),先执行此取反操作后,然后系统又调用系统默认的方法又一次取反了!!//设置子节点的图标resetChildItem(pTreeCtrl,hitem,isCheck);  //设置父节点的图标(使某个原来全选中的一个子节点未选中,则其父节点也要变成为选中)if(!isCheck){HTREEITEM parent = pTreeCtrl->GetParentItem(hitem);while(parent){pTreeCtrl->SetCheck(parent,isCheck);parent = pTreeCtrl->GetParentItem(parent);}}}*pResult = 0;}void CSpectrumDlg::resetChildItem( CTreeCtrl* pTreeCtrl, HTREEITEM hitem, BOOL isCheck ){    HTREEITEM child = pTreeCtrl->GetChildItem(hitem);    while(child){        pTreeCtrl->SetCheck(child,isCheck);        resetChildItem(pTreeCtrl,child,isCheck);        child = pTreeCtrl->GetNextSiblingItem(child);    }} 

:nFlag可用的变量其中flags测试结果可以是如下值:TVHT_ABOVE 在客户区域上面TVHT_BELOW 在客户区域下面TVHT_NOWHERE 在客户区域中并在最后一项下面TVHT_ONITEM 在与树项关联的位图或标签内TVHT_ONITEMBUTTON 在与树项关联的按钮上TVHT_ONITEMICON 在与树项关联的位图上TVHT_ONITEMINDENT 在与树项关联的联线上TVHT_ONITEMLABEL 在与树项关联的标签上TVHT_ONITEMRIGHT 在树项的右侧区域中TVHT_ONITEMSTATEICON
 在用户定义的状态图标上TVHT_TOLEFT 在客户区域的左侧

TVHT_TORIGHT 在客户区域的右侧

2.CToolTipCtrl的使用

1.initial中添加   

EnableToolTips(TRUE);

2.改写消息函数

BOOL CXXX::PreTranslateMessage(MSG* pMsg)
{
	// TODO: ÔÚ´ËÌí¼ÓרÓôúÂëºÍ/»òµ÷ÓûùÀà
	if(!m_TooltipCtrl){
	m_TooltipCtrl.Create(this);
	m_TooltipCtrl.SetMaxTipWidth(10);
	}

	m_TooltipCtrl.RelayEvent(pMsg);
	return CScrollView::PreTranslateMessage(pMsg);
}
3.使用     

   m_TooltipCtrl.Activate(TRUE);
   m_TooltipCtrl.AddTool(this,str); 
   m_TooltipCtrl.Update();




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值