zoukankan      html  css  js  c++  java
  • 可自定义的超链接控件

    介绍 CURLLinkButton类通过提供对URL链接的支持扩展了CButton的功能。它显示URL链接,并在单击时调用shell。它可以用于您的项目链接到任何URL,如您的网站,应用程序,文件夹或您的电子邮件。你也可以像其他按钮一样使用它来显示一个消息框,对话框或任何你喜欢的东西。 这是一个超链接控件,它的作用类似于Internet Explorer®中使用的超链接控件,具有以下特点: 可以插入任何对话框中,表单或视图链接到任何网址和电子邮件包含一个内置的工具提示定制显示的文本,URL前缀,URL,提示文本自定义超链接的颜色(悬停定期访问)和工具提示(文本颜色、背景颜色)使用一个自定义光标或使用标准的手光标调整一个URL链接按钮的大小可以聚焦按钮的标题,导航和激活使用键盘发送消息给家长当点击容易理解,易于使用的 感谢Niek Albers的_TrackMouseEvent()。感谢Paul DiLascia为WinHlp32提供了默认的手动光标。 使用的代码 代码非常短,可重用且易于理解。为了在你的项目中使用这个控件,你需要: 在定义控件的头文件中包括URLLinkButton.h向对话框或表单添加一些按钮。为要自定义为超链接控件的每个按钮添加成员变量。将这些变量的类型从CButton替换为CURLLinkButton。使用以下操作符自定义控件: 隐藏,复制Code

    //Resize a URL link button to the size of the button's caption
    void SizeToContent();
    
    //Customize the colors of Hyperlink 
    void SetLinkColor(COLORREF clrRegular, COLORREF clrHover, COLORREF clrVisited);
    
    //Customize the colors of the Tooltip
    void SetToolTipColor(COLORREF clrTextColor, COLORREF clrBkColor);
    
    //Customize the tooltip text. Use default tooltip if sTip is empty
    void SetToolTipText(CString sTip=_T(""));
    
    // Set URL. By default, window text will be used
    void SetURL (LPCTSTR lpszURL);
    
    //Set URL prefix. For example "mailto:"
    void SetURLPrefix (LPCTSTR lpszPrefix); 

    如果您的项目中有游标资源,您可以自定义游标或您可以使用默认的手游标: 隐藏,复制Code

    #if(WINVER >= 0x0500)
        //Load system hand cursor
        m_hCursorHand = AfxGetApp()->LoadCursor (IDC_HAND); 
    #else
        // Use a custom Hand cursor
        // Must add a cursor resourse in the project with ID: IDC_CURSOR_HAND
        //m_hCursorHand = AfxGetApp()->LoadCursor (IDC_CURSOR_HAND);
    
        // If you haven't the cursor resource in your project
        // load default hand cursor from WinHlp32 module with ID=106
        TCHAR szWindowsDir[MAX_PATH];
        GetWindowsDirectory(szWindowsDir ,MAX_PATH);
        strcat(szWindowsDir,"\Winhlp32.exe");
        HMODULE hModule = LoadLibrary(szWindowsDir); 
        if (hModule)
            m_hCursorHand = ::LoadCursor(hModule, MAKEINTRESOURCE(106));
    #endif 

    单击链接按钮时,将调用ShellExecute以打开URL。如果失败,它将向父窗口发送一条已注册的消息。 隐藏,复制Code

    const UINT WM_LINK_CLICKED = ::RegisterWindowMessage (_T ("WM_LINK_CLICKED"));

    您可以创建父窗口的消息处理程序,以便在单击超链接时执行任何您想要的操作。例如: 隐藏,复制Code

    afx_msg LRESULT OnLinkCliked(WPARAM wParam, LPARAM lParam);
    
    ON_REGISTERED_MESSAGE(WM_LINK_CLICKED, OnLinkCliked)
    
    LRESULT CURLLinkDlg::OnLinkCliked(WPARAM wParam, LPARAM lParam)
    {
       UINT nLinkID = (UINT)wParam;
       switch(nLinkID)
       {
         case IDOK:
              OnOK();
         break;
         case IDC_SHOW_MESSAGE:
              MessageBox(_T("Hope you find this code useful!"));
         break;
       }
    
       return 0;
    }

    历史 2004年7月18日 代码项目的首次公开发布 2005年3月2日 固定内存泄漏固定无限循环问题时调用返回键在链接上显示对话框。你现在不需要检查选项“所有者绘制”的链接按钮 本文转载于:http://www.diyabc.com/frontweb/news513.html

  • 相关阅读:
    初始化mysql数据库 /usr/bin/mysql_install_db执行时报错
    CentOS7安装mysql兼容性问题
    CentOS7网络连接问题以及重启网络服务失败
    CentOS7安装nginx
    zookeeper启动时报错:Error contacting service. It is probably not running问题
    CentOS查看卸载openjdk
    使用yum命令时提示:Another app is currently holding the yum lock
    修改eclipse中文件打开默认方式
    [程序员代码面试指南]链表问题-单链表的选择排序(选择排序)
    [程序员代码面试指南]链表问题-删除无序链表中重复出现的节点
  • 原文地址:https://www.cnblogs.com/Dincat/p/13450782.html
Copyright © 2011-2022 走看看