青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

我的玻璃盒子

ATL與網頁進行事件交互(連載中……)

以前我們為了編寫一個漂亮的程序,需要用VC進行客戶區非客戶區重繪,需要維護圖片載入、GDI繪制、消息處理、重載各種控件……,雖然很多人都是這么做的,包括我最近做的項目中,仍然使用GDI在做很多界面上的事情。但是,目前似乎程序結合Web頁面,共同去做些事情仿佛越來越流行。當然,界面編程還是離不開GDI或GDI+,我這里只是記錄一些我認為未來在寫軟件、做項目中可能會使用的一些技術——當然,這種技術已經很多人都在用了,而且肯定用的比我好,希望玩兒的比較溜的多包涵文中的錯誤和不足。

從今天開始,我計劃用1、2個月的時間陸續寫一些關于使用ATL/WTL和網頁交互的文字,包括使用COM來操作網頁元素,以及對網頁元素事件的響應。 

無論是用MFC/ATL/WTL,無論是Insert一個Microsoft Web Browser的ActiveX控件,還是動態創建了一個Browser實例,甚至是你要直接操作Windows系統的IE,我們首先要做的事情就是獲得IE Browser的接口。

我們首先來編寫一個WTL的示例程序開始說明。

(未完待續)

2008年1月16日
最近一段時間實在是太忙了,剛剛把新產品的需求分析弄完。下一個產品的需求分析馬上又要來了。郁悶。
現在編碼的工作基本都交代出去了,自己已經沒有多少時間編碼了,很多新的技術和細節我已經不擅長了,不知道這是好是壞。不過最近項目管理的事情倒是學到了不少。

廢話少說,我還是盡量抽空把這個文章寫完。

使用WTL向導做一個標準的對話框程序出來,記得要把Enable ActiveX Control Hosting的選項勾上。然后丟一個Microsoft Web Browser的ActiveX控件上去,ID比方說是IDC_EXPLORER。

想讓對話框能夠接收WebBrowser控件的事件,需要為對話框增加一些繼承類。首先我們定義這樣一個東東:

#define WebBrowser IDispEventImpl<IDC_EXPLORER, CMainDlg, &DIID_DWebBrowserEvents2, &LIBID_SHDocVw, 1, 0>

然后添加到對話框的繼承列表中,如下:

class CMainDlg : public CAxDialogImpl<CMainDlg>public CUpdateUI<CMainDlg>,
        
public CMessageFilter, public CIdleHandler, public WebBrowser

到stdafx.h中添加這幾個必要的頭文件:

#include <exdisp.h>
#include 
<exdispid.h>
#include 
<mshtml.h>
#include 
<mshtmdid.h>
OK,我們希望處理的是對話框上那個WebBrowser控件的事件,因此,需要維護一個該控件的成員變量:
CComPtr<IWebBrowser2> m_pWeb2;
接下來,選擇我們希望處理的網頁事件。首先添加消息響應宏,然后添加兩個事件,如下:
BEGIN_SINK_MAP(CMainDlg)
        SINK_ENTRY_EX(IDC_EXPLORER, DIID_DWebBrowserEvents2, DISPID_DOCUMENTCOMPLETE, OnDocumentComplete) 
        SINK_ENTRY_EX(IDC_EXPLORER, DIID_DWebBrowserEvents2, DISPID_BEFORENAVIGATE2, OnBeforeNavigate2)
    END_SINK_MAP()
我們上面希望處理兩個事件:OnBeforeNavigate2和OnDocumentComplete。下面是這兩個事件的實現體:
void __stdcall OnDocumentComplete(IDispatch *, VARIANT* )
{
    MessageBox(_T(
"Current document complete!"),_T("Info"),MB_OK|MB_ICONEXCLAMATION);
}


void __stdcall CMainDlg::OnBeforeNavigate2 (
    IDispatch
* pDisp, VARIANT* URL, VARIANT* Flags, VARIANT* TargetFrameName,
    VARIANT
* PostData, VARIANT* Headers, VARIANT_BOOL* Cancel )
{
    MessageBox(_T(
"Before navigate!"),_T("Info"),MB_OK|MB_ICONEXCLAMATION);
}
;

下面我們讓對話框啟動時,讓嵌入的Web Browser ActiveX控件直接打開一個網頁,在OnInitDialog中添加下面的代碼:

CAxWindow AxWin = GetDlgItem(IDC_EXPLORER);
AxWin.QueryControl(
&m_pWeb2);

if (m_pWeb2)
{
    WebBrowser::DispEventAdvise(m_pWeb2);
    m_pWeb2
->Navigate(CComBSTR("http://blog.csdn.net/epubcn/"),NULL,NULL,NULL,NULL);
}
記得在OnDestroy中釋放網頁事件監控:
if (m_pWeb2)
{
    WebBrowser::DispEventUnadvise(m_pWeb2);
    m_pWeb2.Release();
}

OK,現在編譯運行一下是否會彈出預期的消息對話框。

注:如果運行時發生ATLASSERT(!InlineIsEqualGUID(*m_plibid,GUID_NULL) && "Did you forget to pass the LIBID to CComModule::Init?");錯誤,請將工程設置中的“ATL使用”改為“動態鏈接到ATL”即可。

上面是對網頁事件的響應。接下來讓我們來處理網頁上某個元素的事件。比如一個BUTTON的單擊、超級鏈接的點擊、一個復選框按鈕是否被選中、文本輸入框內容的改變和獲取等。

(未完待續)

posted on 2008-01-17 21:56 深藍色系統 閱讀(4114) 評論(2)  編輯 收藏 引用 所屬分類: WTLATL/COM

評論

# re: ATL與網頁進行事件交互(連載中……) 2010-11-02 23:44 溪流

謝謝,受教~  回復  更多評論   

# re: ATL與網頁進行事件交互(連載中……) 2014-07-09 23:35 娃娃我

烏魯木齊電腦維修,專業的維修電腦網站
希望可以與您交互網站鏈接
www.addu8.com
  回復  更多評論   

導航

<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

統計

常用鏈接

留言簿(75)

隨筆分類

隨筆檔案

文章分類

文章檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲精品乱码久久久久久日本蜜臀 | 免费视频一区二区三区在线观看| 亚洲五月六月| 亚洲视频一区二区| 亚洲欧美卡通另类91av | 伊人激情综合| 亚洲国产日韩在线| 一区二区成人精品| 欧美一区二区免费| 美女91精品| 亚洲大胆美女视频| 亚洲欧洲在线免费| 一区二区三区国产在线| 先锋影音网一区二区| 久久久久久久999精品视频| 欧美国产一区视频在线观看| 亚洲欧美综合v| 国产精品久久久久久久久久妞妞 | 久久精品国产69国产精品亚洲 | 在线日韩中文| 99天天综合性| 欧美一区二区视频在线观看| 欧美黄色免费| 新片速递亚洲合集欧美合集 | 国产欧美一区二区三区另类精品 | 日韩亚洲在线| 久久精品国产第一区二区三区最新章节 | 亚洲丰满少妇videoshd| 亚洲精品免费在线播放| 亚洲综合好骚| 欧美黄色一级视频| 国产一区二区三区四区五区美女 | 一区在线播放| 亚洲一区成人| 美女视频网站黄色亚洲| 99re66热这里只有精品4| 久久www成人_看片免费不卡| 欧美日韩三级| 亚洲国产精品久久久久秋霞蜜臀| 亚洲网站视频| 欧美二区视频| 久久成人一区| 国产精品久久久久秋霞鲁丝| 亚洲日本激情| 免费日韩成人| 午夜精品在线视频| 国产精品qvod| 一本久久综合亚洲鲁鲁五月天| 久久久久久一区| 亚洲一区黄色| 国产精品大片wwwwww| 99精品热视频| 亚洲日本电影在线| 美腿丝袜亚洲色图| 经典三级久久| 久久亚洲欧美国产精品乐播| 亚洲自拍偷拍视频| 欧美午夜视频| 欧美日韩国产综合在线| 久久九九全国免费精品观看| 国产精品亚洲视频| 亚洲一级二级在线| 日韩午夜在线电影| 欧美日韩成人在线| 一本色道久久| 日韩午夜免费| 欧美日韩在线播| 亚洲网在线观看| 一区二区三区国产在线观看| 欧美日韩免费看| 一区二区三区久久| 99re8这里有精品热视频免费| 欧美精品色一区二区三区| 亚洲精选视频免费看| 最近中文字幕mv在线一区二区三区四区| 久久久免费精品| 亚洲激情第一区| 亚洲人妖在线| 国产精品久久久久久久9999| 亚洲欧美综合v| 欧美在线观看网站| 亚洲大胆女人| 亚洲大胆视频| 欧美日韩第一页| 性18欧美另类| 久久久99精品免费观看不卡| 亚洲电影在线观看| 亚洲日本中文字幕| 国产精品免费区二区三区观看| 久久www成人_看片免费不卡| 久久er精品视频| 亚洲国产一区二区精品专区| 亚洲国产裸拍裸体视频在线观看乱了| 欧美国产综合| 性欧美video另类hd性玩具| 久久成人人人人精品欧| 91久久午夜| 亚洲午夜极品| 在线成人激情视频| 99视频精品在线| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲国产一区二区a毛片| 国产精品伦一区| 免费不卡亚洲欧美| 欧美日韩一区二区高清| 理论片一区二区在线| 欧美日韩午夜视频在线观看| 久久综合狠狠综合久久综合88 | 国产精品久久二区二区| 久久久亚洲午夜电影| 欧美日韩免费在线观看| 久久久激情视频| 欧美色大人视频| 欧美激情一区二区在线| 国产视频一区三区| av成人国产| 亚洲美女免费视频| 欧美一区二区三区四区在线观看地址| 亚洲免费高清| 快she精品国产999| 亚洲精品四区| 欧美一区二区三区日韩视频| 欧美xxx成人| 久久久亚洲精品一区二区三区| 国产精品二区二区三区| 亚洲国产欧美不卡在线观看 | 一区二区国产在线观看| 久久久亚洲高清| 久久久99久久精品女同性| 欧美午夜视频在线| 99精品视频免费观看| 亚洲黄色成人网| 久久亚洲国产成人| 美女在线一区二区| 狠狠综合久久av一区二区小说| 午夜伦欧美伦电影理论片| 午夜国产精品视频免费体验区| 国产精品二区三区四区| 一区二区欧美日韩视频| 一区二区三区免费在线观看| 欧美精品日韩精品| 亚洲精品1234| 日韩一区二区精品视频| 欧美成人免费播放| 亚洲人成毛片在线播放| 亚洲精品少妇网址| 欧美精品久久久久久久久久| 亚洲国产99| 一区二区成人精品| 亚洲欧美视频一区| 久久尤物电影视频在线观看| 激情五月综合色婷婷一区二区| 久久精品在线播放| 欧美国产日本韩| 99国产成+人+综合+亚洲欧美| 欧美日韩国产小视频在线观看| 亚洲麻豆av| 午夜老司机精品| 韩国成人福利片在线播放| 久久久亚洲影院你懂的| 亚洲国产裸拍裸体视频在线观看乱了中文 | 老鸭窝毛片一区二区三区| 欧美aⅴ一区二区三区视频| 亚洲国产精品免费| 国产女人18毛片水18精品| 一本久道久久综合狠狠爱| 国产精品99久久久久久宅男| 国产精品久久久久久久浪潮网站| 亚洲在线黄色| 欧美大片免费看| 制服丝袜激情欧洲亚洲| 国产精品一区免费视频| 久久青草欧美一区二区三区| 亚洲欧洲日本专区| 午夜视频久久久| 亚洲福利国产精品| 欧美午夜寂寞影院| 久久九九久久九九| 一区二区日本视频| 亚洲韩国精品一区| 亚洲小说欧美另类社区| 久久嫩草精品久久久精品| 亚洲国产精品美女| 国产精品久久久久一区二区三区| 欧美一区二区日韩| 日韩视频精品在线观看| 久久久一二三| 亚洲一级在线观看| 亚洲国产精品高清久久久| 国产精品成人国产乱一区 | 欧美激情免费观看| 亚洲欧美日韩精品久久| 亚洲国产精品久久久久| 欧美呦呦网站| 中日韩美女免费视频网址在线观看| 国产亚洲欧美一区| 欧美日韩一区二区三区在线观看免| 欧美一区日本一区韩国一区| 夜夜嗨av一区二区三区网站四季av| 老色鬼久久亚洲一区二区|