中华网通行证
用户名 密码
  科技动态 硬件广场 下载基地 网络教室 网络冲浪 科学博览 移动时代 手机上网 桌面壁纸 科技商情  

给VC程序加入超级链接功能
苏水荣 2000-11-07 15:42:27

  我们现在所设计的程序中,或多或少都会涉及到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打开这个文档。
18392_3053_001018b2.jpg
  图1

  我们利用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++例子。

赛迪网
相关报道
用VC制作带有滚动字幕的软件封面 (2000-10-26 14:51:05)




本站检索



中华网推荐

·国家级治脑病新药思维源
·中藏药治疗脑病新突破
·治类风湿,强直性脊柱炎
·养肾·痛风·长寿
·肝病泌尿脑萎缩新药介绍
·强直性脊柱炎康复乐园
·让中医辩证不孕不育
·国医治股骨头坏死一绝
·乙肝为何久治不愈?
·二千元垄断批发做老板
·中医中药专治前列腺
·治牛皮癣白癜风已成现实
·专治痛风病的白衣天使
·不孕不育的杏林奇葩
·专卖店零售管理系统





   

网络教室编辑信箱