精华内容
下载资源
问答
  • NPOI创建超链接书签

    千次阅读 2014-10-06 01:39:28
    利用NPOI创建超链接书签分两个步骤。一是创建与书签关联超链接;二是创建书签。下面逐步介绍。 一、创建与书签关联超链接  NPOI提供两种超链接,一种是超链接到另一文件;另一种是超链接到书签。下面仅介绍...

                利用NPOI创建超链接书签分两个步骤。一是创建与书签关联的超链接;二是创建书签。下面逐步介绍。

    一、创建与书签关联的超链接

                NPOI提供两种超链接,一种是超链接到另一文件;另一种是超链接到书签。下面仅介绍创建超链接到书签的方法。

                创建文档:XWPFDocument m_Docx = new XWPFDocument();

                创建段落:CT_P m_p = m_Docx.Document.body.AddNewP();

                创建超链接集合:m_p.Items= new System.Collections.ArrayList();

                创建超链接:

                CT_Hyperlink1m_hyperlink = new CT_Hyperlink1();

                m_hyperlink.anchor = "NPOI1";//书签名

                m_hyperlink.history = ST_OnOff.True;

                m_hyperlink.Items = new System.Collections.ArrayList();

                CT_Rm_r = new CT_R();

                m_r.AddNewT().Value = "书签1";

                m_hyperlink.Items.Add(m_r);

                m_hyperlink.ItemsElementName = new List<ItemsChoiceType12>();

                m_hyperlink.ItemsElementName.Add(ItemsChoiceType12.hyperlink);

                m_p.Items.Add(m_hyperlink);

    二、创建书签

                书签分开始和结束两部分组成。

                //书签0开始

                intm_bookId = 0;//同一段内有多个书签,需要不同的Id,不同段的书签Id可以相同

                m_p =m_Docx.Document.body.AddNewP();

                m_p.AddNewPPr().AddNewJc().val = ST_Jc.both;

               m_p.AddNewPPr().AddNewSpacing().line = "400";//固定行距20

               m_p.AddNewPPr().AddNewSpacing().lineRule = ST_LineSpacingRule.exact;

                m_p.Items = new System.Collections.ArrayList();

                CT_Bookmarkm_ctbook1 = new CT_Bookmark();

                m_bookId = m_p.Items.Count;

                m_ctbook1.id = m_bookId.ToString();//"0";

                m_ctbook1.name = "NPOI1";//书签名,超链接用

                m_p.Items.Add(m_ctbook1);

                m_p.ItemsElementName = new List<ParagraphItemsChoiceType>();

                m_p.ItemsElementName.Add(ParagraphItemsChoiceType.bookmarkStart);

                m_p.AddNewR().AddNewT().Value = "1NPOI介绍";

                //书签0结束

                m_ctbook1 = new CT_Bookmark();

                m_ctbook1.id = m_bookId.ToString();//"0";

                m_p.Items.Add(m_ctbook1);

                m_p.ItemsElementName.Add(ParagraphItemsChoiceType.bookmarkEnd);

     

           经过调试的例子下载:http://download.csdn.net/detail/gltide/8005379。NPOI是tonyqus提供的2.1.1.0源码经过修改编译,创建的docx在word2007可以打开,例子创建效果图如下。


    展开全文
  • 上海电子信息职业技术学院 通信与信息工程学院软件技术系 网页制作课程任务单 姓 名 学 号 班级 成绩 学习情景编号 07 学习情景名称 在HTML文档中创建超链接 学时 2 任务要求 在公司网站主页HTML文档中创建各类...
  • 创建超链接静态控件步骤 1 创建一个新类CLinkStatic,设置基类为CStatic。步骤 2 为新类添加成员变量 COLORREF m_textcr //文本颜色 CFont m_font; //记录连接控件文本字体 LOGFONT m_lf; //逻辑字体 ...

    创建超链接静态控件

    步骤 1

           创建一个新类CLinkStatic,设置基类为CStatic。

    步骤 2

          为新类添加成员变量

           COLORREF  m_textcr           //文本颜色

           CFont          m_font;             //记录连接控件文本的字体

           LOGFONT     m_lf;                //逻辑字体

           HCURSOR     m_handcur      //手型鼠标句柄

           CBrush         m_brush;          //设置控件画刷

           CString         m_linkurl;         //超链接地址

           BOOL            m_bmouseover  //鼠标是否在连接上,用来设置是否有下划线

           BOOL            m_bLink;           //是否显示为超链接

    步骤 3

           添加成员函数

          void SetLink(BOOL bLink);        
          void SetLinkUrl(CString url);
          void SetFontUnderline(BOOL bSet=FALSE);
          void SetTextColor(COLORREF crText);

          void SetFont(int nFont);                                  //设置字体大小                            

         每个成员函数实现过程中都要加上控件重绘命令  RedrawWindow()来实现控件的重绘;

          在SetLinke()函数中,要调用ModifyStyle()函数,是静态控件能够接受和发送消息。

    步骤 4

           为新类添加消息响应函数

          WM_MOUSEMOVE          鼠标移动时设置计时器SetTimer(1,10,NULL)

          WM_TIMER                     判断鼠标是否在在控件上,一次来设置m_bmouseover的值

          WM_SETCURSOR           当鼠标在控件上时,载入手型光标

          WM_LBUTTONDOW       鼠标左键按下,如果m_bmouseover为真,执行超链接

          =WM_CTLCOLOR           在其中设置控件的字体,颜色和模式(与WM_CTLCOLOR区别开)这里是关键

    步骤 5

            在要是用超链接静态控件的类的头文件中加入静态控件的定义(修改一个控件的ID为IDC_LINKSTATIC之后,才能在WinWizard中设置关联,并且只能设置一个。不知道为什么?)

            之后,会有显示 CLinkStatic        m_static1;

           若有多个超链接标签,可能就需要手动添加,如:CLinkStatic m_static2;

          并且在所要加入的类中的DoDataExchange中加入

                         DDX_Control(pDX, IDC_LINKSTATIC, m_static2);

    步骤 6

             在类的实现过程中,调用成员函数实现对连接标签的初始化即可。

     


     

    要点:

     1.每个成员函数实现过程中都要加上控件重绘命令  RedrawWindow()来实现控件的重绘;

     2.在SetLinke()函数中,要调用ModifyStyle()函数,是静态控件能够接受和发送消息

     3.使用=WM_CTLCOLOR消息来改变控件的样式,而不能用WM_CTLCOLOR

     4.在实现过程中,可以在WM_CTLCOLOR中使用hbr=pDC->GetStockObject(NULL_BRUSH)来设置控件背景画刷为空,以达到和主窗口背景融合一体的效果。

    展开全文
  • MFC 中创建简单超链接

    千次阅读 2014-02-25 20:19:51
    MFC SDI程序在菜单最后通常会有一个帮助菜单项,点击后弹出一个关于程序基本信息对话框(CAboutDlg),想在这个界面添加一条超链接,指向指定网页,这个网页上存放介绍这个程序更多信息。查资料说API函数...

    MFC SDI程序在菜单的最后通常会有一个帮助的菜单项,点击后弹出一个关于程序基本信息的对话框(CAboutDlg),想在这个界面添加一条超链接,指向指定的网页,这个网页上存放介绍这个程序更多的信息。查资料说API函数使用ShellExecute可以实现,试了一下,没有成功,这种方法后续再补充。先介绍一下另外一种实现方法(注:这种方法也也是在网上搜集整理的)。

    步骤如下:

    1) 新建一个MFC单文档应用程序,命名为test。

    2) 打开解决方案视图,在头文件中按照步骤:右键---添加---新建项---头文件(.h),命名为HyperLink.h ,在这个头文件中添加下面的代码:

    //***************************************************************************

    // Description  : Hyper Link Static Class

    //  File Name  : HyperLink.H

    //  Created   : 

    // Email   : 

    //***************************************************************************

    #if !defined(AFX_HYPERLINK_H__D1625061_574B_11D1_ABBA_00A0243D1382__INCLUDED_)

    #define AFX_HYPERLINK_H__D1625061_574B_11D1_ABBA_00A0243D1382__INCLUDED_

    #if _MSC_VER >= 1000

    #pragma once

    #endif // _MSC_VER >= 1000

    /

    // CHyperLink window

    class CHyperLink : public CStatic

    {

    // Construction/destruction

    public:

        CHyperLink();

        virtual ~CHyperLink();

    public:

        enum UnderLineOptions { ulHover = -1, ulNone = 0, ulAlways = 1};

    // Attributes

    public:

        void SetURL(CString strURL);

        CString GetURL() const;

        void SetColours(COLORREF crLinkColourCOLORREF crVisitedColour

                        COLORREF crHoverColour = -1);

        COLORREF GetLinkColour() const;

        COLORREF GetVisitedColour() const;

        COLORREF GetHoverColour() const;

        void SetVisited(BOOL bVisited = TRUE);

        BOOL GetVisited() const;

        void SetLinkCursor(HCURSOR hCursor);

        HCURSOR GetLinkCursor() const;

        void SetUnderline(int nUnderline = ulHover);

        int  GetUnderline() const;

        void SetAutoSize(BOOL bAutoSize = TRUE);

        BOOL GetAutoSize() const;

    // Overrides

        // ClassWizard generated virtual function overrides

        //{{AFX_VIRTUAL(CHyperLink)

     public:

        virtual BOOL PreTranslateMessage(MSGpMsg);

     virtual BOOL DestroyWindow();

     protected:

        virtual void PreSubclassWindow();

     //}}AFX_VIRTUAL

    // Implementation

    protected:

        HINSTANCE GotoURL(LPCTSTR urlint showcmd);

        void ReportError(int nError);

        LONG GetRegKey(HKEY keyLPCTSTR subkeyLPTSTR retdata);

        void PositionWindow();

        void SetDefaultCursor();

    // Protected attributes

    protected:

        COLORREF  m_crLinkColourm_crVisitedColour;     // Hyperlink colours

        COLORREF  m_crHoverColour;                       // Hover colour

        BOOL   m_bOverControl;                        // cursor over control?

        BOOL   m_bVisited;                            // Has it been visited?

        int    m_nUnderline;                          // underline hyperlink?

        BOOL   m_bAdjustToFit;                        // Adjust window size to fit text?

        CString   m_strURL;                              // hyperlink URL

        CFont   m_UnderlineFont;                       // Font for underline display

        CFont   m_StdFont;                             // Standard font

        HCURSOR   m_hLinkCursor;                         // Cursor for hyperlink

        CToolTipCtrl m_ToolTip;          // The tooltip

        UINT   m_nTimerID;

        // Generated message map functions

    protected:

        //{{AFX_MSG(CHyperLink)

        afx_msg HBRUSH CtlColor(CDCpDCUINT nCtlColor);

        afx_msg BOOL OnSetCursor(CWndpWndUINT nHitTestUINT message);

        afx_msg void OnMouseMove(UINT nFlagsCPoint point);

     afx_msg void OnTimer(UINT nIDEvent);

     afx_msg BOOL OnEraseBkgnd(CDCpDC);

     //}}AFX_MSG

        afx_msg void OnClicked();

        DECLARE_MESSAGE_MAP()

    };

    /

    //{{AFX_INSERT_LOCATION}}

    // Microsoft Developer Studio will insert additional declarations immediately before the previous line.

    #endif // !defined(AFX_HYPERLINK_H__D1625061_574B_11D1_ABBA_00A0243D1382__INCLUDED_)

    3) 再添加对应的源文件。步骤:在解决方案视图中,右键点击源文件---添加---新建项---C++文件(.cpp),命名为 HyperLink.cpp ,在这个头文件中添加下面的代码:

    // HyperLink.cpp : implementation file

    // HyperLink static control. Will open the default browser with the given URL

    // when the user clicks on the link.

    #include "stdafx.h"

    #include "HyperLink.h"

    #include "atlconv.h"    // for Unicode conversion - requires #include <afxdisp.h> // MFC OLE automation classes

    #ifdef _DEBUG

    #define new DEBUG_NEW

    #undef THIS_FILE

    static char THIS_FILE[] = __FILE__;

    #endif

    #define TOOLTIP_ID 1

    /

    // CHyperLink

    CHyperLink::CHyperLink()

    {

    m_hLinkCursor       = NULL;                 // No cursor as yet

    m_crLinkColour      = RGB(  0,   0, 238);   // Blue

    m_crVisitedColour   = RGB( 85,  26, 139);   // Purple

    m_crHoverColour     = RGB(255,   0,   0);   // Red

    m_bOverControl      = FALSE;                // Cursor not yet over control

    m_bVisited          = FALSE;                // Hasn't been visited yet.

    m_nUnderline        = ulHover;              // Underline the link?

    m_bAdjustToFit      = TRUE;                 // Resize the window to fit the text?

    m_nTimerID          = 100;

    m_strURL.Empty(); 

    }

    CHyperLink::~CHyperLink()

    {

    m_UnderlineFont.DeleteObject();

    }

    /

    // CHyperLink overrides

    BOOL CHyperLink::DestroyWindow() 

    {

    KillTimer(m_nTimerID);

    return CStatic::DestroyWindow();

    }

    BOOL CHyperLink::PreTranslateMessage(MSGpMsg

    {

    m_ToolTip.RelayEvent(pMsg);

    return CStatic::PreTranslateMessage(pMsg);

    }

    void CHyperLink::PreSubclassWindow() 

    {

    // We want to get mouse clicks via STN_CLICKED

    DWORD dwStyle = GetStyle();

    ::SetWindowLong(GetSafeHwnd(), GWL_STYLEdwStyle | SS_NOTIFY);

    // Set the URL as the window text

    if (m_strURL.IsEmpty())

    GetWindowText(m_strURL);

    // Check that the window text isn't empty. If it is, set it as the URL.

    CString strWndText;

    GetWindowText(strWndText);

    if (strWndText.IsEmpty()) 

    {

    ASSERT(!m_strURL.IsEmpty());    // Window and URL both NULL. DUH!

    SetWindowText(m_strURL);

    }

    CFontpFont = GetFont();

    if (!pFont)

    {

    HFONT hFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);

    if (hFont == NULL)

    hFont = (HFONTGetStockObject(ANSI_VAR_FONT);

    if (hFont)

    pFont = CFont::FromHandle(hFont);

    }

    ASSERT(pFont->GetSafeHandle());

    // Create the underline font

    LOGFONT lf;

    pFont->GetLogFont(&lf);

    m_StdFont.CreateFontIndirect(&lf);

    lf.lfUnderline = (BYTETRUE;

    m_UnderlineFont.CreateFontIndirect(&lf);

    PositionWindow();        // Adjust size of window to fit URL if necessary

    SetDefaultCursor();      // Try and load up a "hand" cursor

    SetUnderline();

    // Create the tooltip

    CRect rect

    GetClientRect(rect);

    m_ToolTip.Create(this);

    m_ToolTip.AddTool(thism_strURLrectTOOLTIP_ID);

    CStatic::PreSubclassWindow();

    }

    BEGIN_MESSAGE_MAP(CHyperLinkCStatic)

    //{{AFX_MSG_MAP(CHyperLink)

    ON_WM_CTLCOLOR_REFLECT()

    ON_WM_SETCURSOR()

    ON_WM_MOUSEMOVE()

    ON_WM_TIMER()

    ON_CONTROL_REFLECT(STN_CLICKEDOnClicked)

    ON_WM_ERASEBKGND()

    //}}AFX_MSG_MAP

    END_MESSAGE_MAP()

    /

    // CHyperLink message handlers

    void CHyperLink::OnClicked()

    {

    m_bOverControl = FALSE;

    int result = (int)GotoURL(m_strURLSW_SHOW);

    m_bVisited = (result > HINSTANCE_ERROR);

    if (!m_bVisited)

    {

    MessageBeep(MB_ICONEXCLAMATION);     // Unable to follow link

    ReportError(result);

    }

    else 

    SetVisited();                        // Repaint to show visited colour

    }

    HBRUSH CHyperLink::CtlColor(CDCpDCUINT nCtlColor

    {

    ASSERT(nCtlColor == CTLCOLOR_STATIC);

    if (m_bOverControl)

    pDC->SetTextColor(m_crHoverColour);

    else if (m_bVisited)

    pDC->SetTextColor(m_crVisitedColour);

    else

    pDC->SetTextColor(m_crLinkColour);

    // transparent text.

    pDC->SetBkMode(TRANSPARENT);

    return (HBRUSH)GetStockObject(NULL_BRUSH);

    }

    void CHyperLink::OnMouseMove(UINT nFlagsCPoint point

    {

    if (!m_bOverControl)        // Cursor has just moved over control

    {

    m_bOverControl = TRUE;

    if (m_nUnderline == ulHover)

    SetFont(&m_UnderlineFont);

    Invalidate();

    SetTimer(m_nTimerID, 100, NULL);

    }

    CStatic::OnMouseMove(nFlagspoint);

    }

    void CHyperLink::OnTimer(UINT nIDEvent

    {

    CPoint p(GetMessagePos());

    ScreenToClient(&p);

    CRect rect;

    GetClientRect(rect);

    if (!rect.PtInRect(p))

    {

    m_bOverControl = FALSE;

    KillTimer(m_nTimerID);

    if (m_nUnderline != ulAlways)

    SetFont(&m_StdFont);

    rect.bottom+=10;

    InvalidateRect(rect);

    }

    CStatic::OnTimer(nIDEvent);

    }

    BOOL CHyperLink::OnSetCursor(CWnd/*pWnd*/UINT /*nHitTest*/UINT /*message*/

    {

    if (m_hLinkCursor)

    {

    ::SetCursor(m_hLinkCursor);

    return TRUE;

    }

    return FALSE;

    }

    BOOL CHyperLink::OnEraseBkgnd(CDCpDC

    {

    CRect rect;

    GetClientRect(rect);

    pDC->FillSolidRect(rect, ::GetSysColor(COLOR_3DFACE));

    return TRUE;

    }

    /

    // CHyperLink operations

    void CHyperLink::SetURL(CString strURL)

    {

    m_strURL = strURL;

    if (::IsWindow(GetSafeHwnd())) 

    {

    PositionWindow();

    m_ToolTip.UpdateTipText(strURLthisTOOLTIP_ID);

    }

    }

    CString CHyperLink::GetURL() const

    return m_strURL;   

    }

    void CHyperLink::SetColours(COLORREF crLinkColourCOLORREF crVisitedColour,

    COLORREF crHoverColour /* = -1 */

    m_crLinkColour    = crLinkColour

    m_crVisitedColour = crVisitedColour;

    if (crHoverColour == -1)

    m_crHoverColour = ::GetSysColor(COLOR_HIGHLIGHT);

    else

    m_crHoverColour = crHoverColour;

    if (::IsWindow(m_hWnd))

    Invalidate(); 

    }

    COLORREF CHyperLink::GetLinkColour() const

    return m_crLinkColour

    }

    COLORREF CHyperLink::GetVisitedColour() const

    {

    return m_crVisitedColour

    }

    COLORREF CHyperLink::GetHoverColour() const

    {

    return m_crHoverColour;

    }

    void CHyperLink::SetVisited(BOOL bVisited /* = TRUE */

    m_bVisited = bVisited

    if (::IsWindow(GetSafeHwnd()))

    Invalidate(); 

    }

    BOOL CHyperLink::GetVisited() const

    return m_bVisited

    }

    void CHyperLink::SetLinkCursor(HCURSOR hCursor)

    m_hLinkCursor = hCursor;

    if (m_hLinkCursor == NULL)

    SetDefaultCursor();

    }

    HCURSOR CHyperLink::GetLinkCursor() const

    {

    return m_hLinkCursor;

    }

    void CHyperLink::SetUnderline(int nUnderline /*=ulHover*/)

    {

    if (m_nUnderline == nUnderline)

    return;

    if (::IsWindow(GetSafeHwnd()))

    {

    if (nUnderline == ulAlways)

    SetFont(&m_UnderlineFont);

    else

    SetFont(&m_StdFont);

    Invalidate(); 

    }

    m_nUnderline = nUnderline;

    }

    int CHyperLink::GetUnderline() const

    return m_nUnderline

    }

    void CHyperLink::SetAutoSize(BOOL bAutoSize /* = TRUE */)

    {

    m_bAdjustToFit = bAutoSize;

    if (::IsWindow(GetSafeHwnd()))

    PositionWindow();

    }

    BOOL CHyperLink::GetAutoSize() const

    return m_bAdjustToFit

    }

    // Move and resize the window so that the window is the same size

    // as the hyperlink text. This stops the hyperlink cursor being active

    // when it is not directly over the text. If the text is left justified

    // then the window is merely shrunk, but if it is centred or right

    // justified then the window will have to be moved as well.

    void CHyperLink::PositionWindow()

    {

    if (!::IsWindow(GetSafeHwnd()) || !m_bAdjustToFit

    return;

    // Get the current window position

    CRect WndRectClientRect;

    GetWindowRect(WndRect);

    GetClientRect(ClientRect);

    ClientToScreen(ClientRect);

    CWndpParent = GetParent();

    if (pParent)

    {

    pParent->ScreenToClient(WndRect);

    pParent->ScreenToClient(ClientRect);

    }

    // Get the size of the window text

    CString strWndText;

    GetWindowText(strWndText);

    CDCpDC = GetDC();

    CFontpOldFont = pDC->SelectObject(&m_UnderlineFont);

    CSize Extent = pDC->GetTextExtent(strWndText);

    pDC->SelectObject(pOldFont);

    ReleaseDC(pDC);

    // Adjust for window borders

    Extent.cx += WndRect.Width() - ClientRect.Width(); 

    Extent.cy += WndRect.Height() - ClientRect.Height(); 

    // Get the text justification via the window style

    DWORD dwStyle = GetStyle();

    // Recalc the window size and position based on the text justification

    if (dwStyle & SS_CENTERIMAGE)

    WndRect.DeflateRect(0, (WndRect.Height() - Extent.cy)/2);

    else

    WndRect.bottom = WndRect.top + Extent.cy;

    if (dwStyle & SS_CENTER)   

    WndRect.DeflateRect((WndRect.Width() - Extent.cx)/2, 0);

    else if (dwStyle & SS_RIGHT

    WndRect.left  = WndRect.right - Extent.cx;

    else // SS_LEFT = 0, so we can't test for it explicitly 

    WndRect.right = WndRect.left + Extent.cx;

    // Move the window

    SetWindowPos(NULLWndRect.leftWndRect.topWndRect.Width(), WndRect.Height(), SWP_NOZORDER);

    }

    /

    // CHyperLink implementation

    // The following appeared in Paul DiLascia's Jan 1998 MSJ articles.

    // It loads a "hand" cursor from the winhlp32.exe module

    void CHyperLink::SetDefaultCursor()

    {

    if (m_hLinkCursor == NULL)                // No cursor handle - load our own

    {

    // Get the windows directory

    CString strWndDir;

    GetWindowsDirectory(strWndDir.GetBuffer(MAX_PATH), MAX_PATH);

    strWndDir.ReleaseBuffer();

    strWndDir += _T("");

    // This retrieves cursor #106 from winhlp32.exe, which is a hand pointer

    HMODULE hModule = LoadLibrary(strWndDir);

    if (hModule) {

    HCURSOR hHandCursor = ::LoadCursor(hModuleMAKEINTRESOURCE(106));

    if (hHandCursor)

    m_hLinkCursor = CopyCursor(hHandCursor);

    }

    FreeLibrary(hModule);

    }

    }

    LONG CHyperLink::GetRegKey(HKEY keyLPCTSTR subkeyLPTSTR retdata)

    {

    HKEY hkey;

    LONG retval = RegOpenKeyEx(keysubkey, 0, KEY_QUERY_VALUE, &hkey);

    if (retval == ERROR_SUCCESS) {

    long datasize = MAX_PATH;

    TCHAR data[MAX_PATH];

    RegQueryValue(hkeyNULLdata, &datasize);

    lstrcpy(retdata,data);

    RegCloseKey(hkey);

    }

    return retval;

    }

    void CHyperLink::ReportError(int nError)

    {

    CString str;

    switch (nError

    {

    case 0:                       str = "The operating system is out\nof memory or resources."break;

    case SE_ERR_PNF:              str = "The specified path was not found."break;

    case SE_ERR_FNF:              str = "The specified file was not found."break;

    case ERROR_BAD_FORMAT:        str = "The .EXE file is invalid\n(non-Win32 .EXE or error in .EXE image)."break;

    case SE_ERR_ACCESSDENIED:     str = "The operating system denied\naccess to the specified file."break;

    case SE_ERR_ASSOCINCOMPLETE:  str = "The filename association is\nincomplete or invalid."break;

    case SE_ERR_DDEBUSY:          str = "The DDE transaction could not\nbe completed because other DDE transactions\nwere being processed."break;

    case SE_ERR_DDEFAIL:          str = "The DDE transaction failed."break;

    case SE_ERR_DDETIMEOUT:       str = "The DDE transaction could not\nbe completed because the request timed out."break;

    case SE_ERR_DLLNOTFOUND:      str = "The specified dynamic-link library was not found."break;

    case SE_ERR_NOASSOC:          str = "There is no application associated\nwith the given filename extension."break;

    case SE_ERR_OOM:              str = "There was not enough memory to complete the operation."break;

    case SE_ERR_SHARE:            str = "A sharing violation occurred. ";

    default:                      str.Format(_T("Unknown Error (%d) occurred."), nError); break;

    }

    str += _T("Unable to open hyperlink:\n\n"/*+ str*/;

    AfxMessageBox(strMB_ICONEXCLAMATION | MB_OK);

    }

    HINSTANCE CHyperLink::GotoURL(LPCTSTR urlint showcmd)

    {

    TCHAR key[MAX_PATH + MAX_PATH];

    // First try ShellExecute()

    HINSTANCE result = ShellExecute(NULL_T("open"), urlNULL,NULLshowcmd);

    // If it failed, get the .htm regkey and lookup the program

    if ((UINT)result <= HINSTANCE_ERROR)

    {

    if (GetRegKey(HKEY_CLASSES_ROOT_T(".htm"), key) == ERROR_SUCCESS

    {

    lstrcat(key_T(""));

    if (GetRegKey(HKEY_CLASSES_ROOT,key,key) == ERROR_SUCCESS)

    {

    TCHAR *pos;

    pos = _tcsstr(key_T("\"%1\""));

    if (pos == NULL) {                     // No quotes found

    pos = _tcsstr(key_T("%1"));      // Check for %1, without quotes 

    if (pos == NULL)                   // No parameter at all...

    pos = key+lstrlen(key)-1;

    else

    *pos = '\0';                   // Remove the parameter

    }

    else

    {

    *pos = '\0';                       // Remove the parameter

    }

    lstrcat(pos_T(" "));

    lstrcat(posurl);

    USES_CONVERSION;

    result = (HINSTANCEWinExec(T2A(key),showcmd);

    }

    }

    }

    return result;

    }

    4) 在资源视图中,打开Dialog目录下的IDD_ABOUTBOX,在恰当的位置放一个静态文本框控件,将他的ID改为 IDC_LINK,属性框中的caption中添加你需要显示的文字。

    5) 找到CAboutDlg定义的源文件(test.cpp),先添加 #include "HyperLink.h" ,再在类CAboutDlg中添加超链接控件的声明 public: CHyperLink  m_cHyperhttp; 再将这个控件和ID为 IDC_LINK的静态文本框关联。实现方法是在类CAboutDlg的成员函数DoDataExchange(CDataExchange* pDX)中添加代码:DDX_Control(pDX,IDC_LINK,m_cHyperhttp)

    6) 最后在这个类的初始化(构造)函数中添加:

        CString cStrURL= L"http://www.baidu.com";//网页

        CString cStr=L"mailto:hsxw001@163.com";//邮箱

        m_cHyperhttp.SetURL(/*cStrURL*/cStr);//链接/*百度*/邮箱

        m_cHyperhttp.SetUnderline(false);//去掉下划线

    注:在默认邮件客户端中打开新邮件窗口,并自动填入收件人地址。若指定多个收件人地址,则收件人地址之间必须用分号或逗号分隔开。运行程序,点击添加静态文本框的区域(有识别)即可链接到设定的网页。

    (其他实现方法后续再做总结)

    展开全文
  • 实验目的1掌握超链接的类型2掌握各类超链接的创建3掌握超链接的状态设置实验重点1各类超链接的创建2超链接的状态设置实验难点各类超链接的创建实验内容实例1文本图片锚点邮箱链接实例2热点链接实例3欧妮雅网站导航...
  • 锚点(mao dian):其实就是超链接的一种,一种特殊的超链接 普通的超链接,&lt;a href="路径"&gt;&lt;/a&gt;是跳转到不同的页面 而锚点,&lt;a href="路径"&gt;&...

    锚点(mao dian):其实就是超链接的一种,一种特殊的超链接

    普通的超链接,<a href="路径"></a> 是跳转到不同的页面

    而锚点,<a href="路径"></a> 可以在同一个页面中不同的位置间跳转

    可以看到,跳转到锚点的超链接跟普通的超链接格式是一样的,

    1.使用锚点的步骤:

    1.1、创建跳转到id="test"的div的锚点,

    <a href="#test">锚点超链接</a>

    锚点的超链接路径一定包含"#",而后面紧跟元素的id或者name

    (所以id和name必须一样,其实我试了有时name是不生效的)

    1.2、建立锚点目标

    锚点可以在同一页面的不同位置间跳转,其实就是在元素间跳转,常用的场景就是页面很长,让用户方便在页面不同部分间跳转

    建立锚点目标,只需要给目标元素增加id或者name即可,推荐id:

    <div id="test" name="test">定位到的位置</div>
    或
    <h3 id="test" name="test">定位到的位置</h3>
    

    2、锚点使用总结:

    2.1. 建立锚点的元素必须要有id或name属性,最好两个都有

    2.2. 锚点超链接一定包含井号"#",锚点超链接都在链接的最末端

    2.3. 同一个页面不同部分的跳转,锚点的写法

    <a href="#test"></a> 锚点超链接        
    <p id="test"></p> 目标元素

    2.4. 不同页面跳转,同时存在锚点

    <a href="a.html#test"></a>  锚点超链接
    <div id="test"/>   目标元素:在a.html页面

    (先跳到a.html页面,然后再寻找id=test的元素)

    2.5. 不同页面带参数跳转,同时存在锚点

    目标元素:a.php?p=abc页面的<div id="test"/>   锚点超链接:<a href="a.php?p=abc#test"></a>

    展开全文
  • 在前面的文章中我们已经介绍了通过菜单的方法给EXCEL添加超链接,其实,EXCEL的查找和引用函数中HYPERLINK函数同样可以实现添加超链接的功能,而且操作步骤简单、易于掌握,今天,小编就来和大家一起学习一下这个...
  • 在前一篇文章里我们介绍了安装django、创建web站点及业务模块、路由、视图模板等基础知识,能够搭建一个业务页面显示了。但如何实现业务模块之间跳转、使用常见...为了整个站点完成构造,下面我们分步骤来实践本...
  • 好好学习,天天向上本章主要内容是:了解原生 ajax 请求步骤,下一章做详解工作中经常使用各种方便封装 AJAX 库这里去知道它原理1、发送 ajax 请求步骤创建 XMLHttpRequest 类型对象准备发送,打开与一个...
  • 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和... 今天,下班回来,闲来无聊之际,由于每天上班从早到晚,累了,是想坐下来,歇息,琢磨了一下,有点意向,便想下载 安装创建一个数...
  •  新建一个Hello world详细步骤可以参见  Android教程之三:第一个Android应用,HelloWorld  。创建设置如下:  Project name:HelloTextView  Build Target :android 2.2  Application name:HelloTextView...
  • 新建一个Hello world详细步骤可以参见​。创建设置如下: Project name:HelloTextView Build Target :android 2.2 Application name:HelloTextView Package name:com.flysnow create Activity:H
  • 新建一个Hello world详细步骤可以参见第一个Android应用,HelloWorld 。创建设置如下: Project name:HelloTextView Build Target :android 2.2 Application name:HelloTextView Package name:...
  • 静态文本(static text)作为对话框常用控件之一,一般情况下起着指示说明作用,让用户明白对话框中相关信息和功能,这种情况一般不关联...打开创建Demo项目,在对话框中添加一个group box,3个static text
  • wxWidgets 中没有专门 wxRichTextCtrl 类,只有 wxTextCtrl 类,要使用 RichEdit 话只要在创建 wxTextCtrl 控件时指定 wxTE_...用上述步骤创建出来文本控件已经可以自动识别超链接了,但是想要让它对鼠标点击动作
  •  新建一个Hello world详细步骤可以参见  Android教程之三:第一个Android应用,HelloWorld  。创建设置如下:  Project name:HelloTextView  Build Target :android 2.2  Application name:...
  • 新建一个Hello world详细步骤可以参见 Android教程之三:第一个Android应用,HelloWorld 。创建设置如下: Project name:HelloTextViewBuild Target :android 2.2Application name:HelloTextViewPackage name...
  • 新建一个Hello world详细步骤可以参见 Android教程之三:第一个Android应用,HelloWorld 。创建设置如下: Project name:HelloTextView Build Target :android 2.2 Application name:HelloTextView ...
  • 在前一篇文章里我们介绍了安装django、创建web站点及业务模块、路由、视图模板等基础知识,能够搭建一个业务页面显示了。但如何实现业务模块之间跳转、使用常见...为了整个站点完成构造,下面我们分步骤来实践本...
  • SSM详细步骤

    2018-03-06 08:27:13
    SSM三大框架配置整合 第一步:创建一个Maven工程 第二步:勾上第一个,点击下一步 第三步:给工程取名字,并把Packaging改为”war”,点击完成 第四步:右击选择属性,选择Maven下Project Facets,将Dynamic ...
  • 轮播部分效果一共分为:滚动界面动画、制作画面中白色椭圆与画面绑定和为图片设置超链接三个部分。 第一部分滚动界面动画 1、我们先导入一张图片到工作区,鼠标右键选择“转化为创建动态面板”。 右键点击状态1...
  • 初始化创建Python Django项目

    千次阅读 2018-08-21 00:04:43
    步骤二、点击菜单上“Downloads”,点击上方指示黄色文字不同系统的超链接,点击进入,比如,我下面以windows系统来演示,其他系统类似。 步骤三、选择点击“windows”,进入如下页面,根据自己电脑系统...
  • 懒得截图了,一张图配下面步骤搞定。 1、右键项目,选择propertities后选择图中①(被遮住了); ...然后在把②处勾选上。此时④位置会出现东东,点击蓝色超链接...补充:在步骤2中,④位置可能没有出现应该出现结...
  •  具体的步骤如下: 1、首先在windows 服务器下创建一个WEB应用,并且将要共享的文件做一个超链接,例如你用linux下载了一个文件 “webmin.rpm”,那么就用HTML标签创建一个超链接 2、启动wind
  • 话不多说,言归正传,直接上步骤:1 创建新群发我们选择自建图文2 搜索目标公众号内视频标题在文章内添加超链接选择目标公众号搜索选中目标公众号搜索公共号内文章名称打开开发者工具选择network,并重新搜索...
  • 展开全部JSP页面中标签里值传到另一个32313133353236313431303231363533e59b9ee7ad9431333431366338JSP中步骤如下:1,首先需要在这里创建一个名为a.htmlHTML页面。2,然后编写一个简单JSP页面,我们定义b....

空空如也

空空如也

1 2 3 4 5 6
收藏数 103
精华内容 41
关键字:

创建超链接的步骤