zoukankan      html  css  js  c++  java
  • [原创]让对话框的控件支持tooltips

    让对话框的控件支持tooltips

    absolute8511(别名cool8511)于2008-11-7

    环境:VC6

    参考了网上的一些资料和自己的总结,简单实现了对话框控件的tooltips显示功能。

    具体实现如下:

    在VC6中对任意一个对话框资源都有一个对话框类相对应。假设类名叫COperPanel。

    1. 为要显示tooltips的控件添加字符串资源。

    比如有个按钮叫IDC_BUTTON_ZOOMIN,那么在string table中添加一个字符串资源,ID为IDC_BUTTON_ZOOMIN,caption就是tooltips,我这里填上"放大指定区域"。

    2.在对话框类中添加消息映射

    在消息映射的位置添加一句 ON_NOTIFY_EX(TTN_NEEDTEXT,0,OnToolTipNotify)
    如下:

    BEGIN_MESSAGE_MAP(COperPanel, CDialog)
    //{{AFX_MSG_MAP(COperPanel)
    ON_NOTIFY_EX(TTN_NEEDTEXT,0,OnToolTipNotify)
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()

    OnToolTipNotify是消息处理函数名称,可以随便取,只要对应即可

    3. 在对话框类中添加消息处理函数

    首先在类头文件中声明函数

    //{{AFX_MSG(COperPanel)

    afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
    //}}AFX_MSG

    然后实现如下

    BOOL COperPanel::OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
    {
        TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
    //Identifier of the control sending a message
        UINT nID =pNMHDR->idFrom;
        if (pTTT->uFlags & TTF_IDISHWND)
        {
            // idFrom is actually the HWND of the tool
            nID = ::GetDlgCtrlID((HWND)nID);
            if(nID)
            {
                pTTT->lpszText = MAKEINTRESOURCE(nID);
                pTTT->hinst = AfxGetResourceHandle();
                return(TRUE);
            }
        }
        return(FALSE);

    }

    至此,完成了tooltips的消息处理。

    4. 启用对话框的tooltips

    在对话框创建后,调用 EnableToolTips(true); 来启用对话框的tooltips,这样就全部完成了。现在该对话框在任何情况下都可以显示控件的tooltips了。

    比如我在view中创建了一个非模态对话框用于操作,添加如下代码,其中m_operationPanel就是一个COperPanel对象。

    if(!m_operationPanel.Create(IDD_OPERATIONGROUP,this))
    {
       MessageBox("Fatal error:Fail to create dialog!");
       exit(0);
    }
    //使能tooltips显示功能
    m_operationPanel.EnableToolTips(true);
    m_operationPanel.ShowWindow(SW_SHOW);

    这样一个可以显示tooltips的对话框就完成了。

  • 相关阅读:
    LeetCode:Multiply Strings
    c/c++ 输入输出缓冲区
    Scala access modifiers and qualifiers in detail
    PUT vs POST in REST
    Redis优化总结
    硬中断和软中断(转)
    Redis监控技巧(转)
    Understanding mysql max_connect_errors
    TCP : two different sockets sharing a port?
    libevent 安装异常
  • 原文地址:https://www.cnblogs.com/absolute8511/p/1649617.html
Copyright © 2011-2022 走看看