iCAx开思工具箱

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9491|回复: 6
打印 上一主题 下一主题

[技术交流] MFC树形控件窗口子例化

[复制链接]
跳转到指定楼层
楼主
发表于 2016-12-25 11:02:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
前几天在网上看到一篇关于MFC树形控件在CATIA窗口上子例化的贴(https://bbs.csdn.net/topics/392061410?page=1)。根据原贴的提示,我在百度网盘的窗口也实现了一样的功能。现总结分享一下:
1.找到目标窗口的句柄:CWnd* pWnd= FindWindow(NULL, _T("欢迎使用百度网盘"));
2.在目标窗口上创建树形控件:m_TreeCtrl.Create(WS_VISIBLE | TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES
                | TVS_NOTOOLTIPS | TVS_EDITLABELS,
                CRect(0, 100, 350, 600), pWnd, IDC_TREE1);
        m_TreeCtrl.SetBkColor(RGB(230, 250, 250));
3.子例化树形控件:
3.1.设置树形控件窗口新的过程函数并保存原来的过程函数:oldProc = (WNDPROC)::SetWindowLong(g_pTreeCtrl->m_hWnd
                , GWL_WNDPROC, (LONG)newProc);
3.2.把树形控件的原过程函数指针存储起来:SetProp(g_pTreeCtrl->m_hWnd, _T("MyProc"), oldProc);
3.3.定义树形控件新的过程函数体:
LRESULT CALLBACK newProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
        // afxDump << Msg << "\r\n";
        switch (Msg)
        {
        case WM_MOUSEMOVE://MN_MOUSEMOVE: not comes !
        {
                if (g_pWnd != NULL)
                {
                        CString str;
                        CPoint point;
                        GetCursorPos(&point);//获得鼠标点击的位置
                        g_pWnd->ScreenToClient(&point);//转化为客户坐
                        int x = point.x;
                        int y = point.y;
                        str.Format(_T("当前坐标 x:%d,y:%d"), x, y);
                        //g_pWnd->SetWindowText(str);

                        HDC hDC = GetDC(g_pWnd->m_hWnd);
                        CDC *pDC = CDC::FromHandle(hDC);
                        pDC->Rectangle(0,0,300,30);
                        CRect rect = CRect(20,5,280,25);
                        pDC->DrawText(str, &rect,0);
                        //g_pTreeCtrl->Invalidate(TRUE);
                        //
                }

                //HWND hdlg = pWnd->GetSafeHwnd();
                //
                //afxDump << Msg << "\r\n";
                break;
                // only inside menu


        }

        case WM_LBUTTONDOWN://MN_BUTTONDOWN://

        {
                CString m_Lable;
                CString str;
                CPoint point;
               
                GetCursorPos(&point);//获得鼠标点击的位置
                g_pTreeCtrl->ScreenToClient(&point);//转化为客户坐标
                UINT uFlags;
                HTREEITEM CurrentItem;
                CurrentItem = g_pTreeCtrl->HitTest(point, &uFlags);//获
                m_Lable = g_pTreeCtrl->GetItemText(CurrentItem);
                //AfxMessageBox(m_Lable);
                int x = point.x;
                int y = point.y;

               
                HDC hDC = GetDC(g_pWnd->m_hWnd);
                CDC *pDC = CDC::FromHandle(hDC);
                pDC->Rectangle(0, 0, 280, 30);
                CRect rect = CRect(20, 5, 270, 25);
                pDC->DrawText(m_Lable, &rect, 0);
               
                break;

        }
               
        case 0x01EF://MN_BUTTONUP://
                //afxDump << Msg << "\r\n";
                break;
        case WM_DESTROY:
        case WM_NCDESTROY:
                oldProc = 0;
                break;
        }
        return CallWindowProc((WNDPROC)::GetProp(hWnd, _T("MyProc")), hWnd, Msg, wParam, lParam);
}


4.实现的效果图片:F:\vs2013pro\MFC树形控件.PNG
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 支持支持
沙发
 楼主| 发表于 2016-12-25 11:08:04 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
板凳
 楼主| 发表于 2016-12-25 11:17:23 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
地板
 楼主| 发表于 2016-12-27 20:05:42 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

MFC树形控件.png (99.58 KB, 下载次数: 36)

MFC树形控件.png
5
 楼主| 发表于 2017-2-22 19:58:04 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

LHPDrwDrawing.jpg (172.13 KB, 下载次数: 22)

LHPDrwDrawing.jpg
6
 楼主| 发表于 2017-2-23 18:39:52 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

1.jpg (64.39 KB, 下载次数: 26)

1.jpg
7
发表于 2017-9-1 16:17:33 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手板模型制作,在线3D打印服务

QQ|小黑屋|手机版|开思工具箱 CAD工具箱_CAM工具箱  

GMT+8, 2024-11-22 00:13 , Processed in 0.016467 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表