找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 773|回复: 2

[原创]:一个可以在CAD中实现TOOLTIP功能的类

[复制链接]
发表于 2002-10-12 13:17:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
CPopupTipWnd::CPopupTipWnd()
{
        RegisterWindowClass();
}

CPopupTipWnd::~CPopupTipWnd()
{

}


BEGIN_MESSAGE_MAP(CPopupTipWnd, CWnd)
        //{{AFX_MSG_MAP(CPopupTipWnd)
                // NOTE - the ClassWizard will add and remove mapping macros here.
        //}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CPopupTipWnd message handlers

BOOL CPopupTipWnd::Create(CWnd *pParentWnd)
{

        _ASSERTE(pParentWnd);

        m_pParentWnd = pParentWnd;

        DWORD dwStyle = WS_BORDER | WS_POPUP;
        DWORD dwExStyle = WS_EX_TOOLWINDOW | WS_EX_TOPMOST;

        BOOL bCreated = CreateEx(dwExStyle,
                "CPopupTipWnd",
                NULL,
                dwStyle,
                0, 0, 0, 0,
                NULL, NULL, NULL);

        return bCreated;
}



bool CPopupTipWnd::RegisterWindowClass()
{
        WNDCLASS wndcls = {0};
        wndcls.style = CS_SAVEBITS | CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
        wndcls.lpfnWndProc = ::DefWindowProc;
        wndcls.hCursor = (HCURSOR)::LoadImage(NULL, IDC_ARROW, IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE);
        wndcls.hbrBackground = (HBRUSH)(COLOR_INFOBK + 1);
        wndcls.lpszClassName = "CPopupTipWnd";

        if(!::RegisterClass(&wndcls))
        {
//                AfxThrowResourceException();
                return false;
        }

        return true;


}

void CPopupTipWnd::ShowPopupWindow(CString strText, CPoint point, CRect rect)
{

        // If there is no password, instead hide the window and be done with it
        if(strText.IsEmpty())
        {
                HidePopupWindow();
                return;
        }

        CClientDC dc(this);

        // Use same font as parent window
        CFont *pOldFont = dc.SelectObject(m_pParentWnd->GetFont());

        // Calculate the window size.
        CSize sizeText = dc.GetTextExtent(strText);
        CSize sizeWindow;
        sizeWindow.cx = sizeText.cx + 2 * 3;
        sizeWindow.cy = sizeText.cy + 2 * 3;
       

        // Calculate window rectangle position on screen
        CRect rectWindow;
        rectWindow.left = rect.left;
        rectWindow.right = rectWindow.left + sizeWindow.cx;
        rectWindow.top = rect.top - (sizeWindow.cy + 20);
        if(rectWindow.top <= 0)
                rectWindow.top = rect.bottom + 20;
        rectWindow.bottom = rectWindow.top + sizeWindow.cy;

        // Display window
        SetWindowPos(&wndTop,
                rectWindow.left,
                rectWindow.top,
                rectWindow.Width(),
                rectWindow.Height(),
                SWP_SHOWWINDOW | SWP_NOACTIVATE);


       

        // Draw information in window
        dc.SetBkMode(TRANSPARENT);
        dc.DrawText(strText, CRect(0, 0, sizeWindow.cx, sizeWindow.cy), DT_CENTER | DT_VCENTER | DT_SINGLELINE);
        dc.SelectObject(pOldFont);

}

void CPopupTipWnd::HidePopupWindow()
{

        ShowWindow(SW_HIDE);

}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-12 13:19:19 | 显示全部楼层

Re: [原创]:一个可以在CAD中实现TOOLTIP功能的类

最初由 wmao 发布
[B]CPopupTipWnd::CPopupTipWnd()
{
        RegisterWindowClass();
}

CPopupTipWnd::~CPopupTipWnd()
{

}


BEGIN_MESSAGE_MAP(CPopupTipWnd, CWnd)
        //{{AFX_MSG_MAP(CPopupTipWnd)
                // NOTE - the ClassWi... [/B]


谢谢,加5分。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-12 13:23:34 | 显示全部楼层
在编译通过后,选择主菜单的“提示工具”,在出现的对话框上单击左键出现提示框,单击右键隐藏提示框
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 19:33 , Processed in 0.432135 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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