成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Symbian學(xué)習(xí)筆記(14)

系統(tǒng)
把Browser Control API也總結(jié)一下吧,只是做個(gè)引導(dǎo),其實(shí)要掌握它的用法最好的方法是打開 9.1\S60_3rd\S60Ex\BrCtlSampleApp 這個(gè)例子來閱讀,它幾乎涵蓋了這個(gè)API的所有使用方法。
把Browser Control API也總結(jié)一下吧,只是做個(gè)引導(dǎo),其實(shí)要掌握它的用法最好的方法是打開 9.1\S60_3rd\S60Ex\BrCtlSampleApp 這個(gè)例子來閱讀,它幾乎涵蓋了這個(gè)API的所有使用方法。

  而我在UniNews中只使用了它最基本的用法,下面給出代碼:

  首先,在H文件中聲明一個(gè)控件成員:

 

#include <coecntrl.h>
#include <brctlinterface.h>
#include <brctldefs.h>
#include <brctllayoutobserver.h>
#include <brctllinkresolver.h>

class CUniNewsWebContainer : public CCoeControl, MCoeControlObserver,MBrCtlLoadEventObserver ...{
public:
    // Constructors and destructor        
    ~CUniNewsWebContainer();
    static CUniNewsWebContainer* NewL(const TRect& aRect);
    static CUniNewsWebContainer* NewLC(const TRect& aRect);

private:
    // New functions
    void ConstructL(const TRect& aRect);
    CUniNewsWebContainer();

public:
    // Functions from base classes
    TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType);
    void HandleBrowserLoadEventL(TBrCtlDefs::TBrCtlLoadEvent aLoadEvent,TUint aSize,TUint16 aTransactionId);
    void LoadContentL(TInt id);
   
private:
    // Functions from base classes
    void SizeChanged();
    TInt CountComponentControls() const;
    CCoeControl* ComponentControl(TInt aIndex) const;
    void Draw(const TRect& aRect) const;
    void HandleControlEventL(CCoeControl* aControl, TCoeEvent aEventType);

    HBufC8* ReadFileLC(const TDesC& aFileName);
private:
//data
    CBrCtlInterface*    iBrowser;
    TUint                iCapabilities;
    TInt                 iCommandBase;
};

  主要聲明了三個(gè)成員,其中CBrCtlInterface是主要的browser控件,其它兩個(gè)是構(gòu)造時(shí)的所需要的參數(shù)。而這個(gè)類派生于接口 MBrCtlLoadEventObserver,所以實(shí)現(xiàn)它的方法void HandleBrowserLoadEventL(TBrCtlDefs::TBrCtlLoadEvent aLoadEvent,TUint aSize,TUint16 aTransactionId);

  在實(shí)現(xiàn)文件CPP中,我們需要構(gòu)造它:

 

void CUniNewsWebContainer::ConstructL(const TRect& aRect) ...{
    // Create a window for this application view
    CreateWindowL();
    SetRect(aRect);
   
    //add your code here ...
    iBrowser=CreateBrowserControlL(this
            ,aRect
            ,iCapabilities
            ,iCommandBase
            ,NULL     //softkey observer
            ,NULL    //link resolver
            ,NULL    //special load observer
            ,NULL    //layout observer
            ,NULL    //dialog provider
            );
    iBrowser->ActivateL();
    if(iBrowser)...{
        iBrowser->AddLoadEventObserverL(this);
        iBrowser->SetBrowserSettingL(TBrCtlDefs::ESettingsFontSize,TBrCtlDefs::EFontSizeLevelNormal);

        
    }   
    ActivateL();   
}

  在構(gòu)造函數(shù)中我們初始化那兩個(gè)參數(shù):

 

CUniNewsWebContainer::CUniNewsWebContainer() ...{
    // No implementation required
    iCapabilities=TBrCtlDefs::ECapabilityDisplayScrollBar|TBrCtlDefs::ECapabilityLoadHttpFw;
    iCommandBase=TBrCtlDefs::ECommandIdBase;
    iBrowser=NULL;
}

  刪除的時(shí)候記得將它的事件監(jiān)聽器都注銷掉:

 

CUniNewsWebContainer::~CUniNewsWebContainer() ...{
    // No implementation required
    if(iBrowser)...{
        iBrowser->RemoveLoadEventObserver(this);        
    }
    delete iBrowser;
    iBrowser=NULL;
}

  此外,它跟其它控件一樣,在Resize時(shí)要處理一下,并且它也需要聲明自己是一個(gè)組件等等的。

  而方法HandleBrowserLoadEventL只需要簡單地重繪一下即可。

  真正的使用在這兒呢,很簡單:

 

void CUniNewsWebContainer::LoadContentL(TInt id)
...{
    if(iBrowser)...{   
        TFileName fname;
        fname.Format(KContentFile,id);
        iBrowser->LoadUrlL(fname);
        }
}        

  就是一句話 LoadUrlL就可以了,這個(gè)URL可以是http:// 也可以是 file://,很方便。

  不過經(jīng)常我們是需要將內(nèi)存里的內(nèi)容加載顯示出來,那就稍稍多做一點(diǎn)工作:

 

void CUniNewsWebContainer::LoadContentL(TInt id)
...{
    if(iBrowser)...{   
        TFileName fname;
        fname.Format(KContentFile,id);
        
        HBufC8 * buf=ReadFileLC(fname);
            
        _LIT(KURL,"data:%d");
        TBuf<32> url;
        url.Format(KURL,id);
        
        _LIT8(KDataType, "text/html");
        TDataType dataType(KDataType());
        TUid uid;
        uid.iUid = KCharacterSetIdentifierUtf8;
            
        iBrowser->LoadDataL(url,*buf,dataType,uid);
        CleanupStack::PopAndDestroy();
    }
}

  這里的URL用data:// 開頭主要是用于歷史記錄作個(gè)標(biāo)簽罷了。而內(nèi)容格式是text/html,不過要換成TDataType類型。而字符集使用UTF8。

  我試了一下,覺得加載到內(nèi)存再顯示的效果比直接加載文件要快(主要是指切換頁面時(shí))。

  另外,這個(gè)控件有個(gè)BUG,在退出時(shí)會(huì)有內(nèi)存泄露,按網(wǎng)上的說法,在構(gòu)造后激活它即可,但是我試了也沒有效果!

【編輯推薦】

  1. Symbian每6個(gè)月發(fā)布一款新開源操作系統(tǒng)
  2. 微軟建WindowsMarketplace 完善智能機(jī)平臺(tái)
  3. 大力模仿Android 傳微軟WM6.5可裝插件
責(zé)任編輯:龐桂玉 來源: it168
相關(guān)推薦

2009-04-12 08:59:05

Symbian諾基亞移動(dòng)OS

2009-04-12 09:01:05

Symbian諾基亞移動(dòng)OS

2009-04-12 09:02:32

Symbian諾基亞移動(dòng)OS

2009-04-12 09:06:00

Symbian諾基亞移動(dòng)OS

2009-04-12 09:03:50

Symbian諾基亞移動(dòng)OS

2009-04-12 08:57:50

Symbian諾基亞移動(dòng)OS

2009-04-12 08:55:18

Symbian諾基亞移動(dòng)OS

2009-04-12 08:36:09

Symbian諾基亞移動(dòng)OS

2009-04-12 08:51:50

Symbian諾基亞移動(dòng)OS

2009-04-12 09:07:17

Symbian諾基亞移動(dòng)OS

2009-04-12 08:45:32

Symbian諾基亞移動(dòng)OS

2009-04-12 08:48:47

Symbian諾基亞移動(dòng)OS

2009-04-12 08:50:08

Symbian諾基亞移動(dòng)OS

2009-04-12 08:46:43

Symbian諾基亞移動(dòng)OS

2012-05-24 09:38:08

Symbian

2009-04-12 08:52:52

Symbian諾基亞移動(dòng)OS

2010-07-12 09:34:59

Symbian開發(fā)

2010-10-27 13:14:24

Symbian

2010-07-02 09:54:32

Symbian開發(fā)

2009-05-06 08:42:03

SymbianS60移動(dòng)OS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美精品一区二区三区蜜桃视频 | 一级二级三级在线观看 | 国产一区二区三区高清 | 国产精品久久一区二区三区 | 大乳boobs巨大吃奶挤奶 | 日本一区高清 | 成人av看片| 国产午夜久久久 | 欧美综合色 | www国产成人免费观看视频 | 久久国| 天天艹日日干 | 国产aaaaav久久久一区二区 | 中文字幕不卡在线观看 | 亚洲高清av在线 | 久久久久国产成人精品亚洲午夜 | 亚洲国产偷 | 中文字幕一区在线观看视频 | 亚洲一区二区三区欧美 | 久久91 | 精品日韩在线 | 亚洲久久 | 亚洲午夜精品 | 久久伊人亚洲 | 四虎影院在线播放 | 在线欧美视频 | 久久国产精品偷 | 在线播放中文字幕 | 特级生活片 | 色视频在线播放 | 国产成人精品久久 | 五月天婷婷久久 | 91视频网 | av一级久久| 岛国av免费在线观看 | 欧美一区二区三区在线观看 | 国产99视频精品免视看9 | 国产黄色大片 | 亚洲一区二区三区四区五区中文 | 日韩在线 | 97视频在线免费 |