亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vc中為應用程序實現超鏈接功能.txt

?? VC中為應用程序實現超鏈接功能,TXT文檔,與大家分享
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
在VC中為應用程序添加圖形超鏈接功能
  目前很多windows軟件的版權對話框中都設有超級鏈接,這些鏈接或提供公司網址,或提供電子郵件信箱,使操作者能夠非常方便地與公司和作者聯系,同時也為公司作了很好的宣傳。一般情況下,界面上某行文字下面有一行藍色的橫線,標志該字符串提供超鏈接功能,當用戶將鼠標移動到文字上時,鼠標變成手狀,如果用戶此時單擊鼠標,程序將啟動瀏覽器打開某個網頁或啟動OutLook讓用戶給指定的郵箱發送電子郵件。如果能在自己寫的軟件中實現這個功能,定會使程序大增光彩。本實例通過定義一個CmapHyperLink類實現了圖像的超鏈接功能,程序編譯運行后的界面如圖一所示: 


圖一、實現圖形超鏈接功能的程序界面圖  

  一、 實現方法

  著名的CHyperLink類只能提供文字鏈接,不能用于圖形控件的超鏈接,于是本實例在其基礎上修改了一下,定義了一個CMapHyperLink類,該類現在只對圖形控件(picture control)生效。用戶可使用成員函數void SetURL(CString strURL)設置要訪問的互聯網地址,如SetURL("http://www.google.com");使用成員函數void SetTipText(CString strURL)設置超鏈接提示條(CToolTipCtrl)的文字內容,如果不在此設置,那就默認是您設置的URL地址,如SetTipText("歡迎訪問強大的google搜索");使用成員函數void SetLinkCursor(HCURSOR hCursor)設置鼠標在超鏈接狀態的圖標,默認是手型圖標。該類還提供了HCURSOR GetLinkCursor() const、void SetAutoSize(BOOL bAutoSize = TRUE)等成員函數,提供了一些相應的輔助功能,讀者朋友可以參考代碼部分。這里主要講述三個主要的問題:一是如何實現提示功能;二是在控件上如何改變鼠標的形狀,給用戶提供另外一種暗示-當前區域提供超鏈接功能;三是如何根據網頁或信箱地址啟動超鏈接功能。

  Visual C++提供了CCtoolTipCtrl類用來實現提示功能。工具提示控制是一個小窗口,在其中顯示單行文字用以描述應用程序中的工具的用途。這里的工具所指的既可以是窗口(如工具欄上的按鈕),也可以是一個固定的區域。大家都知道利用APPWIZARD生成 的應用程序中工具欄帶有提示,當你將鼠標放在工具欄某一個按鈕上時,將顯示一個小提示框告訴你按鈕的功能,這種功能方便了軟件的使用者。但是在超鏈接區如何實現提示呢?首先聲明一個CtoolTipCtrl類的變量,調用Create()成員函數創建通用工具提示,并將它附在CtoolTipCtrl對象上,然后調用CtoolTipCtrl類的AddToo()成員函數注冊工具提示控制,從而為光標放在規定的窗口或區域內時顯示工具提示做準備。該函數的原形為: 

BOOL AddTool( CWnd* pWnd,LPCTSTR lpszText, LPCRECT lpRectTool,UINT nIDTOOL ); 

  其中參數pWnd為指向包含工具提示控制的窗口指針,參數lpszText為所要在工具提示中顯示的文字,參數lpRectTool為工具書提示所對應的窗口或規定區域,參數nIDTOOL為工具提示的標志號。

  在調用CtoolTipCtrl類的Active()函數激活提示后,最后要作的工作是調用CtoolTipCtrl類的RelayEvent()函數將鼠標的WM_LBUTTONDOWN、WM_MOUSEMOVE、WM_LBUTTONUP等消息傳遞給工具提示控制對象,以便控件進行提示處理。

  下面的代碼實現了在應用程序的視圖區顯示對應點的坐標為例: 

//在文件頭定義的全局變量
CToolTipCtrl m_ToolTip;//工具提示對象
char string[50];//用來存放提示文字
CRect rect;//用來存放工具提示所對應的窗口的尺寸
#define IDC_CONST 12345//定義的工具提示標志號,注意不要和系統沖突
void CTestView::OnMouseMove(UINT nFlags, CPoint point) 
{
 // TODO: Add your message handler code here and/or call default
 wsprintf(string,"%d,%d",point.x,point.y);
 GetClientRect(&recty);
 m_ToolTip.AddTool(this,string,&rect,IDC_CONST);
 m_ToolTip.Activate(TRUE);
 CView::OnMouseMove(nFlags, point);
}
 LRESULT CTestView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
 // TODO: Add your specialized code here and/or call the base class
 switch(message)
  {case WM_LBUTTONDOWN:
   case WM_RBUTTONDOWN:
   case WM_MBUTTONDOWN:
   case WM_LBUTTONUP:
   case WM_MBUTTONUP:
   case WM_RBUTTONUP:
   case WM_MOUSEMOVE:
   {MSG msg;
    msg.hwnd=m_hWnd;
    msg.message=message;
    msg.wParam=wParam;
    msg.lParam=lParam;
    m_ToolTip.RelayEvent(&msg);
   }
  }
  return CView::WindowProc(message, wParam, lParam);
} 

  如果用戶想動態的改變提示字符串,可以調用CtoolTipCtrl類的成員函數UpdateTipText()來實現,該函數的原型為:

void UpdateTipText( LPCTSTR lpszText, CWnd* pWnd, UINT nIDTool = 0 ); 

  該函數的參數的含義與成員函數AddTool()的參數的含義大同小異,這里不再贅述。

  對于超鏈接來說,一般會在超鏈接區域改變鼠標的形狀,顯示手狀的鼠標,提示這是一個超鏈接區域。當然可以在程序中添加一個手狀的光標資源,然后使用LoadCursor()函數等加載,這種方法對廣大讀者朋友一定是耳熟能詳了,所以為了擴大讀者朋友的編程思路,這里介紹一種從Windows的winhlp32.exe文件中加載光標資源,代碼如下:

void CMapHyperLink::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("//winhlp32.exe");
  // This retrieves cursor #106 from winhlp32.exe, which is a hand pointer
  HMODULE hModule = LoadLibrary(strWndDir);
  if (hModule) {
   HCURSOR hHandCursor = ::LoadCursor(hModule, MAKEINTRESOURCE(106));
   if (hHandCursor)
    m_hLinkCursor = CopyCursor(hHandCursor);
  }
  FreeLibrary(hModule);
 }
} 

  為了根據網頁或信箱地址實現超鏈接功能,需要用到一個WINDOWS API函數ShellExecute(),其原型為: 

HINSTANCE ShellExecute( 
 HWND hwnd, //窗口句柄
 LPCTSTR lpOperation, //操作類型
 LPCTSTR lpFile, //文件指針
 LPCTSTR lpParameters, //文件可帶的參數
 LPCTSTR lpDirectory, //缺省目錄
 INT nShowCmd //顯示方式
); 

  ShellExecute()函數用于打開或執行一個文件,在調用此函數時只須指定要打開或執行的文件名,而不必管用什么程序去打開或執行文件,WINDOWS會自動根據要打開或執行的文件去判斷該如何執行文件或用什么程序去打開文件。函數中的參數lpOperation說明所要執行的操作,該值可以設置為"Open"、"Print"、"Explore",分別用來進行"打開"、"打印"、"瀏覽"操作。下面給出了ShellExecute()函數的一些使用方法:

  (1)打開一個應用程序:

ShellExecute(this->m_hWnd,"open","calc.exe","","", SW_SHOW );
ShellExecute(this->m_hWnd,"open","notepad.exe", "c://MyLog.log","",SW_SHOW ); 

 ?。?)打開一個同系統程序相關連的文檔

ShellExecute(this->m_hWnd,"open", "c://abc.txt","","",SW_SHOW ); 

 ?。?)打開一個網頁

ShellExecute(this->m_hWnd,"open", " http://www.google.com","","",/ SW_SHOW ); 

 ?。?)激活相關程序,發送EMAIL

ShellExecute(this->m_hWnd,"open","mailto:nishinapp@yahoo.com","","", W_SHOW ); 

 ?。?)用系統打印機打印文檔

ShellExecute(this->m_hWnd,"print", "c://abc.txt","","", SW_HIDE); 

 ?。?)用系統查找功能來查找指定文件

ShellExecute(m_hWnd,"find","d://nish", NULL,NULL,SW_SHOW); 

 ?。?)啟動一個程序,直到它運行結束

SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = "c://MyProgram.exe"; 
ShExecInfo.lpParameters = ""; 
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL; 
ShellExecuteEx(&ShExecInfo);
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
或:
PROCESS_INFORMATION ProcessInfo; 
STARTUPINFO StartupInfo; //This is an [in] parameter
ZeroMemory(&StartupInfo, sizeof(StartupInfo));
StartupInfo.cb = sizeof StartupInfo ; //Only compulsory field
if(CreateProcess("c://winnt//notepad.exe", NULL, 
NULL,NULL,FALSE,0,NULL,
NULL,&StartupInfo,&ProcessInfo))
{ 
 WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
 CloseHandle(ProcessInfo.hThread);
 CloseHandle(ProcessInfo.hProcess);
} 
else
{
 MessageBox("The process could not be started...");
} 

  (8)顯示文件或文件夾的屬性

SHELLEXECUTEINFO ShExecInfo ={0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_INVOKEIDLIST ;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = "properties";
ShExecInfo.lpFile = "c://"; //can be a file as well
ShExecInfo.lpParameters = ""; 
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo); 

  Windows還提供了一個與ShellExecuteEx()函數相類似的函數WinExec(),它相對于ShellExecuteEx()來說更簡單易用,只是功能沒有它強大而已,具體使用方法讀者朋友自行參閱MSDN。

  二、編程步驟

  l、啟動Visual C++6.0,生成一個基于對話框的應用程序,將該程序命名為"Test";

  2、在對話框上放置一個靜態控件,并顯示一幅圖象;

  3、使用Class Wizard為應用程序添加一個CMapHyperLink類,其基類為CStatic;

  4、在對話框中添加一個CmapHyperLink類對象m_MapHyperLink1;

  5、添加代碼,編譯運行程序。

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲综合另类| 亚洲精品日韩一| 5月丁香婷婷综合| 欧美日韩一区二区三区四区五区| 99久久精品情趣| 色视频欧美一区二区三区| 一本到不卡免费一区二区| 99re亚洲国产精品| 欧美视频一区二区在线观看| 欧美日韩国产成人在线免费| 56国语精品自产拍在线观看| 日韩亚洲欧美一区二区三区| 久久免费偷拍视频| 国产精品久久久久毛片软件| 国产精品乱子久久久久| 亚洲一区二区三区在线播放| 日韩中文字幕亚洲一区二区va在线 | 久久婷婷久久一区二区三区| 国产色婷婷亚洲99精品小说| 国产精品欧美精品| 亚洲bt欧美bt精品777| 久久福利资源站| av一区二区久久| 欧美三级电影在线观看| 精品88久久久久88久久久| 国产精品不卡一区| 天天综合网天天综合色| 国产经典欧美精品| 欧美天天综合网| 久久久久成人黄色影片| 夜夜精品浪潮av一区二区三区| 男人的j进女人的j一区| 91丨九色丨尤物| 日韩女优制服丝袜电影| 亚洲精品久久久蜜桃| 极品销魂美女一区二区三区| 91猫先生在线| 国产调教视频一区| 日本欧美一区二区三区乱码| 91在线视频网址| 日韩精品自拍偷拍| 亚洲一区二区精品久久av| 国产99久久久国产精品潘金网站| 欧美日韩另类一区| 亚洲欧美激情一区二区| 久久福利视频一区二区| 欧美日韩免费在线视频| 亚洲欧洲无码一区二区三区| 精品一区二区日韩| 91精品国产91热久久久做人人| 日韩一区中文字幕| 丁香天五香天堂综合| 欧美成va人片在线观看| 日韩一区精品视频| 在线精品国精品国产尤物884a| 亚洲国产精品ⅴa在线观看| 久久精品免费看| 69堂亚洲精品首页| 午夜精品久久久久久久99樱桃| 91丨九色丨黑人外教| 国产精品久久久久久久久免费桃花 | 欧美日本高清视频在线观看| 日韩伦理免费电影| 国产成人免费网站| 精品动漫一区二区三区在线观看| 日韩精品一二三四| 欧美一区二区三区性视频| 午夜精品123| 666欧美在线视频| 午夜精品一区在线观看| 欧美日韩第一区日日骚| 亚洲观看高清完整版在线观看| 一本到不卡免费一区二区| 亚洲精品免费播放| 欧美午夜片在线看| 日韩综合小视频| 日韩视频免费直播| 久草这里只有精品视频| 精品国产一区二区三区av性色| 久久99久久久久| 久久久久久久综合| 波多野结衣中文字幕一区二区三区| 国产欧美一区二区精品仙草咪| 国产精品99久| 日韩一区在线看| 欧美综合一区二区| 麻豆视频观看网址久久| 欧美www视频| 国产真实乱偷精品视频免| 久久精品欧美一区二区三区不卡| 福利一区二区在线| 亚洲免费观看高清完整版在线观看| 91麻豆.com| 日韩精品电影一区亚洲| 久久久噜噜噜久久人人看| 99精品在线观看视频| 日韩国产欧美在线观看| 久久婷婷国产综合国色天香| jvid福利写真一区二区三区| 亚洲综合久久av| 精品三级av在线| 91亚洲大成网污www| 日韩成人免费在线| 中文字幕在线播放不卡一区| 欧美中文字幕一区| 国产精品自产自拍| 亚洲一区二区欧美| 国产喷白浆一区二区三区| 在线视频国内自拍亚洲视频| 日本亚洲一区二区| 亚洲欧美激情小说另类| 精品国产电影一区二区| 欧美怡红院视频| 国产精品羞羞答答xxdd| 日韩成人伦理电影在线观看| 国产精品麻豆久久久| 日韩女优av电影| 欧美亚洲另类激情小说| 国产精品2024| 麻豆91精品视频| 亚洲成人精品一区二区| 国产日韩欧美激情| 欧美videofree性高清杂交| 欧美亚洲一区三区| www.日韩在线| 国产麻豆精品在线| 免费三级欧美电影| 精品久久久久久最新网址| 日本在线不卡视频一二三区| 久久久夜色精品亚洲| 欧美网站大全在线观看| 国产福利一区二区三区在线视频| 亚洲1区2区3区视频| 亚洲人成网站影音先锋播放| 2024国产精品| 日韩小视频在线观看专区| 在线影院国内精品| 91丨九色丨蝌蚪富婆spa| 国产成人午夜高潮毛片| 国产在线观看免费一区| 久久精品国产第一区二区三区| 午夜精品久久久久影视| 亚洲综合一二区| 亚洲永久精品大片| 亚洲已满18点击进入久久| 亚洲色图制服丝袜| 亚洲色图在线视频| 一区二区三区高清在线| 一区二区三区久久久| 亚洲精品福利视频网站| 亚洲精品一二三四区| 一区二区三区免费在线观看| 亚洲另类在线一区| 亚洲国产成人av好男人在线观看| 亚洲欧美日韩中文字幕一区二区三区| 中文字幕一区二区三区色视频| 久久久久久一级片| 亚洲国产精品黑人久久久| 中文字幕一区二区三区四区不卡 | 国产精品二区一区二区aⅴ污介绍| 精品免费日韩av| 国产肉丝袜一区二区| 亚洲欧美日韩中文播放| 亚洲成人一区在线| 久久99精品久久久久久久久久久久| 国内精品免费**视频| 成人国产视频在线观看| 欧美亚洲国产bt| 日韩欧美三级在线| 国产精品麻豆视频| 亚洲国产综合91精品麻豆| 蜜桃av一区二区三区电影| 国产伦理精品不卡| 色综合久久综合| 337p亚洲精品色噜噜噜| 国产欧美精品国产国产专区| 亚洲欧美国产毛片在线| 日韩国产一区二| 福利视频网站一区二区三区| 欧美午夜免费电影| 久久久久久日产精品| 亚洲电影一区二区三区| 黄页网站大全一区二区| 99精品视频在线观看| 91精品免费观看| 亚洲天堂福利av| 美女网站色91| 99视频精品在线| 精品国产一区久久| 亚洲国产精品影院| 成人黄色一级视频| 91精品欧美福利在线观看| 国产精品久久久久三级| 久久激情综合网| 欧美日韩亚洲丝袜制服| 国产精品丝袜久久久久久app| 视频一区在线视频| 一本大道久久精品懂色aⅴ| 精品国产三级电影在线观看| 亚洲午夜视频在线|