荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Rage (Virginia), 信区: Visual
标  题: 给VC程序加入超级链接功能
发信站: BBS 荔园晨风站 (Thu Nov  9 12:27:14 2000), 转信

我们现在所设计的程序中,或多或少都会涉及到Internet操作,这就需要我们的程
序具有初步的Internet处理能力。本文将向大家介绍把Internet的超级链接(
Hyper Link)能力加入到我们用VC++设计的程序中的方法。

  Win32 API函数中有一个函数ShellExcute,它的原型是:

  HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR
lpFile,

  LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd );

  这个函数可以使用已经在Windows注册的相关程序打开Windows系统中的文件。
例如给出一个URL到lpFile参数中,系统会启动浏览器去浏览网址;给出一个.DOC
文档到lpFile中,系统会使用Word打开这个文档。
我们利用Visual C++向导生成一个单文档界面的窗口程序框架,如图1。生成一个
新的对话框。用AppWizard建立一个基于通用窗口的新类CHyperLinkWnd,并修改代
码如下:

  CHyperLinkWnd::CHyperLinkWnd() //构造函数

  { m_hLinkCursor = AfxGetApp()-〉LoadCursor(IDC_LINK); //引入手指形状
的光标 }

  void CHyperLinkWnd::OnMouseMove(UINT nFlags, CPoint point)

  { ::SetCursor(m_hLinkCursor);//当鼠标在窗口上移动,光标变成手指状

   CWnd::OnMouseMove(nFlags, point);}

  BOOL CHyperLinkWnd::Create( const RECT&& rect, CWnd? pParentWnd)



  //创建窗口

  { return CWnd::Create ( NULL, NULL, WS_CHILD|WS_VISIBLE, rect,
pParentWnd,NULL,NULL);}

  BOOL CHyperLinkWnd::SetLinkString(CString m_LinkString)

  { LinkString

  =m_LinkString;

  //设置窗口的提示信息

   return TRUE; }

  void CHyperLinkWnd::SetLink(CString m_Link)

  { Link=m_Link; //设置链接网址信息 }
void CHyperLinkWnd::OnLButtonDown(UINT nFlags, CPoint point)

  { ::ShellExecute(this-〉m_hWnd,"open",Link,NULL,NULL,
SW_SHOWMAXIMIZED); }

  void CHyperLinkWnd::OnPaint()

  { CFont? Font=NULL;

  CPaintDC dc(this); //设置超级链接中的显示字体信息,即蓝色有下划线

   dc.SetTextColor(RGB(0, 0, 255));

   dc.SetBkColor(::GetSysColor(COLOR_3DFACE));

    m_font=dc.GetCurrentFont();

   LOGFONT lFont;

   m_font-〉GetObject(sizeof(lFont), &&lFont);

   m_font=NULL;



   m_font=new CFont();

   lFont.lfUnderline=TRUE;

   m_font-〉CreateFontIndirect(&&lFont);

   dc.SelectObject(m_font);

   dc.TextOut(0,0,LinkString);}

  //使用这个类的一个范例,即在一个对话框中使用这些超级链接

  BOOL CNetPrice::OnInitDialog()

  { RECT rect;

  HyperLinkWnd[0]=new CHyperLinkWnd(); //使用这个类,可以先在对话框中
用一个CStatic框定位,并去掉它的Visible属性,然后用代码取得它的位置,并将
超级链接窗口放上去


  m_Canton.GetWindowRect(&&rect);

  this-〉ScreenToClient(&&rect);

  HyperLinkWnd[0]-〉SetLinkString("广州太平洋电脑城");

  HyperLinkWnd[0]-〉SetLink("www.pconline.com.cnt");

  HyperLinkWnd[0]-〉Create(rect,this);

  ……//略掉部分重复代码

  HyperLinkWnd[6]=new CHyperLinkWnd();//下面这个是使用邮件链接的例子


  m_SendEMail.GetWindowRect(&&rect);

  this-〉ScreenToClient(&&rect);


  HyperLinkWnd[6]-〉SetLinkString("发邮件给总公司");

  HyperLinkWnd[6]-〉SetLink("MailTo:Alexandrite@cmmail.com");

  HyperLinkWnd[6]-〉Create(rect,this);

  return TRUE;}

  最后,编译连接,得到一个可以使用超级链接的VC++例子。


--

※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.28.184]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店