QQ登录

只需一步,快速开始

88上位机VC MFC树状视图作为提示框使用

[ 复制链接 ]

88上位机VC MFC树状视图作为提示框使用

88上位机VC MFC树状视图作为提示框使用

88上位机VC MFC树状视图作为提示框使用


功能展示

有时候在编辑框中显示的字符串具有多层的层次关系,我们想在提示框中有层次的显示出这些字符串,我们就得用上树状类型的提示窗口。我们当前例程就实现了树状视图作为提示框显示,效果如图;
要点提示
我们实现树状视图提示框的原理是:用户鼠标在编辑框上点击左键或右键,我们就动态创建一个新的树状视图窗口,而后读取编辑框中文字,根据预先设置的分隔符作为树状视图的节点,层层添加树状视图的子节点,最后显示出树状视图窗口;

在用户点击右键或左键时销毁树状窗口;
实现功能
1.新建基于对话框的应用程序

2.从CTreeCtrl派生一新类class CTipTree : public CTreeCtrl;添加一个自定义函数
  1. void CTipTree::ShowTip(CString strtip,CString strsepar,CWnd* pParent,CPoint ptmouse)
  2. {
  3.         CRect rctWnd;
  4.         CWnd* pMain = CWnd::GetDesktopWindow();
  5.         pParent->GetWindowRect( &rctWnd );
  6.         pMain->ScreenToClient( &rctWnd );
  7.         CPoint ptParent( ptmouse.x + rctWnd.left -3, ptmouse.y+ rctWnd.top -3 );
  8.         CRect rct( ptParent.x, ptParent.y, ptParent.x + 500, ptParent.y+ 300);
  9.         if ( ::IsWindow( m_hWnd ) )
  10.         {
  11.                 SetWindowPos( &wndTopMost ,rct.left,rct.top, 0, 0, SWP_NOSIZE );
  12.                 return;
  13.         }
  14.         Create( WS_BORDER|TVS_HASLINES|TVS_NOTOOLTIPS|TVS_HASBUTTONS|TVS_LINESATROOT ,rct, pMain,-1 );
  15.         HTREEITEM parent=TVI_ROOT;
  16.         CString strleft;
  17.         int pos=strtip.Find(strsepar);
  18.         if(pos<=0)return;
  19.         while(pos>0)
  20.         {
  21.                 strleft=strtip.Left(pos);
  22.                 strtip=strtip.Right(strtip.GetLength()-pos-strsepar.GetLength());
  23.                 parent=InsertItem(strleft,parent);
复制代码
  1. pos=strtip.Find(strsepar);
  2.                 if(pos<0)
  3.                 {
  4.                         parent=InsertItem(strtip,parent);
  5.                 }
  6.         }
  7.         Expand(TVI_ROOT,TVE_EXPAND);
  8.         SetItemState(parent,TVIS_SELECTED ,0);
  9.         Select(parent,TVGN_CARET);
  10.         MoveWindow(rct.left,rct.top,200,100,FALSE);
  11.         SetFocus();
  12.         SetWindowPos( &wndTopMost ,0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE );
  13.         DWORD style = GetWindowLong( m_hWnd, GWL_EXSTYLE );
  14.         SetWindowLong( m_hWnd, GWL_EXSTYLE, style | WS_EX_TOPMOST );
  15.         ShowWindow(SW_SHOW);
  16. }
复制代码
3从Cedit派生一新类classCTreeEdit : public Cedit,添加变量CTipTree m_TipWnd; CStringm_sSeparator;并在构造函数中初始化m_sSeparator = "\\";

添加鼠标左键右键放开消息
  1. void CTreeEdit::OnLButtonDown(UINT nFlags, CPoint point)
  2. {
  3.         m_TipWnd.DestroyWindow();
  4.         CEdit::OnLButtonDown(nFlags, point);
  5. }
  6. void CTreeEdit::OnRButtonUp(UINT nFlags, CPoint point)
  7. {
  8.         CString edittext;
  9.         GetWindowText(edittext);
  10.         m_TipWnd.ShowTip(edittext,m_sSeparator,this,point);
  11. //        CEdit::OnRButtonUp(nFlags, point);
  12. }
复制代码
4.最后是自定义类的使用,在主对话框中添加编辑框控件,关联变量CTreeEdit m_Edit;
给此变量添加些文本进行效果演示
m_Edit.SetWindowText("工控编程\\PLC编程\\欧姆龙PLC编程\\CP1H编程\\MOVE指令学习");

我们来看下效果实现过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:88.上位机VC MFC树状视图作为提示框使用.rar 
文件大小:130.22 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!




回复

使用道具 举报

点击查看
快速回复 返回列表 客服中心 搜索