很多windows軟件的版權(quán)對話框中都設(shè)有超級鏈接,這些鏈接或提供公司網(wǎng)址,或提供電子郵件信箱,使操作者能夠非常方便地與公司和作者聯(lián)系,同時也為公司作了很好的宣傳。如果能在自己寫的軟件中實現(xiàn)這個功能,定會使程序大增光彩。
---- 實現(xiàn)這個功能要用到一個WINDOWS API函數(shù)ShellExecute,其原形為:
HINSTANCE ShellExecute( HWND hwnd, //窗口句柄 LPCTSTR lpOperation, //操作類型
LPCTSTR lpFile, //文件指針 LPCTSTR lpParameters, //文件可帶的參數(shù)
LPCTSTR lpDirectory, //缺省目錄 INT nShowCmd //顯示方式 );
---- ShellExecute函數(shù)用于打開或執(zhí)行一個文件,在調(diào)用此函數(shù)時只須指定要打開或執(zhí)行的文件名,而不必管用什么程序去打開或執(zhí)行文件,WINDOWS會自動根據(jù)要打開或執(zhí)行的文件去判斷該如何執(zhí)行文件或用什么程序去打開文件。以下給出一個完整實例,具體實步驟:
創(chuàng)建一個基于對話框的應(yīng)用程序,命名為hyperlink;
打開資源編輯器,在對話框上添加兩個static text控件和兩個button控件。
---- Static1和button1并列排放,Static1和button1并列排放。
---- 將static1的ID設(shè)為ID_STATIC1,caption設(shè)為:計算機世界日報:,button1的ID設(shè)為ID_BUTTON1,caption設(shè)為:http://www.computerworld.com.cn,并選中flat屬性。將static2的ID設(shè)為:ID_STATIC2,caption設(shè)為為:給我寫信:,button2的ID設(shè)為ID_BUTTON2,caption設(shè)為: west_virginia@netease.com,并選中flat屬性。
創(chuàng)建一個新光標,將其圖標編輯成一個手的圖像,其ID命名為ID_CURSOR1;
給ChyperlinkDlg類增加一個WM_SETCURSOR消息處理函數(shù),其代碼如下:
BOOL ChyperlinkDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { Crect
rcButton1,rcButton2; Cpoint ptCursor; CWnd *pStatic1=GetDlgItem(IDC_BUTTON1);
CWnd *pStatic2=GetDlgItem(IDC_BUTTON2); pStatic1->GetWindowRect (rcButton1);
pStatic2->GetWindowRect (rcButton2); GetCursorPos(&ptCursor); if
(rcButton1.PtInRect (ptCursor) rcButton2.PtInRect (ptCursor)) { CWinApp *pApp=AfxGetApp();
HICON hIconBang=pApp->LoadCursor (IDC_CURSOR1); SetCursor(hIconBang); return
TRUE; } else return Cdialog::OnSetCursor (pWnd, nHitTest, message); }
其作用是當鼠標位于button1和button2控件上時,
將其形狀設(shè)為手形。 5、 給IDC_BUTTON1增加BN_CLICKD消息處理函數(shù),代碼如下:
void ChyperlinkDlg::OnButton1() { // TODO: Add your control notification handler
code here ShellExecute(m_hWnd,NULL, "http://www.computerworld.com.cn",
NULL,NULL,SW_SHOWMAXIMIZED); } 6、 給IDC_BUTTON2增加BN_CLICKD消息處理函數(shù),代碼如下:
void ChyperlinkDlg::OnButton2() { // TODO: Add your control notification handler
code here ShellExecute(m_hWnd,NULL, "mailto:west_virginia@netease.com",
NULL,NULL,SW_SHOWMAXIMIZED); }
---- 運行此程序,在對話框上顯示計算機世界日報的首頁鏈接和作者的電子郵件地址,在其上點鼠標左鍵后將自動進入計算機日報首頁或啟動郵件收發(fā)程序給作者寫信,效果很理想。讀者可在此基礎(chǔ)上進一步完善,使其更專業(yè)化,也可將其寫成類,用起來更方便。
---- ShellExecute是一功能很強大的函數(shù),本文只使用了它的一種用法,更詳細全面的用法可參考Visual studio 6.0中所帶的MSDN library 。