荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: 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软件 网络书店