1. 程式人生 > >Visual C++網路程式設計經典案例詳解 第5章 網頁瀏覽器 製作個性化介面 如何實現收藏夾功能 新增訊息響應函式

Visual C++網路程式設計經典案例詳解 第5章 網頁瀏覽器 製作個性化介面 如何實現收藏夾功能 新增訊息響應函式

使用者將網址新增到收藏夾以後
便可以直接單擊選單選單中的網址進行瀏覽
使用者單擊選單的訊息響應函式重要

首先在CMainFrame類的標頭檔案MainFrm.h 中定義一個彈出選單的訊息響應函式
程式碼如下

afx_msg void OnMenuClick(int nID); //定義響應函式

然後在訊息對映裡新增選單命令訊息巨集ON_COMMAND_RANGE
程式碼如下

BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_COMMAND(ID_NEXT, OnNext)
ON_COMMAND(ID_PRE, OnPre)
ON_COMMAND(ID_REFRUSH, OnRefrush)
ON_COMMAND(ID_VIEWRECORD, OnViewrecord)
ON_BN_CLICKED(IDC_BUTTON, OnButton)
ON_CBN_SELCHANGE(IDC_COM, OnSelchangeCom)
ON_COMMAND(ID_ADDNETADDRES, OnAddnetaddres)
ON_COMMAND(1,i,OnMenuClick)  //選單訊息命令巨集
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

訊息巨集ON_COMMAND_RANGE的作用是當用戶操作一個ID範圍內的選單時
呼叫同一個訊息響應函式進行處理
該函式的引數表示當前被使用者單擊選單的ID號

函式GetMenuString()通過ID號可以獲取該選單上的文字
如果獲取成功,
則呼叫CHtmlView類的函式Navigate2()瀏覽網頁
具體程式碼如下

void CMainFrame::OnMenuClick(int nID)
{
	menu.GetMenuString(nID,menustr,MF_SYCOMMAND); //獲取瀏覽網頁
	(CHTML1View*)GetActiveView()->Navigate2(menustr,NULL,NULL);
	//呼叫函式瀏覽網頁。
}

上述程式碼實現的網址收藏夾的功能
使用者可以根據程式碼擴充套件其功能
例如將網址寫入檔案,儲存在工作目錄下
待程式啟動時讀取檔案中的資料
這樣
使用者儲存的資料不易丟失,
即使程式發生異常,
使用者也可以從目錄下直接開啟檔案檢視