![]() ![]() ![]() ![]() |
SophiaFramework UNIVERSE 5.2 |
#include <SFZWebBrowserControl.hpp>
class SFZWebBrowserControl : public SFYControl;
SFMTYPEDEFRESPONDER(SFZWebBrowserControl)
■ 仕様と使い方
SFZWebBrowserControl クラスは、以下の機能を備える簡易ウェブブラウザコントロールです。
SFZWebBrowserControl クラスは、 BREW API IHtmlViewer を使用して実装されています。 そのため、HTML レンダリングに関する機能は BREW API IHtmlViewer と同等です。
簡易ウェブブラウザコントロールの枠線の色や表示に関するデザインを変更したい場合は、 SFZWebBrowserControl::HandleRenderRequest 関数をオーバーライドします。
コントロール値の役割について
SFZWebBrowserControl クラスにおける SFYControl の現在値、最大値、最小値の役割は以下の通りです。
現在値は、現在表示されているページの履歴番号を表します。 SFZWebBrowserControl::GetCurrentHistoryIndex 関数の戻り値は、 現在値を参照しています。
最大値は、履歴リストのエントリ数(履歴のサイズ)を表します。 SFZWebBrowserControl::GetHistorySize 関数の戻り値は、 最大値を参照しています。
最小値は、常に 0 です(最小値は使用されません)。
![]() |
コントロール値の変更について |
---|---|
上記にあるように、 現在値、最大値、最小値は SFZWebBrowserControl クラスの内部で制御されていますので、 SFYControl::SetCurrentValue / SFYControl::SetMaximumValue / SFYControl::SetMinimumValue 関数を使用して現在値、最大値、最小値を変更してはいけません。 |
![]() |
Tip |
---|---|
HTTP リクエストヘッダー、タイムアウトなどの設定を行うには、 SFZWebBrowserControl::SetWeb 関数を使用します。 タイムアウトなどのエラー処理は、 SFZWebBrowserControl クラスを継承するクラスを作成し、 SFZWebBrowserControl::ResponseNotifyHandler または SFZWebBrowserControl::DoneNotifyHandler 関数をオーバーライドして処理を記述します。 タイマーでタイムアウトの処理を行う方法については、 こちらのサンプルアプリ(websample.zip)を参照してください。 |
![]() |
エラー値 |
---|---|
SFZWebBrowserControl::SFZWebBrowserControl コンストラクタでエラーが発生すると、 エラー値は内部(SFZWebBrowserControl インスタンス)に記録されます。 このエラー値は、 static_catch 関数を使用して取得します。 エラーが発生しなかった場合は、SFERR_NO_ERROR が返却されます。 |
![]() |
mif ファイルの特権設定 |
---|---|
SFZWebBrowserControl クラスを利用するには、 mif ファイルの特権レベル設定で「Web アクセス」の項目をオンにする必要があります。 |
■ サンプルコード
以下は、 簡易ブラウザ(SFZWebBrowserControl クラス)を利用してウィンドウ内に HTML 文書を表示するコードです。
SFMTYPEDEFRESPONDER(MyWindow) class MyWindow : public SFZWindow{ SFMSEALRESPONDER(MyWindow) SFMRESPONDERINSTANTIATEFOUR(MyWindow, SFZWindow, SFYContainer, SFYWidget, SFYResponder) public: // MyWindow のタイプ enum CodeEnum { CODE_TYPE = four_char_code('M', 'W', 'N', 'D') }; SFMTYPEDEFTYPE(CodeEnum) public: static MyWindowSmp NewInstance(SFCErrorPtr exception = null); // MyWindow 内のレスポンダ(簡易ウェブブラウザ)を作成する関数 SFCError Make(Void); protected: explicit MyWindow(Void) static_throws; virtual ~MyWindow(Void); // 簡易ウェブブラウザ SFZWebBrowserControlSmp _browser; }; // コンストラクタ MyWindow::MyWindow(Void) static_throws { if (static_try()) { // レスポンダのタイプを設定する SetType(CODE_TYPE); } } // デストラクタ MyWindow::~MyWindow(Void) { } // MyWindow 内のレスポンダ(簡易ウェブブラウザ)を作成する関数 SFCError MyWindow::Make(Void) { SFCError error; // 簡易ブラウザに表示する HTML 文書 SFXAnsiString buffer( "BrowserControl<br /><br />" "<a href=\"http://www.s-cradle.com/example/tabbrowser/\">ソフィアクレイドル</a><br /><br />" ); // 簡易ウェブブラウザの作成 if ((_browser = SFZWebBrowserControl::NewInstance(&error)) != null) { // 親レスポンダを MyWindow に設定する if ((error = _browser->SetParent(GetThis())) == SFERR_NO_ERROR) { // 実領域を MyWindow のローカル領域に設定する // ※ 以下の文を実行する前に、MyWindow のローカル領域を設定していないと、 // 実領域は空の矩形領域となり何も表示されない _browser->SetRealBound(GetLocalBound()); // 状態を「可視+活性+操作可能+フォーカス」にまとめて設定する _browser->SetState(true, true, true, true); // HTML 文書をレンダリングする _browser->Load(buffer); // 簡易ウェブブラウザを最前面に移動する // ※ MyWindow の子レスポンダは簡易ウェブブラウザだけなので省略可 _browser->ToFront(); } } return error; }
コンストラクタ/デストラクタ |
---|
SFZWebBrowserControl( Void ) SFZWebBrowserControl クラスのコンストラクタです。
|
~SFZWebBrowserControl( Void )
SFZWebBrowserControl クラスのデストラクタです。
|
パブリック関数 | |
---|---|
Void |
ClearHistory( Void ) 履歴リストを空にします。
|
SInt32 |
FindElement(
ACharConstPtr element
, SInt32 no
) 現在表示中のページから、指定された要素を検索します。
|
HistoryEntry |
GetCurrentHistory( Void ) 現在表示しているページの履歴内容(URL とタイトル)を取得します。
|
UInt32 |
GetCurrentHistoryIndex( Void ) 現在の履歴番号を取得します。
|
SFXAnsiString |
GetElementText(
SInt32 elementIndex
) 指定された要素の内容を取得します。
|
HistoryEntry |
GetHistory(
UInt32 historyIndex = 0
) 指定された履歴番号の履歴内容を取得します。
|
HistoryEntryConstPtr |
GetHistoryList( Void ) 履歴リストを取得します。
|
UInt32 |
GetHistorySize( Void ) 履歴リストのエントリ数を取得します。
|
SInt32 |
GetIndent( Void ) HTML 表示のインデントの幅を取得します。[単位: ピクセル]
|
SFXRGBColor |
GetLinkColor( Void ) HTML 表示のリンクの文字の表示色を取得します。
|
SInt32 |
GetParagraphSpacing( Void ) HTML 表示の段落間の行間の長さを取得します。[単位: ピクセル]
|
SInt32 |
GetScrollbarWidth( Void ) スクロールバーの幅を取得します。[単位: ピクセル]
|
SFXRGBColor |
GetTextColor( Void ) テキストの表示色を取得します。
|
SFBWebSmpConstRef |
GetWeb( Void ) IWeb インターフェースを取得します。
|
Bool |
IsBusy( Void ) 通信中またはレンダリング中であるかどうかを判定をします。
|
Bool |
IsInlineEditEnable( Void ) 文字をインラインで入力する設定であるかどうかを判定します。
|
Bool |
IsScrollbarEnable( Void ) スクロールバーがあるかどうかを判定をします。
|
SFCError |
Load(
SFXAnsiStringConstRef data
) 指定された文字列を HTML 文書とみなして、レンダリングを開始します。
|
SFCError |
Load(
SFXAnsiStringConstRef data
, SFXAnsiStringConstRef url
) 指定された文字列を HTML 文書とみなして、レンダリングを開始します。
|
SFCError |
Move(
UInt32 historyIndex = 0
) 指定された履歴番号のページへ移動し、ページの再取得と再レンダリングを行います。
|
SFCError |
Navigate(
SFXAnsiStringConstRef url
) 指定された URL のページを取得して、レンダリングを開始します。
|
SFCError |
Navigate(
SFXAnsiStringConstRef url
, SFXAnsiStringConstRef method
) 指定された URL のページを取得して、レンダリングを開始します。
|
SFCError |
Navigate(
SFXAnsiStringConstRef url
, SFXAnsiStringConstRef method
, SFXAnsiStringConstRef data
) 指定された URL のページを取得して、レンダリングを開始します。
|
SFCError |
Navigate(
SFXAnsiStringConstRef url
, SFXAnsiStringConstRef method
, SFXBufferConstRef data
) 指定された URL のページを取得して、レンダリングを開始します。
|
SFCError |
Navigate(
SFBSourceSmpConstRef source
) 指定された URL のページを取得して、レンダリングを開始します。
|
SFCError |
Navigate(
SFBSourceSmpConstRef source
, SFXAnsiStringConstRef basdUrl
) 指定された URL のページを取得して、レンダリングを開始します。
|
SFCError |
Navigate(
SFBAStreamSmpConstRef stream
) 指定された URL のページを取得して、レンダリングを開始します。
|
SFCError |
Navigate(
SFBAStreamSmpConstRef src
, SFXAnsiStringConstRef baseUrl
) 指定された URL のページを取得して、レンダリングを開始します。
|
SFCError |
Next(
SInt32 n = 1
) 指定された値だけ履歴を進み、ページを再取得しレンダリングします。
|
SFCError |
Previous(
SInt32 n = 1
) 指定された値だけ履歴を戻り、ページを再取得しレンダリングします。
|
Void |
Reload( Void ) 現在表示しているページを再取得して再描画します。
|
SFCError |
SetAuthorizeData(
SFXAnsiStringConstRef user
, SFXAnsiStringConstRef passwd
, SFXAnsiStringConstRef url
) HTTP ベーシック認証の情報を設定します。
|
SFCError |
SetHistorySize(
UInt32 size
) 履歴リストのサイズを設定します。
|
SFCError |
SetIndent(
SInt32 pixel
) インデントの幅を設定します。[単位: ピクセル]
|
Void |
SetInlineEditEnable(
Bool enable
) フォームでの文字入力をインラインするかを設定します。
|
SFCError |
SetLinkColor(
SFXRGBColorConstRef color
) リンク文字列の表示色を設定します。
|
SFCError |
SetParagraphSpacing(
SInt32 pixel
) 段落間の行間の長さを設定します。[単位: ピクセル]
|
Void |
SetScrollbarEnable(
Bool enable
) スクロールバーの有無を設定します。
|
SFCError |
SetScrollbarWidth(
SInt32 pixel
) スクロールバーの幅を設定します。[単位: ピクセル]
|
SFCError |
SetTextColor(
SFXRGBColorConstRef color
) テキストの表示色を設定します。
|
Void |
SetWeb(
SFBWebSmpConstRef web
) HTTP 通信でサーバーにアクセスするときに使用される IWeb インターフェースを設定します。
|
Void |
Stop( Void ) 通信やレンダリングを行っている場合、その処理を中断します。
|
SFCError |
UnsetAuthorizeData( Void ) HTTP ベーシック認証の設定を解除します。
|
Void |
UnsetWeb( Void ) SetWeb 関数による IWeb インターフェースの設定を解除します。
|
Void |
ClearHandler( Void )
(SFYResponder から継承)
このレスポンダのハンドラの登録をすべて解除します。
|
Void |
ClearTracer( Void )
(SFYResponder から継承)
このレスポンダのトレーサの配信規則の登録をすべて解除します。
|
SFCError |
Distribute(
SFXEventConstRef event
, BoolPtr result = null
)
(SFYResponder から継承)
指定された配信型イベントを
SFYDistributer インスタンスと、このレスポンダ以下のレスポンダツリーに配信します。
|
SFXRGBColorConstRef |
GetBackgroundColor( Void )
(SFYWidget から継承)
背景の色を取得します。
|
SFYResponderSmp |
GetChildBack( Void )
(SFYResponder から継承)
最背面に位置するこのレスポンダの子レスポンダを取得します。
|
SFYResponderSmp |
GetChildBack(
Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
最背面に位置するこのレスポンダの子レスポンダを取得します。
|
SFYResponderSmp |
GetChildBack(
UInt32 id
)
(SFYResponder から継承)
最背面に位置するこのレスポンダの子レスポンダを取得します。
|
SFYResponderSmp |
GetChildBack(
UInt32 id
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
最背面に位置するこのレスポンダの子レスポンダを取得します。
|
SFYResponderSmp |
GetChildBackward(
SInt32 index
)
(SFYResponder から継承)
背面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
|
SFYResponderSmp |
GetChildBackward(
SInt32 index
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
背面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
|
SFYResponderSmp |
GetChildBackward(
SInt32 index
, UInt32 id
)
(SFYResponder から継承)
背面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
|
SFYResponderSmp |
GetChildBackward(
SInt32 index
, UInt32 id
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
背面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
|
SInt32 |
GetChildCount( Void )
(SFYResponder から継承)
このレスポンダの子レスポンダの数を取得します。
|
SInt32 |
GetChildCount(
Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダの子レスポンダの数を取得します。
|
SInt32 |
GetChildCount(
UInt32 id
)
(SFYResponder から継承)
このレスポンダの子レスポンダの数を取得します。
|
SInt32 |
GetChildCount(
UInt32 id
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダの子レスポンダの数を取得します。
|
SFYResponderSmp |
GetChildForward(
SInt32 index
)
(SFYResponder から継承)
前面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
|
SFYResponderSmp |
GetChildForward(
SInt32 index
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
前面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
|
SFYResponderSmp |
GetChildForward(
SInt32 index
, UInt32 id
)
(SFYResponder から継承)
前面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
|
SFYResponderSmp |
GetChildForward(
SInt32 index
, UInt32 id
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
前面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
|
SFYResponderSmp |
GetChildFront( Void )
(SFYResponder から継承)
最前面に位置するこのレスポンダの子レスポンダを取得します。
|
SFYResponderSmp |
GetChildFront(
Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
最前面に位置するこのレスポンダの子レスポンダを取得します。
|
SFYResponderSmp |
GetChildFront(
UInt32 id
)
(SFYResponder から継承)
最前面に位置するこのレスポンダの子レスポンダを取得します。
|
SFYResponderSmp |
GetChildFront(
UInt32 id
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
最前面に位置するこのレスポンダの子レスポンダを取得します。
|
SInt32 |
GetCurrentValue( Void )
(SFYControl から継承)
コントロールの現在値を取得します。
|
SFYDistributerPtr |
GetDistributer( Void )
(SFYResponder から継承)
このレスポンダに設定されている配信エンジンを取得します。
|
SFYResponderSmp |
GetFrame( Void )
(SFYResponder から継承)
このレスポンダに装着されたフレームを取得します。
|
SFXRectangle |
GetGlobalBound( Void )
(SFYResponder から継承)
このレスポンダのグローバル領域を取得します。
|
UInt32 |
GetID( Void )
(SFYResponder から継承)
このレスポンダの ID を取得します。
|
SFXRectangle |
GetLocalBound( Void )
(SFYResponder から継承)
このレスポンダのローカル領域を取得します。
|
SInt32 |
GetMaximumValue( Void )
(SFYControl から継承)
コントロールの最大値を取得します。
|
SInt32 |
GetMinimumValue( Void )
(SFYControl から継承)
コントロールの最小値を取得します。
|
SInt32 |
GetNthBackward( Void )
(SFYResponder から継承)
このレスポンダが背面から数えて何番目に位置するかを取得します。
|
SInt32 |
GetNthBackward(
Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダが背面から数えて何番目に位置するかを取得します。
|
SInt32 |
GetNthBackward(
UInt32 id
)
(SFYResponder から継承)
このレスポンダが背面から数えて何番目に位置するかを取得します。
|
SInt32 |
GetNthBackward(
UInt32 id
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダが背面から数えて何番目に位置するかを取得します。
|
SInt32 |
GetNthForward( Void )
(SFYResponder から継承)
このレスポンダが前面から数えて何番目に位置するかを取得します。
|
SInt32 |
GetNthForward(
Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダが前面から数えて何番目に位置するかを取得します。
|
SInt32 |
GetNthForward(
UInt32 id
)
(SFYResponder から継承)
このレスポンダが前面から数えて何番目に位置するかを取得します。
|
SInt32 |
GetNthForward(
UInt32 id
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダが前面から数えて何番目に位置するかを取得します。
|
SFYResponderSmp |
GetParent( Void )
(SFYResponder から継承)
このレスポンダの親レスポンダを取得します。
|
Bool |
GetPropertyTransparent( Void )
(SFYResponder から継承)
このレスポンダの透過属性を取得します。
|
SFXRectangleConstRef |
GetRealBound( Void )
(SFYResponder から継承)
このレスポンダの実領域を取得します。
|
VoidPtr |
GetReference( Void )
(SFYResponder から継承)
このレスポンダのリファレンス値を取得します。
|
SFYRendererPtr |
GetRenderer( Void )
(SFYResponder から継承)
このレスポンダに設定されている描画エンジンを取得します。
|
SFYResponderSmp |
GetRoot( Void )
(SFYResponder から継承)
このレスポンダが所属するレスポンダツリーのルートレスポンダを取得します。
|
Bool |
GetStateActive(
Bool inherit = false
)
(SFYResponder から継承)
このレスポンダの活性状態を取得します。
|
Bool |
GetStateEnable(
Bool inherit = false
)
(SFYResponder から継承)
このレスポンダの操作可能状態を取得します。
|
Bool |
GetStateFocus(
Bool inherit = false
)
(SFYResponder から継承)
このレスポンダのフォーカス状態を取得します。
|
Bool |
GetStateValid(
Bool inherit = false
)
(SFYResponder から継承)
このレスポンダの有効状態を取得します。
|
Bool |
GetStateVisible(
Bool inherit = false
)
(SFYResponder から継承)
このレスポンダの可視状態を取得します。
|
SFXRectangle |
GetSuitableBound( Void )
(SFYResponder から継承)
このレスポンダの最適な領域(サイズ)を取得します。
|
SFXRectangle |
GetSuitableBound(
SFXRectangleConstRef rectangle
)
(SFYResponder から継承)
このレスポンダの最適な領域(サイズ)を取得します。
|
SFXRectangle |
GetSuitableBound(
SFXRectangleConstRef param
, HorizontalEnum horizontal
, VerticalEnum vertical
)
(SFYResponder から継承)
このレスポンダの最適な領域(サイズ)を取得します。
|
SFXMargin |
GetSuitableMargin( Void )
(SFYResponder から継承)
このレスポンダのフレーム余白領域を取得します。
|
SFCType |
GetType( Void )
(SFYResponder から継承)
このレスポンダのタイプを取得します。
|
SFXRectangleConstRef |
GetVirtualBound( Void )
(SFYResponder から継承)
このレスポンダの仮想領域を取得します。
|
Bool |
HasFrame( Void )
(SFYResponder から継承)
このレスポンダがコンテントレスポンダであるかどうかを判定します。
|
Void |
Initialize( Void )
(SFYResponder から継承)
このレスポンダを初期化します。
|
Void |
Invalidate( Void )
(SFYResponder から継承)
指定された領域を再描画領域に登録します。
|
Void |
Invalidate(
SFXRectangleConstRef param
)
(SFYResponder から継承)
指定された領域を再描画領域に登録します。
|
Void |
InvokeBackward(
SFXEventConstRef event
, Bool overload
, BoolPtr result = null
)
(SFYResponder から継承)
指定されたコールバック型イベントをこのレスポンダに送信します
(ハンドラは登録順に起動されます)。
|
Void |
InvokeForward(
SFXEventConstRef event
, Bool overload
, BoolPtr result = null
)
(SFYResponder から継承)
指定されたコールバック型イベントをこのレスポンダに送信します
(ハンドラは登録の逆順に起動されます)。
|
Bool |
IsBack( Void )
(SFYResponder から継承)
このレスポンダが最背面に位置するかどうかを判定します。
|
Bool |
IsBack(
Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダが最背面に位置するかどうかを判定します。
|
Bool |
IsBack(
UInt32 id
)
(SFYResponder から継承)
このレスポンダが最背面に位置するかどうかを判定します。
|
Bool |
IsBack(
UInt32 id
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダが最背面に位置するかどうかを判定します。
|
Bool |
IsFrame( Void )
(SFYResponder から継承)
このレスポンダがアタッチメントフレームであるかどうかを判定します。
|
Bool |
IsFront( Void )
(SFYResponder から継承)
このレスポンダが最前面に位置するかどうかを判定します。
|
Bool |
IsFront(
Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダが最前面に位置するかどうかを判定します。
|
Bool |
IsFront(
UInt32 id
)
(SFYResponder から継承)
このレスポンダが最前面に位置するかどうかを判定します。
|
Bool |
IsFront(
UInt32 id
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダが最前面に位置するかどうかを判定します。
|
Bool |
IsNthBackward(
SInt32 index
)
(SFYResponder から継承)
このレスポンダが背面から数えて指定された順番に位置するかどうかを判定します。
|
Bool |
IsNthBackward(
SInt32 index
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダが背面から数えて指定された順番に位置するかどうかを判定します。
|
Bool |
IsNthBackward(
SInt32 index
, UInt32 id
)
(SFYResponder から継承)
このレスポンダが背面から数えて指定された順番に位置するかどうかを判定します。
|
Bool |
IsNthBackward(
SInt32 index
, UInt32 id
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダが背面から数えて指定された順番に位置するかどうかを判定します。
|
Bool |
IsNthForward(
SInt32 index
)
(SFYResponder から継承)
このレスポンダが前面から数えて指定された順番に位置するかどうかを判定します。
|
Bool |
IsNthForward(
SInt32 index
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダが前面から数えて指定された順番に位置するかどうかを判定します。
|
Bool |
IsNthForward(
SInt32 index
, UInt32 id
)
(SFYResponder から継承)
このレスポンダが前面から数えて指定された順番に位置するかどうかを判定します。
|
Bool |
IsNthForward(
SInt32 index
, UInt32 id
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダが前面から数えて指定された順番に位置するかどうかを判定します。
|
Bool |
IsRoot( Void )
(SFYResponder から継承)
このレスポンダがルートレスポンダかどうかを判定します。
|
SFCError |
RegisterHandler(
SFXEventRangeConstRef range
, SFYHandler::RuleRecConstRef rule
)
(SFYResponder から継承)
指定されたハンドラをこのレスポンダに登録します。
|
SFCError |
RegisterHandler(
SFXEventRangeConstRef range
, SFYHandler::HandlerSPP spp
, VoidPtr reference
)
(SFYResponder から継承)
指定されたハンドラをこのレスポンダに登録します。
|
SFCError |
RegisterHandler(
SFXEventRangeConstPtr range
, SFYHandler::RuleRecConstPtr rule
, SInt32 length
)
(SFYResponder から継承)
指定されたハンドラをこのレスポンダに登録します。
|
SFCError |
RegisterHandler(
SFXEventRangeConstPtr range
, SFYHandler::HandlerSPPConstPtr spp
, VoidPtrConstPtr reference
, SInt32 length
)
(SFYResponder から継承)
指定されたハンドラをこのレスポンダに登録します。
|
SFCError |
RegisterTracer(
SFXEventRangeConstRef range
, SFYTracer::RuleRecConstRef rule
)
(SFYResponder から継承)
指定された配信規則をこのレスポンダのトレーサに登録します。
|
SFCError |
RegisterTracer(
SFXEventRangeConstRef range
, SFYTracer::OrderEnum order
, SFYTracer::StateEnum state
, Bool overload
)
(SFYResponder から継承)
指定された配信規則をこのレスポンダのトレーサに登録します。
|
SFCError |
RegisterTracer(
SFXEventRangeConstPtr range
, SFYTracer::RuleRecConstPtr rule
, SInt32 length
)
(SFYResponder から継承)
指定された配信規則をこのレスポンダのトレーサに登録します。
|
SFCError |
RegisterTracer(
SFXEventRangeConstPtr range
, SFYTracer::OrderEnumConstPtr order
, SFYTracer::StateEnumConstPtr state
, BoolConstPtr overload
, SInt32 length
)
(SFYResponder から継承)
指定された配信規則をこのレスポンダのトレーサに登録します。
|
SFCError |
Render(
Bool force = false
)
(SFYResponder から継承)
このレスポンダ以下のレスポンダツリーを再描画します。
|
Void |
SetBackgroundColor(
SFXRGBColorConstRef param
)
(SFYWidget から継承)
背景の色を設定します。
|
Void |
SetCurrentValue(
SInt32 param
)
(SFYControl から継承)
コントロールの現在値を設定します。
|
Void |
SetDistributer(
SFYDistributerPtr param
)
(SFYResponder から継承)
指定された配信エンジンをこのレスポンダに設定します。
|
SFCError |
SetFrame(
SFYResponderSmpConstRef param
)
(SFYResponder から継承)
このレスポンダにフレームを装着します。
|
Void |
SetID(
UInt32 param
)
(SFYResponder から継承)
指定された ID をこのレスポンダに設定します。
|
Void |
SetMaximumValue(
SInt32 param
)
(SFYControl から継承)
コントロールの最大値を設定します。
|
Void |
SetMinimumValue(
SInt32 param
)
(SFYControl から継承)
コントロールの最小値を設定します。
|
SFCError |
SetParent(
SFYResponderSmpConstRef param
)
(SFYResponder から継承)
指定されたレスポンダをこのレスポンダの親レスポンダに設定します。
|
Void |
SetProperty(
Bool transparent
)
(SFYResponder から継承)
指定された属性をこのレスポンダに設定します。
|
Void |
SetPropertyTransparent(
Bool param
)
(SFYResponder から継承)
指定された透過属性をこのレスポンダに設定します。
|
Void |
SetRealBound(
SFXRectangleConstRef param
)
(SFYResponder から継承)
指定された領域をこのレスポンダの実領域に設定します。
|
Void |
SetReference(
VoidPtr param
)
(SFYResponder から継承)
指定された値をこのレスポンダのリファレンスに設定します。
|
Void |
SetRenderer(
SFYRendererPtr param
)
(SFYResponder から継承)
指定された描画エンジンをこのレスポンダに設定します。
|
Void |
SetState(
Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
指定された値をこのレスポンダの可視、活性、操作可能、フォーカスの各状態フラグに設定します。
|
Void |
SetStateActive(
Bool param
)
(SFYResponder から継承)
指定された値をこのレスポンダの活性状態フラグに設定します。
|
Void |
SetStateEnable(
Bool param
)
(SFYResponder から継承)
指定された値をこのレスポンダの操作可能状態フラグに設定します。
|
Void |
SetStateFocus(
Bool param
)
(SFYResponder から継承)
指定された値をこのレスポンダのフォーカス状態フラグに設定します。
|
Void |
SetStateVisible(
Bool param
)
(SFYResponder から継承)
指定された値をこのレスポンダの可視状態フラグに設定します。
|
Void |
SetVirtualBound(
SFXRectangleConstRef param
)
(SFYResponder から継承)
指定された領域をこのレスポンダの仮想領域に設定します。
|
Void |
Terminate( Void )
(SFYResponder から継承)
このレスポンダの終了処理を行います。
|
Void |
ToBack( Void )
(SFYResponder から継承)
このレスポンダを姉妹レスポンダのなかで最背面に移動します。
|
Void |
ToBack(
Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダを姉妹レスポンダのなかで最背面に移動します。
|
Void |
ToBack(
UInt32 id
)
(SFYResponder から継承)
このレスポンダを姉妹レスポンダのなかで最背面に移動します。
|
Void |
ToBack(
UInt32 id
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダを姉妹レスポンダのなかで最背面に移動します。
|
Void |
ToFront( Void )
(SFYResponder から継承)
このレスポンダを姉妹レスポンダのなかで最前面に移動します。
|
Void |
ToFront(
Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダを姉妹レスポンダのなかで最前面に移動します。
|
Void |
ToFront(
UInt32 id
)
(SFYResponder から継承)
このレスポンダを姉妹レスポンダのなかで最前面に移動します。
|
Void |
ToFront(
UInt32 id
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダを姉妹レスポンダのなかで最前面に移動します。
|
Void |
ToNthBackward(
SInt32 index
)
(SFYResponder から継承)
このレスポンダを背面から数えて指定された順番に移動します。
|
Void |
ToNthBackward(
SInt32 index
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダを背面から数えて指定された順番に移動します。
|
Void |
ToNthBackward(
SInt32 index
, UInt32 id
)
(SFYResponder から継承)
このレスポンダを背面から数えて指定された順番に移動します。
|
Void |
ToNthBackward(
SInt32 index
, UInt32 id
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダを背面から数えて指定された順番に移動します。
|
Void |
ToNthForward(
SInt32 index
)
(SFYResponder から継承)
このレスポンダを前面から数えて指定された順番に移動します。
|
Void |
ToNthForward(
SInt32 index
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダを前面から数えて指定された順番に移動します。
|
Void |
ToNthForward(
SInt32 index
, UInt32 id
)
(SFYResponder から継承)
このレスポンダを前面から数えて指定された順番に移動します。
|
Void |
ToNthForward(
SInt32 index
, UInt32 id
, Bool visible
, Bool active
, Bool enable
, Bool focus
)
(SFYResponder から継承)
このレスポンダを前面から数えて指定された順番に移動します。
|
Void |
UnregisterHandler(
SFXEventRangeConstRef range
, SFYHandler::RuleRecConstRef rule
)
(SFYResponder から継承)
このレスポンダから指定されたハンドラの登録を解除します。
|
Void |
UnregisterHandler(
SFXEventRangeConstRef range
, SFYHandler::HandlerSPP spp
, VoidPtr reference
)
(SFYResponder から継承)
このレスポンダから指定されたハンドラの登録を解除します。
|
Void |
UnregisterHandler(
SFXEventRangeConstPtr range
, SFYHandler::RuleRecConstPtr rule
, SInt32 length
)
(SFYResponder から継承)
このレスポンダから指定されたハンドラの登録を解除します。
|
Void |
UnregisterHandler(
SFXEventRangeConstPtr range
, SFYHandler::HandlerSPPConstPtr spp
, VoidPtrConstPtr reference
, SInt32 length
)
(SFYResponder から継承)
このレスポンダから指定されたハンドラの登録を解除します。
|
Void |
UnregisterTracer(
SFXEventRangeConstRef range
)
(SFYResponder から継承)
このレスポンダのトレーサから指定された配信規則の登録を解除します。
|
Void |
UnregisterTracer(
SFXEventRangeConstPtr range
, SInt32 length
)
(SFYResponder から継承)
このレスポンダのトレーサから指定された配信規則の登録を解除します。
|
プロテクト関数 | |
---|---|
Void |
DoneNotifyHandler(
DoneNotifyConstRef notify
) [ハンドラ] レンダリングが終了したときに呼び出されるハンドラです。
|
Void |
FocusNotifyHandler(
FocusNotifyConstRef notify
) [ハンドラ] カーソルが移動したときに呼び出されるハンドラです。
|
Void |
HandleBoundGlobal(
SFXRectangleConstRef rectangle
)
[非推奨(廃止予定 API)] グローバル領域が変化したときに呼び出される関数です。
|
Void |
HandleRenderRequest(
SFXGraphicsPtr graphics
) 描画イベントを受信したときに呼び出される関数です(レスポンダを描画します)。
|
Void |
JumpNotifyHandler(
JumpNotifyConstRef notify
) [ハンドラ] リンクが押されたときに呼び出されるハンドラです。
|
Bool |
ResponseNotifyHandler(
ResponseNotifyConstRef notify
) [ハンドラ] サーバーへの接続が完了し、レンダリングが始まる前に呼び出されるハンドラです。
|
static SFYResponderSmp |
Factory(
SFYResponderPtr responder
, SFCErrorPtr exception = null
)
(SFYResponder から継承)
NewInstance 関数の実装を補助します。
|
SFYResponderSmp |
GetThis( Void )
(SFYResponder から継承)
このレスポンダのスマートポインタを取得します。
|
Void |
HandleBoundOptimize(
SFXRectanglePtr rectangle
)
(SFYWidget から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベントを受信したときに呼び出される関数です(指定した矩形に収まる範囲内で最適な領域を計算します)。
|
Void |
HandleBoundReal( Void )
(SFYControl から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベントを受信したときに呼び出される関数です
(実領域が変化したときの処理を行います)。
|
Void |
HandleBoundRequest(
SFXRectanglePtr rectangle
)
(SFYWidget から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベントを受信したときに呼び出される関数です(最適な領域を計算します)。
|
Void |
HandleBoundVirtual( Void )
(SFYWidget から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベントを受信したときに呼び出される関数です
(仮想領域が変化したときの処理を行います)。
|
Void |
SetType(
SFCType param
)
(SFYResponder から継承)
指定された値をこのレスポンダのタイプに設定します。
|
型 |
---|
CodeEnum SFZWebBrowserControl クラスを表す定数です。
|
DEFAULT パラメータの初期値に関する列挙型です。
|
DoneNotify レンダリング終了時の情報を保持するクラスです。
|
FocusNotify ブラウザのフォーカス移動情報を保持するクラスです。
|
HistoryEntry 履歴内容を表す構造体です。
|
JumpNotify
ブラウザで押されたリンクの情報を保持するためのクラスです。
|
ResponseNotify サーバーへの接続が完了し、レンダリングが始まる前の情報を保持するクラスです。
|
HorizontalEnum
(SFYResponder から継承)
水平方向のアライメントを表す定数です。
|
VerticalEnum
(SFYResponder から継承)
垂直方向のアライメントを表す定数です。
|
[ protected, explicit ] SFZTabControl(Void);
このコンストラクタは、SFZWebBrowserControl インスタンスの初期化処理を行います。 詳細は、内部実装のコードを参照してください。
このコンストラクタの内部実装は以下の通りです。
/*protected */SFZWebBrowserControl::SFZWebBrowserControl(Void) static_throws { SFXRectangle rect; SFCError error(SFERR_NO_ERROR); if (static_try()) { SetType(CODE_TYPE); static_throw(MakeHandler()); if (static_try()) { _webCode = 0; _optBodyMem = null; _history = null; _stateHistory = null; _fullscreen_edit = false; _fepin = false; SetMaximumValue(DEFAULT_HISTORY_SIZE); if ((_viewer = SFBHTMLViewer::NewInstance(&error)) != null) { if ((_stateHistory = ::new SFXAnsiString[GetHistorySize()]) != null) { if ((_history = ::new HistoryEntry[GetHistorySize()]) != null) { RenderSafe(); _viewer->SetRect(SFXRectangle::EmptyInstance()); _viewer->SetProperties(HVP_LOADALLIMAGES | HVP_INVALIDATION | _viewer->GetProperties()); _viewer->SetNotifyFn(NotifyHandler, this); } else { static_throw(SFERR_NO_MEMORY); } } else { static_throw(SFERR_NO_MEMORY); } } else { static_throw(SFERR_FAILED); } } } }// SFZWebBrowserControl::SFZWebBrowserControl // /*private */Void SFZWebBrowserControl::RenderSafe(Void) { SFXGraphics::GetInstance()->SetClip(SFXRectangle::EmptyInstance()); }// SFZWebBrowserControl::RenderSafe // /*private */SFCError SFZWebBrowserControl::MakeHandler(Void) { static SFXEventRange::AtomRecConst range[] = { { SFEVT_BEGIN, SFEVT_END, SFP16_BEGIN, SFP16_END }, { SFEVT_CTL_TAB, SFEVT_CTL_TAB, SFP16_BEGIN, SFP16_END }, { SFEVT_APP_RESUME, SFEVT_APP_RESUME, SFP16_BEGIN, SFP16_END }, { SFEVT_APP_SUSPEND, SFEVT_APP_SUSPEND, SFP16_BEGIN, SFP16_END }, { SFEVT_RESPONDER_STATE, SFEVT_RESPONDER_STATE, SFP16_STATE_FOCUS, SFP16_STATE_FOCUS }, }; SFYHandler::RuleRec rule[lengthof(range)]; SFCError error(SFERR_NO_ERROR); rule[0].spp = XANDLER_FUNCTION(NativeHandler); rule[0].reference = this; rule[1].spp = XANDLER_FUNCTION(CtlTabHandler); rule[1].reference = this; rule[2].spp = XANDLER_FUNCTION(ResumeHandler); rule[2].reference = this; rule[3].spp = XANDLER_FUNCTION(SuspendHandler); rule[3].reference = this; rule[4].spp = XANDLER_FUNCTION(OnState); rule[4].reference = this; error = RegisterHandler(atomic_cast(range), rule, lengthof(range)); return error; }// SFZWebBrowserControl::MakeHandler // /*protected */XANDLER_IMPLEMENT_BOOLEVENT(SFZWebBrowserControl, NativeHandler, invoker, event) { Bool result(false); unused(invoker); if (!_fullscreen_edit) { RenderSafe(); } if (_viewer != null && _viewer->IsActive()) { if (_viewer->HandleEvent(event)) { result = true; } else { #if defined TARGET_EXTENSION_KDDI #if TARGET_VERSION_GE(3, 1, 0) if (event.GetType() == SFEVT_CTL_TEXT_MODECHANGED) { switch (event.GetP16()) { case TMJ_FEPIN://TMJ_FEPIN: _fepin = true; break; case TMJ_FEPOUT://TMJ_FEPOUT: _fepin = false; break; default: break; } } #endif #endif } } return result; }// XANDLER_IMPLEMENT_BOOLEVENT(SFZWebBrowserControl, NativeHandler, invoker, event) // /*protected */XANDLER_IMPLEMENT_BOOLVOID(SFZWebBrowserControl, CtlTabHandler, invoker) { unused(invoker); return false; }// XANDLER_IMPLEMENT_BOOLVOID(SFZWebBrowserControl, CtlTabHandler, invoker) /*protected */XANDLER_IMPLEMENT_VOIDSUSPEND(SFZWebBrowserControl, SuspendHandler, invoker, reason, info) { unused(invoker); unused(reason); unused(info); RenderSafe(); Stop(); ClearWebRespAndOpts(); _web.Release(); _resumeProperty = _viewer->GetProperties(); _viewer->Reset(); return; }// XANDLER_IMPLEMENT_VOIDSUSPEND // /*private */Void SFZWebBrowserControl::ClearWebRespAndOpts(Void) { _webResp.Release(); _optMethod = SFXAnsiString::EmptyInstance(); _optBody.Release(); if (_optBodyMem != null) { MemoryFree(_optBodyMem); } _optBodyMem = null; _optSsl.Release(); } /*protected */XANDLER_IMPLEMENT_VOIDRESUME(SFZWebBrowserControl, ResumeHandler, invoker, environment) { SFCError error(SFERR_NO_ERROR); unused(invoker); unused(environment); RenderSafe(); if ((_viewer = SFBHTMLViewer::NewInstance(&error)) != null) { RenderSafe(); AdjustViewer(GetGlobalBound()); _viewer->SetProperties(_resumeProperty); _viewer->SetNotifyFn(NotifyHandler, this); } _viewer->SetActive(GetStateVisible() && GetStateActive() && GetStateEnable()); _viewer->SetViewState(_stateHistory[GetCurrentHistoryIndex()]); Reload(); return; }// XANDLER_IMPLEMENT_VOIDRESUME // /*private */Void SFZWebBrowserControl::AdjustViewer(SFXRectangleConstRef rectangle) const { SFXRectangle grect(rectangle); grect.Deflate(VIEWER_MARGIN, VIEWER_MARGIN); _viewer->SetRect(grect); }// SFZWebBrowserControl::AdjustViewer // /*private */XANDLER_IMPLEMENT_VOIDSTATE(SFZWebBrowserControl, OnState, invoker, reason, state) { Bool focus(GetStateFocus(true)); unused(invoker); unused(reason); unused(state); if (focus != _viewer->IsActive()) { _viewer->SetActive(focus); } return; }// XANDLER_IMPLEMENT_VOIDSTATE(SFZWebBrowserControl, OnState, invoker, reason, state) /*private static */Void SFZWebBrowserControl::NotifyHandler(VoidPtr p, HViewNotify* n) { SFZWebBrowserControlPtr self(reinterpret_cast<SFZWebBrowserControlPtr>(p)); Notify* notify = static_cast<Notify*>(n); SFBShellSmp shell; SFXAnsiString state; SInt32 elementNo; SFYResponderSmp root; switch (notify->GetType()) { case HVN_DONE: if (notify->u.nDone == SFERR_NO_ERROR) { if ((state = self->_stateHistory[self->GetCurrentHistoryIndex()]) != SFXAnsiString::EmptyInstance()) { self->_viewer->SetViewState(state); } elementNo = self->FindElement("title", 0); self->_history[self->GetCurrentHistoryIndex()].title = elementNo < 0 ? SFXAnsiString::EmptyInstance() : self->GetElementText(elementNo); } if (notify->u.nDone > SFERR_NO_ERROR) { self->_viewer->GetOption(HVOPT_N_ERROR, (HVOpt*)(¬ify->u.nDone)); notify->u.nDone = -notify->u.nDone; // error code change to negative } else { notify->u.nDone = self->_webCode; } self->DoneNotifyHandler(*(static_cast<DoneNotify*>(notify))); break; case HVN_JUMP: case HVN_SUBMIT: self->JumpNotifyHandler(*(static_cast<JumpNotify*>(notify))); break; case HVN_FOCUS: self->FocusNotifyHandler(*(static_cast<FocusNotify*>(notify))); break; case HVN_FULLSCREEN_EDIT: // htmlviewer edit field going into fullscreen mode self->_fullscreen_edit = true; self->Invalidate(); break; case HVN_REDRAW_SCREEN: // htmlviewer drew outside of bounding rectangle, applet must redraw it's screen self->_fullscreen_edit = false; if ((root = self->GetRoot()) != null) { root->Render(true); } break; case HVN_INVALIDATE: // htmlviewer needs redraw if (self->_fepin == false && self->GetStateFocus(true)) { self->Invalidate(); } else { self->_viewer->Redraw(); } break; #if TARGET_VERSION_GE(3, 1, 0) case HVN_PAGEDONE: break; case HVN_CONTENTDONE: self->Render(); break; #endif default: break; } }// SFZWebBrowserControl::NotifyHandler //
SFZWebBrowserControl::SetHistorySize | SFZWebBrowserControl::Reload | SFYControl::SetMaximumValue | SFZWebBrowserControl::HistoryEntry | SFZWebBrowserControl::DEFAULT | SFZWebBrowserControl::DoneNotify | SFZWebBrowserControl::ResponseNotify | SFZWebBrowserControl::FocusNotify | SFZWebBrowserControl::JumpNotify | SFBHTMLViewer | SFBWeb | SFBWebResp | BREW API IHtmlViewer | BREW API IWeb| BREW API IWebResp
[ public, virtual ] ~SFZWebBrowserControl(Void);
このデストラクタは、通信、 HTML のレンダリングを中断し、内部で確保した全てのリソースを解放します。
このデストラクタの内部実装は以下の通りです。
/*protected virtual */SFZWebBrowserControl::~SFZWebBrowserControl(Void) { if (_viewer != null) { RenderSafe(); Stop(); _viewer->Reset(); } ClearWebRespAndOpts(); if (_history != null) { ::delete [] _history; } if (_stateHistory != null) { ::delete [] _stateHistory; } }// SFZWebBrowserControl::~SFZWebBrowserControl // /*private */Void SFZWebBrowserControl::RenderSafe(Void) { SFXGraphics::GetInstance()->SetClip(SFXRectangle::EmptyInstance()); }// SFZWebBrowserControl::RenderSafe //
[ public ] Void ClearHistory(Void);
この関数は、履歴リストを空にします。
![]() |
注意 |
---|---|
現在の履歴番号は 0 に戻ります。 |
この関数の内部実装は以下の通りです。
/*public */Void SFZWebBrowserControl::ClearHistory(Void) { UInt32 i; for (i = 0; i < GetHistorySize(); ++i) { _history[i].title = SFXAnsiString::EmptyInstance(); _history[i].url = SFXAnsiString::EmptyInstance(); } SetCurrentValue(0); return; }// SFZWebBrowserControl::ClearHistory //
[ protected, virtual ] Void DoneNotifyHandler( DoneNotifyConstRef notify // 通知情報 );
HTTP のレスポンスコード、 BREW のエラーコードが通知されます。
この関数は、レンダリングが終了したときに呼び出されるハンドラです。
デフォルトの実装は、何も行いません。
タイムアウトなどのエラー処理を行う場合は、 この関数をオーバーロードして処理を記述する必要があります。
![]() |
注意 |
---|---|
SFZWebBrowserControl::ResponseNotifyHandler 関数と呼び出されるタイミングが異なります。 |
以下は、オーバーロードしてエラー処理を行うコードです。
#include <SFZResponder/SFZControl/SFZWebBrowserControl.hpp> SFMTYPEDEFRESPONDER(MyBrowserControl) class MyBrowserControl : public SFZWebBrowserControl { SFBSEALRESPONDER(MyBrowserControl) SFMRESPONDERINSTANTIATEFOUR(MyBrowserControl, SFZWebBrowserControl, SFYControl, SFYWidget, SFYResponder) public: static MyBrowserControlSmp NewInstance(SFCErrorPtr exception = null); protected: explicit MyBrowserControl(Void) static_throws; virtual ~MyBrowserControl(Void); virtual Void DoneNotifyHandler(DoneNotifyConstRef notify) { if (notify.GetErrorCode() != SFERR_NO_ERROR) { // 通信エラーならエラーダイアログを表示する ErrorDialog(notify.GetErrorCode()); } else if (WEB_SUCCEEDED(notify.GetDoneCode())) { // HTTP エラーなら警告ダイアログを表示する WarningDialog(notify.GetResposenCode()); } } };
この関数の内部実装は以下の通りです。
/*protected virtual */Void SFZWebBrowserControl::DoneNotifyHandler(DoneNotifyConstRef notify) { unused(notify); return; }// SFZWebBrowserControl::DoneNotifyHandler //
SFZWebBrowserControl::DoneNotify | SFZWebBrowserControl::FocusNotifyHandler | SFZWebBrowserControl::JumpNotifyHandler | SFZWebBrowserControl::ResponseNotifyHandler
[ public, const ] SInt32 FindElement( ACharConstPtr element // 検索する要素名 SInt32 no // 取得する要素の番号 );
検索する要素名を指定します。
検索する要素の何番目の位置を取得するかを指定します。
0 を指定すると、element 引数の名前と一致する最初の要素の位置を返します。 n を指定すると、 element 引数の名前と一致する n + 1 番目の要素の位置を返します。
この関数は、現在表示中のページから、指定された要素を検索します。
![]() |
注意 |
---|---|
この関数は、内部で SFBHTMLViewer::FindElem 関数( BREW API IHTMLVIEWER_FindElem)を呼び出します。 |
![]() |
Tip |
---|---|
戻り値(要素の位置)は、SFZWebBrowserControl::GetElementText 関数で使用します。 |
この関数の内部実装は以下の通りです。
/*public */SInt32 SFZWebBrowserControl::FindElement(ACharConstPtr element, SInt32 no) const { return _viewer->FindElem(element, no); }// SFZWebBrowserControl::FindElement //
[ protected, virtual ] Void FocusNotifyHandler( FocusNotifyConstRef notify // 通知情報 );
現在カーソルがあたっているタグの位置、種類、状態が通知されます。
この関数は、カーソルが移動したときに呼び出されるハンドラです。
デフォルトの実装以外の処理を行いたい場合は、 この関数をオーバーライドします。
デフォルトの実装は、何も行いません。
この関数の内部実装は以下の通りです。
/*protected virtual */Void SFZWebBrowserControl::FocusNotifyHandler(FocusNotifyConstRef notify) { unused(notify); return; }// SFZWebBrowserControl::FocusNotifyHandler //
SFZWebBrowserControl::FocusNotify | SFZWebBrowserControl::DoneNotifyHandler | SFZWebBrowserControl::JumpNotifyHandler | SFZWebBrowserControl::ResponseNotifyHandler
[ public, const ] HistoryEntry GetCurrentHistory(Void);
現在表示しているページの履歴内容(URL とタイトル)。
この関数は、現在表示しているページの履歴内容(URL とタイトル)を取得します。
この関数の内部実装は以下の通りです。
/*public */SFZWebBrowserControl::HistoryEntry SFZWebBrowserControl::GetCurrentHistory(Void) const { return GetHistory(GetCurrentHistoryIndex()); }// SFZWebBrowserControl::GetCurrentHistory //
SFZWebBrowserControl::GetCurrentHistoryIndex | SFZWebBrowserControl::GetHistory | SFZWebBrowserControl::HistoryEntry
[ public, const ] UInt32 GetCurrentHistoryIndex(Void);
現在表示しているページの履歴番号。
この関数は、現在の履歴番号を取得します。
![]() |
注意 |
---|---|
現在の履歴番号は、 SFZWebBrowserControl::Move 関数、 SFZWebBrowserControl::Previous 関数、 SFZWebBrowserControl::Next 関数で増減し、 SFZWebBrowserControl::ClearHistory 関数で 0 に初期化されます。 |
この関数の内部実装は以下の通りです。
/*public */inline UInt32 SFZWebBrowserControl::GetCurrentHistoryIndex(Void) const { return static_cast<UInt32>(GetCurrentValue()); }// SFZWebBrowserControl::GetCurrentHistoryIndex //
SFZWebBrowserControl::Move | SFZWebBrowserControl::Previous | SFZWebBrowserControl::Next | SFZWebBrowserControl::ClearHistory
[ public, const ] SFXAnsiString GetElementText( SInt32 elementIndex // 要素の位置 );
要素の位置を指定します。 この引数には、 SFZWebBrowserControl::FindElement 関数の戻り値を指定します。
指定された要素の内容。
この関数は、現在表示しているページから指定された要素の内容を取得します。
要素の中身がない場合は空文字列 SFXAnsiString::EmptyInstance() を返します。
![]() |
注意 |
---|---|
この関数は、内部で SFBHTMLViewer::GetElemText 関数( BREW API IHTMLVIEWER_GetElemText)を呼び出します。 |
この関数の内部実装は以下の通りです。
/*public */SFXAnsiString SFZWebBrowserControl::GetElementText(SInt32 index) const { SInt32 len; SInt32 size(128); SFXAnsiString result; for (result.SetThreshold((UInt16)size); (len = _viewer->GetElemText(index, &result)) == size; result.SetThreshold((UInt16)size)) { if (len != IHTMLVIEWER_BADELEMENT) { size *= 2; } else { result = SFXAnsiString::EmptyInstance(); break; } } return result; }// SFZWebBrowserControl::GetElemText //
SFZWebBrowserControl::FindElement | SFXAnsiString::EmptyInstance | SFBHTMLViewer::GetElemText | BREW API IHTMLVIEWER_GetElemText
[ public, const ] HistoryEntry GetHistory( UInt32 historyIndex = 0 // 履歴番号 );
履歴番号を指定します。 指定しなければ、履歴番号 0 番(最後に訪れた履歴内容)になります。
指定された履歴番号の履歴内容。
この関数は、指定された履歴番号の履歴内容を取得します。
履歴情報がない、もしくは無効な履歴番号を指定された場合は、 戻り値の履歴内容である SFZWebBrowserControl::HistoryEntry 構造体の url 変数には空文字列 SFXAnsiString::EmptyInstance() が返却されます。
この関数の内部実装は以下の通りです。
/*public */SFZWebBrowserControl::HistoryEntry SFZWebBrowserControl::GetHistory(UInt32 index) const { HistoryEntry dummy; if (index < GetHistorySize()) { return _history[index]; } else { dummy.url = SFXAnsiString::EmptyInstance(); return dummy; } }// SFZWebBrowserControl::GetHistory //
SFZWebBrowserControl::GetHistorySize | SFZWebBrowserControl::GetHistoryList | SFZWebBrowserControl::GetCurrentHistory | SFXAnsiString::EmptyInstance | SFZWebBrowserControl::HistoryEntry
[ public, const ] HistoryEntryConstPtr GetHistoryList(Void);
履歴リストへのポインタ。
この関数は、履歴リストを取得します。
![]() |
注意 |
---|---|
配列の先頭は一番新しい履歴となっており、 履歴番号と配列のインデックスは一致します。 履歴リストは SFZWebBrowserControl::HistoryEntry 構造体の配列です。 そのサイズは SFZWebBrowserControl::GetHistorySize 関数で取得できます。 履歴情報が設定されていない場合、 SFZWebBrowserControl::HistoryEntry 構造体の url 変数には空文字列 SFXAnsiString::EmptyInstance() が設定されています。 |
![]() |
使用上の注意 |
---|---|
履歴リストの内容は書き換えてはいけません。 |
以下は、すべての履歴内容(タイトルと URL)をデバッグ表示するコードです。
void PrintHistoryList(SFBrowserControlConstRef browser) { int i; SFBrowserControl::HistoryEntryConstPtr historyList = browser.GetHistoryList(); for (i=0; i < browser.GetHistorySize(); i++) { DBGPRINTF("title '%s' url %s", (ACharConstPtr)historyList[i].title, (ConstACharPtr)historyList[i].url); } }
この関数の内部実装は以下の通りです。
/*public */inline SFZWebBrowserControl::HistoryEntryConstPtr SFZWebBrowserControl::GetHistoryList(Void) const { return _history; }// SFZWebBrowserControl::GetHistoryList //
[ public, const ] UInt32 GetHistorySize(Void);
履歴リストのエントリ数。
この関数は、履歴リストのエントリ数を取得します。
![]() |
注意 |
---|---|
SFZWebBrowserControl::Move 関数や SFZWebBrowserControl::GetHistory 関数などで使用する履歴番号は、 履歴リストのエントリ数より小さな値でなければいけません。 |
![]() |
Tip |
---|---|
履歴リストは SFZWebBrowserControl::GetHistoryList 関数を使用して取得できます。 |
この関数の内部実装は以下の通りです。
/*public */inline UInt32 SFZWebBrowserControl::GetHistorySize(Void) const { return static_cast<UInt32>(GetMaximumValue()); }
SFZWebBrowserControl::SetHistorySize | SFZWebBrowserControl::GetHistory | SFZWebBrowserControl::GetHistoryList | SFZWebBrowserControl::Move
[ public, const ] SInt32 GetIndent(Void);
インデントの幅。[単位: ピクセル]
この関数は、HTML 表示のインデントの幅を取得します。[単位: ピクセル]
![]() |
注意 |
---|---|
この関数は、内部で引数のオプション ID に "HVOPT_N_INDENT" を指定して BREW API IHTMLVIEWER_GetOption 関数を呼び出します。 |
この関数の内部実装は以下の通りです。
/*public */SInt32 SFZWebBrowserControl::GetIndent(Void) const { HVOpt opt; SInt32 pixel; if (_viewer->GetOption(HVOPT_N_INDENT, &opt) == SFERR_NO_ERROR) { pixel = SInt32(opt); } else { pixel = -1; } return pixel; }// SFZWebBrowserControl::GetIndent //
[ public, const ] SFXRGBColor GetLinkColor(Void);
リンク文字列の表示色。
この関数は、HTML 表示のリンクの文字の表示色を取得します。
![]() |
注意 |
---|---|
この関数は、内部で引数のオプション ID に "HVOPT_RGB_LINK" を指定して BREW API IHTMLVIEWER_GetOption 関数を呼び出します。 |
この関数の内部実装は以下の通りです。
/*public */SFXRGBColor SFZWebBrowserControl::GetLinkColor(Void) const { HVOpt opt; SFXRGBColor color; if (_viewer->GetOption(HVOPT_RGB_LINK, &opt) == SFERR_NO_ERROR) { color = SFXRGBColor(RGBVAL(opt)); } return color; }// SFZWebBrowserControl::GetLinkColor //
SFZWebBrowserControl::SetLinkColor | SFZWebBrowserControl::GetTextColor | SFBHTMLViewer::GetOption | BREW API IHTMLVIEWER_GetOption
[ public, const ] SInt32 GetParagraphSpacing(Void);
段落間の行間の長さ。[単位: ピクセル]
この関数は、HTML 表示の段落間の行間の長さを取得します。[単位: ピクセル]
![]() |
注意 |
---|---|
この関数は、内部で引数のオプション ID に "HVOPT_N_VSPACE" を指定して BREW API IHTMLVIEWER_GetOption 関数を呼び出します。 |
この関数の内部実装は以下の通りです。
/*public */SInt32 SFZWebBrowserControl::GetParagraphSpacing(Void) const { HVOpt opt; SInt32 pixel; if (_viewer->GetOption(HVOPT_N_VSPACE, &opt) == SFERR_NO_ERROR) { pixel = SInt32(opt); } else { pixel = -1; } return pixel; }// SFZWebBrowserControl::GetParagraphSpacing //
SFZWebBrowserControl::SetParagraphSpacing | SFBHTMLViewer::GetOption | BREW API IHTMLVIEWER_GetOption
[ public, const ] SInt32 GetScrollbarWidth(Void);
スクロールバーの幅。[単位: ピクセル]
この関数は、HTML 表示のスクロールバーの幅を取得します。[単位: ピクセル]
![]() |
注意 |
---|---|
この関数は、内部で引数のオプション ID に "HVOPT_N_SBWIDTH" を指定して BREW API IHTMLVIEWER_GetOption 関数を呼び出します。 |
この関数の内部実装は以下の通りです。
/*public */SInt32 SFZWebBrowserControl::GetScrollbarWidth(Void) const { HVOpt opt; SInt32 pixel; if (_viewer->GetOption(HVOPT_N_SBWIDTH, &opt) == SFERR_NO_ERROR) { pixel = SInt32(opt); } else { pixel = -1; } return pixel; }// SFZWebBrowserControl::GetScrollbarWidth //
SFZWebBrowserControl::SetScrollbarWidth | SFBHTMLViewer::GetOption | BREW API IHTMLVIEWER_GetOption
[ public, const ] SFXRGBColor GetTextColor(Void);
HTML 表示のテキストの表示色。
この関数は、HTML 表示のテキストの表示色を取得します。
![]() |
注意 |
---|---|
この関数は、内部で引数のオプション ID に "HVOPT_RGB_TEXT" を指定して BREW API IHTMLVIEWER_GetOption 関数を呼び出します。 |
この関数の内部実装は以下の通りです。
/*public */SFXRGBColor SFZWebBrowserControl::GetTextColor(Void) const { HVOpt opt; SFXRGBColor color; if (_viewer->GetOption(HVOPT_RGB_TEXT, &opt) == SFERR_NO_ERROR) { color = SFXRGBColor(RGBVAL(opt)); } return color; }// SFZWebBrowserControl::GetTextColor //
SFZWebBrowserControl::SetTextColor | SFZWebBrowserControl::GetLinkColor | SFBHTMLViewer::GetOption | BREW API IHTMLVIEWER_GetOption
[ public, const ] SFBWebSmpConstRef GetWeb(Void);
SFZWebBrowserControl::SetWeb 関数で設定された IWeb インターフェース。
この関数は、このコントロールが内部で保持する BREW API IWeb インターフェースを取得します。
BREW API IWeb インターフェースが設定されていない場合は、null を返します。
![]() |
WebOpt 指定時の注意 |
---|---|
他の用途で利用するまでは、IWeb インターフェースに設定した WebOpt データを保持する必要があります。 詳しくは、BREW API リファレンス、IWeb インターフェースの「 WEBOPT の寿命に関する注意事項 」を参照してください。 |
![]() |
サスペンド時の振る舞い |
---|---|
サスペンドしたとき、WebOpt の情報はリセットされ IWeb インターフェースを内部で作成する設定(デフォルト状態)に戻ります。 サスペンド前の IWeb インターフェースを使うには、レジューム時に WebOpt データを再設定する必要があります。 |
この関数の内部実装は以下の通りです。
/*public */inline SFBWebSmpConstRef SFZWebBrowserControl::GetWeb(Void) const { return _web; }// SFZWebBrowserControl::GetWeb //
[ protected, virtual ] Void HandleBoundGlobal( SFXRectangleConstRef rectangle // グローバル領域 );
この関数は、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_GLOBAL, rectangle)] を受信したときに呼び出されます。
グローバル領域の変更時に追加の処理を行いたい場合は、 この関数をオーバーライドします。
デフォルトの実装は、内部で保持する BREW API IHtmlViewer インスタンスの領域をこのコントロールを上下左右 3 ピクセルずつ縮小した矩形領域に設定します。
![]() |
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_GLOBAL) イベントの送信 |
---|---|
領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_GLOBAL, rectangle)] は SFYResponder::SetRealBound または SFYResponder::SetVirtualBound 関数の呼び出しによってグローバル領域が変化したときに発生します。 このとき、(SFEVT_RESPONDER_BOUND, SFP16_BOUND_GLOBAL) イベントは描画エンジンを起動した直後、描画エンジンによって送信されます。 |
![]() |
グローバル領域の変更時の処理 |
---|---|
この仮想関数をオーバーライドする以外に、 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND]を定義・実装し レスポンダに登録して行うことも可能です。 グローバル領域の変更処理は、最初に仮想関数を実行し、次に領域イベント専用ハンドラを登録した順に実行して行われます。 領域イベント専用ハンドラを宣言し登録する手間が省けるので、 通常はこの仮想関数をオーバーライドして処理を記述します。 |
![]() |
[非推奨(廃止予定 API)] |
---|---|
この関数は、SophiaFramework UNIVERSE 6.0 で廃止される予定です。 描画ハンドラの処理などでグローバル領域が必要な場合は、 SFYResponder::GetGlobalBound 関数を呼び出して取得してください。 |
この関数の内部実装は以下の通りです。
#define VIEWER_MARGIN (3) /*protected virtual */Void SFZWebBrowserControl::HandleBoundGlobal(SFXRectangleConstRef rectangle) { AdjustViewer(rectangle); }// SFZWebBrowserControl::HandleBoundGlobal // /*private */Void SFZWebBrowserControl::AdjustViewer(SFXRectangleConstRef rectangle) const { SFXRectangle grect(rectangle); grect.Deflate(VIEWER_MARGIN, VIEWER_MARGIN); _viewer->SetRect(grect); }// SFZWebBrowserControl::AdjustViewer //
SFBControl::SetRect | SFYResponder::SetRealBound | SFYResponder::SetVirtualBound | グローバル領域 | 領域イベント[SFEVT_RESPONDER_BOUND]
[ protected, virtual, const ] Void HandleRenderRequest( SFXGraphicsPtr graphics // グラフィックスオブジェクト );
この関数は、 描画イベント [SFXEvent(SFEVT_RESPONDER_RENDER, SFP16_RENDER_REQUEST, graphics)] を受信したときに呼び出されます。
デフォルトの実装は、このレスポンダを描画します。 詳細は、内部実装コードを参照してください。
枠線の色を変更するなど独自の描画処理を行いたい場合は、この関数をオーバーライドします。
![]() |
レスポンダの描画手順 | ||||
---|---|---|---|---|---|
|
この関数の内部実装は以下の通りです。
/*protected virtual */Void SFZWebBrowserControl::HandleRenderRequest(SFXGraphicsPtr graphics) const { static SFXBevelColor::AtomRecConst frameRgb = { {{{0x00, 0xAA, 0xAA, 0xAA}}}, {{{0x00, 0xFF, 0xFF, 0xFF}}}, {{{0x00, 0xFF, 0xFF, 0xFF}}} }; static SFXRGBColor::AtomRecConst theme[] = { {{{0x00, 0x00, 0x00, 0x00}}}, {{{0x00, 0xDD, 0x99, 0x99}}}, {{{0x00, 0x99, 0xDD, 0x99}}}, {{{0x00, 0xFF, 0xFF, 0xFF}}}, {{{0x00, 0x66, 0x66, 0x66}}} }; SFBDisplaySmp display; SFXRectangle rectangle(GetLocalBound()); SFXRectangle grect(GetGlobalBound()); graphics->DrawBevelRectangle(rectangle, frameRgb); rectangle.Deflate(1, 1); graphics->DrawRectangle(rectangle, theme[0]); rectangle.Deflate(1, 1); if (GetStateFocus()) { graphics->DrawRectangle(rectangle, theme[1]); } else { graphics->DrawRectangle(rectangle, theme[3]); } if (_fullscreen_edit) { display = SFXGraphics::GetInstance()->GetSFBDisplay(); display->ResetClipRect(); } _viewer->Redraw(); }// SFZWebBrowserControl::HandleRenderRequest //
SFYResponder::Invalidate | SFYResponder::Render | SFYWidget::SetBackgroundColor | 描画イベント[SFEVT_RESPONDER_RENDER] | 描画イベント専用ハンドラ[XANDLER_DECLARE_VOIDRENDER] | 描画処理 | イベントループ | レスポンダツリー
[ public, const ] Bool IsBusy(Void);
この関数は、通信中またはレンダリング中であるかどうかを判定をします。
この関数の内部実装は以下の通りです。
/*public */Bool SFZWebBrowserControl::IsBusy(Void) const { return _webCallback.IsQueued() || _viewer->IsBusy(); }// SFZWebBrowserControl::IsBusy //
[ public, const ] Bool IsInlineEditEnable(Void);
この関数は、文字をインラインで入力する設定であるかどうかを判定します。
[ public, const ] Bool IsScrollbarEnable(Void);
この関数は、スクロールバーがあるかどうかを判定をします。
[ protected, virtual ] Void JumpNotifyHandler( JumpNotifyConstRef notify // 通知情報 );
リンク先 URL、 HTTP メソッド、 POST データが通知されます。
この関数は、リンクが押されたときに呼び出されるハンドラです。
デフォルトの実装以外の処理を行いたい場合は、 この関数をオーバーライドします。
デフォルトの実装は、リンク先 url を自動的に Open します。
リンクが http://、https://、file://、res: 以外のスキームのときは何もしません。
以下のコードでは、 リンクが mailto: ならメーラーを呼ぶようにこの関数をオーバーライドしています。
#include <SFZResponder/SFZControl/SFZWebBrowserControl.hpp> SFMTYPEDEFRESPONDER(MyBrowserControl) class MyBrowserControl : public SFZWebBrowserControl { SFBSEALRESPONDER(MyBrowserControl) SFMRESPONDERINSTANTIATEFOUR(MyBrowserControl, SFZWebBrowserControl, SFYControl, SFYWidget, SFYResponder) public: static MyBrowserControlSmp NewInstance(SFCErrorPtr exception = null); protected: explicit MyBrowserControl(Void) static_throws; virtual ~MyBrowserControl(Void); virtual Void JumpNotifyHandler(JumpNotifyConstRef notify) { if (notify.GetUrl().StartWith("mailto:")) { // mailto:ならメーラーを呼ぶ Mailer(notify.GetUrl()); } else { // それ以外なら標準ハンドラを呼ぶ SFZWebBrowserControl::JumpNotifyHandler(notify); } } };
この関数の内部実装は以下の通りです。
/*protected virtual */Void SFZWebBrowserControl::JumpNotifyHandler(JumpNotifyConstRef notify) { SFXAnsiString url; SFBWebUtilSmp webUtil; SFCError error(SFERR_NO_ERROR); if ((webUtil = SFBWebUtil::NewInstance(&error)) != null) { if (!_history[GetCurrentHistoryIndex()].url.IsEmpty()) { url = webUtil->MakeUrl(_history[GetCurrentHistoryIndex()].url, notify.GetUrl()); } else { url = notify.GetUrl(); } if (notify.GetType() == HVN_JUMP) { Navigate(url); } else { if (notify.GetMethod().Compare("POST") == 0) { Navigate(url, notify.GetMethod(), notify.GetData()); } else { Navigate(url, notify.GetMethod()); } } } return; }// SFZWebBrowserControl::JumpNotifyHandler //
SFZWebBrowserControl::JumpNotify | SFZWebBrowserControl::Navigate | SFZWebBrowserControl::DoneNotifyHandler | SFZWebBrowserControl::FocusNotifyHandler | SFZWebBrowserControl::ResponseNotifyHandler
[ public ] SFCError Load( SFXAnsiStringConstRef data // HTML 文書 );
[ public ] SFCError Load( SFXAnsiStringConstRef data // HTML 文書 SFXAnsiStringConstRef url // 基準となる URL );
HTML 文書とみなす文字列です。
基準となる URL です。 HTML 文書内にある相対 URL 表記は、 この引数で指定された URL からの相対パスと解釈されます。
この関数は、指定された文字列を HTML 文書とみなして、レンダリングを開始します。
![]() |
注意 |
---|---|
インライン画像は取得できしだい表示されます。 |
![]() |
通信に関するエラー |
---|---|
通信に関するエラーは戻り値では取得できません。 レンダリングの終了や、通信に関するエラーを取得する場合は、 SFZWebBrowserControl クラスを継承して、 SFZWebBrowserControl::DoneNotifyHandler 関数をオーバロードするクラスを作成する必要があります。 |
この関数の内部実装は以下の通りです。
/*public */SFCError SFZWebBrowserControl::Load(SFBSourceSmpConstRef source) { return Load(source, UNKNOWN_URL); }// SFZWebBrowserControl::Load(SFBSourceSmpConstRef source) // /*public */SFCError SFZWebBrowserControl::Load(SFBSourceSmpConstRef source, SFXAnsiStringConstRef url) { SFCError error(SFERR_NO_ERROR); ReorderHistory(); if (IsBusy()) { Stop(); } if ((error = WebSetup(url)) == SFERR_NO_ERROR) { _history[GetCurrentHistoryIndex()].url = url; _viewer->SetURL(url); _viewer->SetIWeb(_web); _viewer->LoadSource(source); } return error; }// SFZWebBrowserControl::Load(SFBSourceSmpConstRef source, SFXAnsiStringConstRef url) // /*private */Void SFZWebBrowserControl::ReorderHistory(Void) { UInt32 i; UInt32 j; _stateHistory[GetCurrentHistoryIndex()] = _viewer->GetViewState(); if (GetCurrentHistoryIndex() == 0) { for (i = GetHistorySize() - 1; i >= 1; --i) { _history[i] = _history[i - 1]; _stateHistory[i] = _stateHistory[i - 1]; } } else { for (i = 1; i < GetHistorySize(); ++i) { j = GetCurrentHistoryIndex() + i - 1; if (j < GetHistorySize()) { _history[i] = _history[j]; _stateHistory[i] = _stateHistory[j]; } else { ClearHistory(i); } } } ClearHistory(0); SetCurrentValue(0); }// SFZWebBrowserControl::ReorderHistory // /*private */SFCError SFZWebBrowserControl::WebSetup(SFXAnsiStringConstRef url) { SFBWebUtilSmp webUtil; UrlParts parts; WebOpt webopt[4]; UIntN num; SFCError error; if ((webUtil = SFBWebUtil::NewInstance(&error)) != null) { ClearWebSubset(); if (_web == null) { if ((_web = SFBWeb::NewInstance(&error)) == null) { error = SFERR_FAILED; } } if (error == SFERR_NO_ERROR) { if (webUtil->ParseUrl(url, &parts) == SFERR_NO_ERROR) { if (url.StartsWith("http://") || url.StartsWith("https://") || url.StartsWith("file://") || url.StartsWith("res:")) { num = 0; webopt[num].nId = WEBOPT_FLAGS; webopt[num].pVal = null; _web->GetOpt(WEBOPT_FLAGS, null, &webopt[num]); webopt[num].pVal = (VoidPtr)(WEBREQUEST_NOWAITCONN | ((UInt32)webopt[num].pVal)); ++num; if (url.StartsWith("https://")) { if ((_optSsl = SFBSSLRootCerts::NewInstance(&error)) != null) { webopt[num].nId = WEBOPT_DEFAULTS; webopt[num].pVal = interface_cast(_optSsl.Get()); ++num; } else { error = SFERR_INVALID_PARAM; } } if (error == SFERR_NO_ERROR) { if (!_authHeader.IsEmpty()) { RemoveHeader(_authHeader); } if (UP_HASUSER(&parts)) { _authBaseUrl = SFXAnsiString::EmptyInstance(); if (!_authHeader.IsEmpty()) { _authHeader.Clear(); } MakeAuthHeader(parts.cpcUser, parts.cpcHost - parts.cpcUser - 1); // -1 for '@' if (_authHeader.IsEmpty()) { error = SFERR_NO_MEMORY; } } else if (!_authBaseUrl.IsEmpty() && (!url.StartsWith(_authBaseUrl))) { if (!_authHeader.IsEmpty()) { _authHeader.Clear(); } _authBaseUrl = SFXAnsiString::EmptyInstance(); } if (error == SFERR_NO_ERROR) { if (!_authHeader.IsEmpty()) { webopt[num].nId = WEBOPT_HEADER; webopt[num].pVal = _authHeader.GetBuffer(); ++num; } webopt[num].nId = WEBOPT_END; ASSERT(num < lengthof(webopt) - 1); error = _web->AddOpt(webopt); } } } else { error = SFERR_INVALID_PARAM; } } else { error = SFERR_INVALID_PARAM; } } } return error; }// SFZWebBrowserControl::WebSetup //
SFZWebBrowserControl::Navigate | SFZWebBrowserControl::DoneNotifyHandler | SFZWebBrowserControl::GetCurrentHistoryIndex | SFZWebBrowserControl::IsBusy | SFZWebBrowserControl::Stop
ジャンプ先の履歴番号を指定します。 省略時は、履歴番号 0、最新の履歴に飛びます。
この関数は、指定された履歴番号のページへ移動し、ページの再取得と再レンダリングを行います。
![]() |
通信に関するエラー |
---|---|
通信に関するエラーは戻り値では取得できません。 レンダリングの終了や、通信に関するエラーを取得する場合は、 SFZWebBrowserControl クラスを継承して、 SFZWebBrowserControl::DoneNotifyHandler 関数をオーバロードするクラスを作成する必要があります。 |
この関数の内部実装は以下の通りです。
/*public */SFCError SFZWebBrowserControl::Move(UInt32 index) { SFCError error(SFERR_NO_ERROR); if (index < GetHistorySize() && !_history[index].url.IsEmpty()) { _stateHistory[GetCurrentHistoryIndex()] = _viewer->GetViewState(); SetCurrentValue(index); error = OpenImpl(_history[GetCurrentHistoryIndex()].url, NULL_STR, NULL_BUFFER); } else { error = SFERR_INVALID_PARAM; } return error; }// SFZWebBrowserControl::Move // /*private */SFCError SFZWebBrowserControl::OpenImpl(SFXAnsiStringConstRef url, SFXAnsiStringConstRef method, SFXBufferConstRef data) { WebOpt webopt[4]; UIntN num(0); SFBSourceUtilSmp su; SFCError error(SFERR_NO_ERROR); if (url.StartsWith("http://") || url.StartsWith("https://")) { if (IsBusy()) { Stop(); } if ((error = WebSetup(url)) == SFERR_NO_ERROR) { // set additonal http option if (!method.IsEmpty()) { _optMethod = method; webopt[num].nId = WEBOPT_METHOD; webopt[num].pVal = _optMethod.GetBuffer(); ++num; } if (data.GetSize() != 0) { if ((_optBodyMem = MemoryAllocate(data.GetSize())) != null) { SFXHelper::memcpy(_optBodyMem, data.GetBuffer(), data.GetSize()); _optBody.Release(); if ((su = SFBSourceUtil::NewInstance(&error)) != null) { su->PeekFromMemory(_optBodyMem, data.GetSize(), null, null, &_optBody); } // *** vice versa *** // if (_optBody != null) { webopt[num].nId = WEBOPT_BODY; webopt[num].pVal = VoidPtr(&_optBody); ++num; } else { error = SFERR_FAILED; } } else { error = SFERR_NO_MEMORY; } } if (error == SFERR_NO_ERROR) { webopt[num].nId = WEBOPT_END; ASSERT(num < lengthof(webopt) - 1); _webCallback.Set(WebCallback, this); _history[GetCurrentHistoryIndex()].url = url; _web->GetResponseV(&_webResp, &_webCallback, _history[GetCurrentHistoryIndex()].url, webopt); } } } else { error = OpenFileImpl(url); } return error; }// SFZWebBrowserControl::OpenImpl // /*private */SFCError SFZWebBrowserControl::OpenFileImpl(SFXAnsiStringConstRef url) { static ACharConst fileScheme[] = "file://localhost/"; static ACharConst resScheme[] = "res:"; SFXAnsiString path; SFBFileMgrSmp mgr; SFBAStreamSmp file; SFCError error(SFERR_NO_ERROR); if (url.StartsWith(fileScheme)) { path = url.Substring(STRLEN(fileScheme), url.GetLength()); } else if (url.StartsWith(resScheme)) { path = url.Substring(STRLEN(resScheme), url.GetLength()); } else { error = SFERR_INVALID_PARAM; } if (error == SFERR_NO_ERROR) { if ((mgr = SFBFileMgr::NewInstance(&error)) != null) { file = mgr->OpenFile(path, _OFM_READ); if (file != null) { if (IsBusy()) { Stop(); } if ((error = WebSetup(url)) == SFERR_NO_ERROR) { _history[GetCurrentHistoryIndex()].url = url; _viewer->SetURL(url); _viewer->SetIWeb(_web); _viewer->LoadStream(file); } } else { error = SFERR_INVALID_PARAM; // XXX or mgr->GetLastError(); } } } return error; }// SFZWebBrowserControl::OpenFileImpl // /*private static*/Void SFZWebBrowserControl::WebCallback(VoidPtr p) { SFZWebBrowserControlPtr self(reinterpret_cast<SFZWebBrowserControlPtr>(p)); WebRespInfo* info = self->_webResp->GetInfo(); ResponseNotify response(self->_viewer.Get(), info->nCode); SFBSourceSmp source(interface_cast(info->pisMessage)); if (!self->ResponseNotifyHandler(response)) { self->_webCode = info->nCode; if (self->_webCode >= 0) { self->_viewer->SetIWeb(self->_web); self->_viewer->SetURL(self->_history[self->GetCurrentHistoryIndex()].url); self->_viewer->LoadSource(source); self->ClearWebRespAndOpts(); } else { DoneNotify notify(self->_viewer.Get(), info->nCode); NotifyHandler(self, ¬ify); } } }// SFZWebBrowserControl::WebCallback // /*private */Void SFZWebBrowserControl::ClearWebRespAndOpts(Void) { _webResp.Release(); _optMethod = SFXAnsiString::EmptyInstance(); _optBody.Release(); if (_optBodyMem != null) { MemoryFree(_optBodyMem); } _optBodyMem = null; _optSsl.Release(); }
SFZWebBrowserControl::DoneNotifyHandler | SFZWebBrowserControl::Navigate | SFZWebBrowserControl::Previous | SFZWebBrowserControl::Next | SFZWebBrowserControl::Reload
[ public ] SFCError Navigate( SFXAnsiStringConstRef url // 開く URL );
[ public ] SFCError Navigate( SFXAnsiStringConstRef url // 開く URL SFXAnsiStringConstRef method // HTTP メソッド );
[ public ] SFCError Navigate( SFXAnsiStringConstRef url // 開く URL SFXAnsiStringConstRef method // HTTP メソッド SFXAnsiStringConstRef data // POST メソッドでサーバーに送るデータ );
[ public ] SFCError Navigate( SFXAnsiStringConstRef url // 開く URL SFXAnsiStringConstRef method // HTTP メソッド SFXBufferConstRef data // POST メソッドでサーバーに送るデータ );
[ public ] SFCError Navigate( SFBSourceSmpConstRef source // HTML のソース );
[ public ] SFCError Navigate( SFBSourceSmpConstRef source // HTML のソース SFXAnsiStringConstRef basdUrl // 基準となる URL );
[ public ] SFCError Navigate( SFBAStreamSmpConstRef stream // HTML のストリーム );
[ public ] SFCError Navigate( SFBAStreamSmpConstRef src // HTML のストリーム SFXAnsiStringConstRef baseUrl // 基準となる URL );
HTTP アクセスする URL を指定します。
スキームは http、https、file と res がサポートされています。
HTTP アクセスするメソッドとして、GET または POST を指定します。(省略時は GET )
POST メソッドの場合は、サーバーに送るデータを指定します。
基準となる URL です。 HTML データ内にある相対 URL 表記は、 この引数で指定された URL からの相対パスと解釈されます。
HTML データを保持した ISource インターフェースです。
指定されたインターフェースから HTML データを読み出してレンダリングします。
HTML データを保持した IAStream インターフェースです。
指定されたインターフェースから HTML データを読み出してレンダリングします。
この関数は、指定された URL のページを取得して、レンダリングを開始します。
![]() |
注意 |
---|---|
HTML データとインライン画像の読み込みは任意のタイミングで行われ、 取得できしだい表示に反映されます。 |
![]() |
通信に関するエラー |
---|---|
通信に関するエラーは戻り値では取得できません。 レンダリングの終了や、通信に関するエラーを取得する場合は、 SFZWebBrowserControl クラスを継承して、 SFZWebBrowserControl::DoneNotifyHandler 関数をオーバロードするクラスを作成する必要があります。 |
この関数の内部実装は以下の通りです。
/*public */SFCError SFZWebBrowserControl::Navigate(SFXAnsiStringConstRef url) { return Navigate(url, NULL_STR, NULL_BUFFER); }// SFZWebBrowserControl::Navigate(SFXAnsiStringConstRef url) // /*public */SFCError SFZWebBrowserControl::Navigate(SFXAnsiStringConstRef url, SFXAnsiStringConstRef method) { return Navigate(url, method, NULL_BUFFER); }// SFZWebBrowserControl::Navigate(SFXAnsiStringConstRef url, SFXAnsiStringConstRef method) // /*public */SFCError SFZWebBrowserControl::Navigate(SFXAnsiStringConstRef url, SFXAnsiStringConstRef method, SFXAnsiStringConstRef data) { return Navigate(url, method, SFXBuffer(data)); }// SFZWebBrowserControl::Navigate(SFXAnsiStringConstRef url, SFXAnsiStringConstRef method, SFXAnsiStringConstRef data) // /*public */SFCError SFZWebBrowserControl::Navigate(SFXAnsiStringConstRef url, SFXAnsiStringConstRef method, SFXBufferConstRef data) { ReorderHistory(); return OpenImpl(url, method, data); }// SFZWebBrowserControl::Navigate(SFXAnsiStringConstRef url, SFXAnsiStringConstRef method, SFXBufferConstRef data) // /*private */Void SFZWebBrowserControl::ReorderHistory(Void) { UInt32 i; UInt32 j; _stateHistory[GetCurrentHistoryIndex()] = _viewer->GetViewState(); if (GetCurrentHistoryIndex() == 0) { for (i = GetHistorySize() - 1; i >= 1; --i) { _history[i] = _history[i - 1]; _stateHistory[i] = _stateHistory[i - 1]; } } else { for (i = 1; i < GetHistorySize(); ++i) { j = GetCurrentHistoryIndex() + i - 1; if (j < GetHistorySize()) { _history[i] = _history[j]; _stateHistory[i] = _stateHistory[j]; } else { ClearHistory(i); } } } ClearHistory(0); SetCurrentValue(0); }// SFZWebBrowserControl::ReorderHistory // /*private */SFCError SFZWebBrowserControl::OpenImpl(SFXAnsiStringConstRef url, SFXAnsiStringConstRef method, SFXBufferConstRef data) { WebOpt webopt[4]; UIntN num(0); SFBSourceUtilSmp su; SFCError error(SFERR_NO_ERROR); if (url.StartsWith("http://") || url.StartsWith("https://")) { if (IsBusy()) { Stop(); } if ((error = WebSetup(url)) == SFERR_NO_ERROR) { // set additonal http option if (!method.IsEmpty()) { _optMethod = method; webopt[num].nId = WEBOPT_METHOD; webopt[num].pVal = _optMethod.GetBuffer(); ++num; } if (data.GetSize() != 0) { if ((_optBodyMem = MemoryAllocate(data.GetSize())) != null) { SFXHelper::memcpy(_optBodyMem, data.GetBuffer(), data.GetSize()); _optBody.Release(); if ((su = SFBSourceUtil::NewInstance(&error)) != null) { su->PeekFromMemory(_optBodyMem, data.GetSize(), null, null, &_optBody); } // *** vice versa *** // if (_optBody != null) { webopt[num].nId = WEBOPT_BODY; webopt[num].pVal = VoidPtr(&_optBody); ++num; } else { error = SFERR_FAILED; } } else { error = SFERR_NO_MEMORY; } } if (error == SFERR_NO_ERROR) { webopt[num].nId = WEBOPT_END; ASSERT(num < lengthof(webopt) - 1); _webCallback.Set(WebCallback, this); _history[GetCurrentHistoryIndex()].url = url; _web->GetResponseV(&_webResp, &_webCallback, _history[GetCurrentHistoryIndex()].url, webopt); } } } else { error = OpenFileImpl(url); } return error; }// SFZWebBrowserControl::OpenImpl // /*private */SFCError SFZWebBrowserControl::OpenFileImpl(SFXAnsiStringConstRef url) { static ACharConst fileScheme[] = "file://localhost/"; static ACharConst resScheme[] = "res:"; SFXAnsiString path; SFBFileMgrSmp mgr; SFBAStreamSmp file; SFCError error(SFERR_NO_ERROR); if (url.StartsWith(fileScheme)) { path = url.Substring(STRLEN(fileScheme), url.GetLength()); } else if (url.StartsWith(resScheme)) { path = url.Substring(STRLEN(resScheme), url.GetLength()); } else { error = SFERR_INVALID_PARAM; } if (error == SFERR_NO_ERROR) { if ((mgr = SFBFileMgr::NewInstance(&error)) != null) { file = mgr->OpenFile(path, _OFM_READ); if (file != null) { if (IsBusy()) { Stop(); } if ((error = WebSetup(url)) == SFERR_NO_ERROR) { _history[GetCurrentHistoryIndex()].url = url; _viewer->SetURL(url); _viewer->SetIWeb(_web); _viewer->LoadStream(file); } } else { error = SFERR_INVALID_PARAM; // XXX or mgr->GetLastError(); } } } return error; }// SFZWebBrowserControl::OpenFileImpl // /*private static*/Void SFZWebBrowserControl::WebCallback(VoidPtr p) { SFZWebBrowserControlPtr self(reinterpret_cast<SFZWebBrowserControlPtr>(p)); WebRespInfo* info = self->_webResp->GetInfo(); ResponseNotify response(self->_viewer.Get(), info->nCode); SFBSourceSmp source(interface_cast(info->pisMessage)); if (!self->ResponseNotifyHandler(response)) { self->_webCode = info->nCode; if (self->_webCode >= 0) { self->_viewer->SetIWeb(self->_web); self->_viewer->SetURL(self->_history[self->GetCurrentHistoryIndex()].url); self->_viewer->LoadSource(source); self->ClearWebRespAndOpts(); } else { DoneNotify notify(self->_viewer.Get(), info->nCode); NotifyHandler(self, ¬ify); } } }// SFZWebBrowserControl::WebCallback // /*private */Void SFZWebBrowserControl::ClearWebRespAndOpts(Void) { _webResp.Release(); _optMethod = SFXAnsiString::EmptyInstance(); _optBody.Release(); if (_optBodyMem != null) { MemoryFree(_optBodyMem); } _optBodyMem = null; _optSsl.Release(); }
履歴をいくつ進むかを指定します。 省略時は履歴を 1 つ進みます。
この関数は、指定された値だけ履歴を進み、ページを再取得しレンダリングします。
![]() |
注意 |
---|---|
引数に負の値を指定すると、絶対値の数だけ履歴を戻ります。 指定された数が履歴リストから外れる場合はエラーとなり、 戻り値として SFERR_INVALID_PARAM を返します。 |
![]() |
通信に関するエラー |
---|---|
通信に関するエラーは戻り値では取得できません。 レンダリングの終了や、通信に関するエラーを取得する場合は、 SFZWebBrowserControl クラスを継承して、 SFZWebBrowserControl::DoneNotifyHandler 関数をオーバロードするクラスを作成する必要があります。 |
この関数の内部実装は以下の通りです。
/*public */SFCError SFZWebBrowserControl::Next(SInt32 n) { SFCError error(SFERR_NO_ERROR); if (GetCurrentValue() - n >= 0 && GetCurrentValue() - n < GetMaximumValue()) { error = Move(static_cast<UInt32>(GetCurrentValue() - n)); } else { error = SFERR_INVALID_PARAM; } return error; }// SFZWebBrowserControl::Next //
SFZWebBrowserControl::Previous | SFZWebBrowserControl::Navigate | SFZWebBrowserControl::Move | SFZWebBrowserControl::Reload | SFZWebBrowserControl::DoneNotifyHandler
履歴をいくつ戻るかを指定します。 省略時は履歴を 1 つ戻ります。
この関数は、指定された値だけ履歴を戻り、ページを再取得しレンダリングします。
![]() |
注意 |
---|---|
引数に負の値を指定すると、絶対値の数だけ履歴を進みます。 指定された数が履歴リストから外れる場合はエラーとなり、 戻り値として SFERR_INVALID_PARAM を返します。 |
![]() |
通信に関するエラー |
---|---|
通信に関するエラーは戻り値では取得できません。 レンダリングの終了や、通信に関するエラーを取得する場合は、 SFZWebBrowserControl クラスを継承して、 SFZWebBrowserControl::DoneNotifyHandler 関数をオーバロードするクラスを作成する必要があります。 |
この関数の内部実装は以下の通りです。
/*public */SFCError SFZWebBrowserControl::Previous(SInt32 n) { return Next(-n); }// SFZWebBrowserControl::Previous //
SFZWebBrowserControl::Next | SFZWebBrowserControl::Navigate | SFZWebBrowserControl::Move | SFZWebBrowserControl::Reload | SFZWebBrowserControl::DoneNotifyHandler
[ public ] Void Reload(Void);
この関数は、現在表示しているページを再取得して再描画します。
![]() |
注意 |
---|---|
現在表示しているページが、 SFZWebBrowserControl::Load 関数か、 IAStream、ISource を引数にした SFZWebBrowserControl::Navigate 関数によるものである場合、 引数の url が適切に設定されていないと再描画に失敗します。 |
この関数の内部実装は以下の通りです。
/*public */Void SFZWebBrowserControl::Reload(Void) { Move(GetCurrentHistoryIndex()); }// SFZWebBrowserControl::Reload //
SFZWebBrowserControl::GetCurrentHistoryIndex | SFZWebBrowserControl::Move | SFZWebBrowserControl::Load | SFZWebBrowserControl::Navigate
[ protected, virtual ] Bool ResponseNotifyHandler( ResponseNotifyConstRef notify // 通知情報 );
HTTP のレスポンスコード、 BREW のエラーコードが通知されます。
この関数は、サーバーへの接続が完了し、レンダリングが始まる前に呼び出されるハンドラです。
デフォルトの実装以外の処理(タイムアウトなどのエラー処理)を行いたい場合は、 この関数をオーバーライドします。
デフォルトの実装は、何も行いません。
![]() |
注意 |
---|---|
SFZWebBrowserControl::DoneNotifyHandler とは 呼び出されるタイミングが違います。 |
以下は、オーバーロードしてエラー処理を行うコードです。
#include <SFZResponder/SFZControl/SFZWebBrowserControl.hpp> SFMTYPEDEFRESPONDER(MyBrowserControl) class MyBrowserControl : public SFZWebBrowserControl { SFBSEALRESPONDER(MyBrowserControl) SFMRESPONDERINSTANTIATEFOUR(MyBrowserControl, SFZWebBrowserControl, SFYControl, SFYWidget, SFYResponder) public: static MyBrowserControlSmp NewInstance(SFCErrorPtr exception = null); protected: explicit MyBrowserControl(Void) static_throws; virtual ~MyBrowserControl(Void); virtual Void ResponseNotifyHandler(ResponseNotifyConstRef notify) { if (notify.GetErrorCode() != SFERR_NO_ERROR) { // 通信エラーならエラーダイアログを表示し、HTML をレンダリングしない ErrorDialog(notify.GetErrorCode()); return true; } else if (WEB_SUCCEEDED(notify.GetDoneCode())) { // HTTP エラーなら警告ダイアログを表示する WarningDialog(notify.GetResposenCode()); } return false; // 正常、警告ならば HTML をレンダリングする } };
この関数の内部実装は以下の通りです。
/*protected virtual */Bool SFZWebBrowserControl::ResponseNotifyHandler(ResponseNotifyConstRef notify) { unused(notify); return false; }// SFZWebBrowserControl::ResponseNotifyHandler //
SFZWebBrowserControl::ResponseNotify | SFZWebBrowserControl::DoneNotifyHandler | SFZWebBrowserControl::FocusNotifyHandler | SFZWebBrowserControl::JumpNotifyHandler
[ public ] SFCError SetAuthorizeData( SFXAnsiStringConstRef user // ユーザー名 SFXAnsiStringConstRef passwd // パスワード SFXAnsiStringConstRef url // HTTP ベーシック認証の開始 URL );
ユーザー名を指定します。
パスワードを指定します。
URL を指定します。 この URL から始まるページが、認証の対象となります。
この関数は、HTTP ベーシック認証の情報を設定します。
この関数を実行した後、 url 引数に指定した URL で始まるページへのアクセスは、 指定された認証情報を持つヘッダーをつけて行われます。
認証情報の設定を解除する時は、 SFZWebBrowserControl::UnsetAuthorizeData 関数を呼び出します。
また、 url 引数に指定した URL で始まらないページをアクセスした場合、 認証情報の設定は自動的に解除されます。
![]() |
注意 |
---|---|
戻り値が SFERR_NO_ERROR 以外の場合は、ベーシック認証は行われません。 |
この関数の内部実装は以下の通りです。
/*public */SFCError SFZWebBrowserControl::SetAuthorizedData(SFXAnsiStringConstRef user, SFXAnsiStringConstRef passwd, SFXAnsiStringConstRef url) { SFCError error(SFERR_NO_ERROR); RemoveHeader(_authHeader); _authHeader.Clear(); if (!user.IsEmpty()) { _authBaseUrl = url; MakeAuthHeader((user + ":" + passwd).GetCString(), user.GetLength() + passwd.GetLength() + 1); if (_authHeader.IsEmpty()) { error = SFERR_NO_MEMORY; } } else { _authBaseUrl = SFXAnsiString::EmptyInstance(); error = SFERR_NO_ERROR; } return error; }// SFZWebBrowserControl::SetAuthorizedData // /*private */Void SFZWebBrowserControl::RemoveHeader(SFXAnsiStringConstRef header) { WebOpt webopt; SInt32 n; for (n = 0; _web->GetOpt(WEBOPT_HEADER, n, &webopt) == SFERR_NO_ERROR; ++n) { if (header.Compare(static_cast<ACharConstPtr>(webopt.pVal)) == 0) { _web->RemoveOpt(WEBOPT_HEADER, n); break; } } }// SFZWebBrowserControl::RemoveHeader // /*private */Void SFZWebBrowserControl::MakeAuthHeader(SFXAnsiStringConstRef auth, UIntN len) { SFXAnsiString base64; SFBWebUtilSmp webUtil; SFCError error; base64 = ""; base64.SetThreshold(BASE64LEN(len) + 1); if ((webUtil = SFBWebUtil::NewInstance(&error)) != null) { webUtil->EncodeBase64(auth.GetCString(), len, base64.GetBuffer()); base64.SetChar(BASE64LEN(len), '\0'); } _authHeader = SFXAnsiString::Format("Authorization: Basic %s\r\n", base64.GetCString()); return; }// SFZWebBrowserControl::MakeAuthHeader //
新しい履歴リストのサイズを指定します。 0 や、現在の履歴番号より小さい値を指定できません。
この関数は、履歴リストのサイズを設定します。
デフォルト値: SFZWebBrowserControl::HISTORY_SIZE(30)
戻り値が SFERR_NO_ERROR でない場合、履歴リストのサイズは変更されません。
![]() |
注意 |
---|---|
現在より小さい値を設定した場合、 履歴のサイズが指定されたサイズに収まるまで古い履歴情報が捨てられます。 SFZWebBrowserControl::GetCurrentHistoryIndex 関数で取得できる、現在表示しているページの履歴番号よりも小さな値を設定することはできません。 |
SFZWebBrowserControl::GetCurrentHistoryIndex | SFZWebBrowserControl::GetHistory | SFZWebBrowserControl::GetHistoryList | SFZWebBrowserControl::Move | SFZWebBrowserControl::DEFAULT
インデントの幅を指定します。[単位: ピクセル]
この関数は、HTML 表示のインデントの幅を設定します。[単位: ピクセル]
![]() |
注意 |
---|---|
この関数は、内部で引数のオプション ID に "HVOPT_N_INDENT" を指定して BREW API IHTMLVIEWER_SetOption 関数を呼び出します。 |
この関数の内部実装は以下の通りです。
/*public */SFCError SFZWebBrowserControl::SetIndent(SInt32 pixel) { SFCError error(SFERR_NO_ERROR); RenderSafe(); error = _viewer->SetOption(HVOPT_N_INDENT, (HVOpt)pixel); Invalidate(); return error; }// SFZWebBrowserControl::SetIndent // /*private */Void SFZWebBrowserControl::RenderSafe(Void) { SFXGraphics::GetInstance()->SetClip(SFXRectangle::EmptyInstance()); }// SFZWebBrowserControl::RenderSafe //
フォームでの文字入力方法を指定します。
この関数は、HTML 表示の文字入力をインラインにするか、フルスクリーンにするかを設定します。
![]() |
注意 |
---|---|
この関数は、内部で BREW API IHTMLVIEWER_SetProperties 関数を呼び出します。 |
この関数の内部実装は以下の通りです。
/*public */Void SFZWebBrowserControl::SetInlineEditEnable(Bool enable) { UInt32 property; property = _viewer->GetProperties(); if (enable) { property |= HVP_INLINE_EDIT; } else { property &= ~HVP_INLINE_EDIT; } RenderSafe(); _viewer->SetProperties(property); Invalidate(); return; }// SFZWebBrowserControl::SetInlineEditEnable // /*private */Void SFZWebBrowserControl::RenderSafe(Void) { SFXGraphics::GetInstance()->SetClip(SFXRectangle::EmptyInstance()); }// SFZWebBrowserControl::RenderSafe //
SFZWebBrowserControl::IsInlineEditEnable | SFBControl::SetProperties | BREW API IHTMLVIEWER_SetProperties
[ public ] SFCError SetLinkColor( SFXRGBColorConstRef color // リンク色 );
リンク文字列の表示色を指定します。
この関数は、HTML 表示のリンク文字列の表示色を設定します。
![]() |
注意 |
---|---|
この関数は、内部で引数のオプション ID に "HVOPT_RGB_LINK" を指定して BREW API IHTMLVIEWER_SetOption 関数を呼び出します。 |
この関数の内部実装は以下の通りです。
/*public */SFCError SFZWebBrowserControl::SetLinkColor(SFXRGBColorConstRef color) { SFCError error(SFERR_NO_ERROR); RenderSafe(); error = _viewer->SetOption(HVOPT_RGB_LINK, HVOpt(color.AsRGBVAL())); Invalidate(); return error; }// SFZWebBrowserControl::SetLinkColor // /*private */Void SFZWebBrowserControl::RenderSafe(Void) { SFXGraphics::GetInstance()->SetClip(SFXRectangle::EmptyInstance()); }// SFZWebBrowserControl::RenderSafe //
SFZWebBrowserControl::GetLinkColor | SFZWebBrowserControl::SetTextColor | SFBHTMLViewer::SetOption | BREW API IHTMLVIEWER_SetOption
段落間の行間の長さを指定します。[単位: ピクセル]
この関数は、HTML 表示の段落間の行間の長さを設定します。[単位: ピクセル]
![]() |
注意 |
---|---|
この関数は、内部で引数のオプション ID に "HVOPT_N_VSPACE" を指定して BREW API IHTMLVIEWER_SetOption 関数を呼び出します。 |
この関数の内部実装は以下の通りです。
/*public */SFCError SFZWebBrowserControl::SetParagraphSpacing(SInt32 pixel) { SFCError error(SFERR_NO_ERROR); RenderSafe(); error = _viewer->SetOption(HVOPT_N_VSPACE, (HVOpt)pixel); Invalidate(); return error; }// SFZWebBrowserControl::SetParagraphSpacing // /*private */Void SFZWebBrowserControl::RenderSafe(Void) { SFXGraphics::GetInstance()->SetClip(SFXRectangle::EmptyInstance()); }// SFZWebBrowserControl::RenderSafe //
SFZWebBrowserControl::GetParagraphSpacing | SFBHTMLViewer::SetOption | BREW API IHTMLVIEWER_SetOption
スクロールバーの有無を指定します。
この関数は、スクロールバーの有無を設定します。
![]() |
注意 |
---|---|
この設定で表示されるスクロールバーは、 SophiaFramework UNIVERSE で実装されているものではなく、 BREW API IHtmlViewer インターフェースのスクロールバーです。 |
この関数の内部実装は以下の通りです。
/*public */Void SFZWebBrowserControl::SetScrollbarEnable(Bool enable) { UInt32 property; property = _viewer->GetProperties(); if (enable) { property |= HVP_SCROLLBAR; } else { property &= ~HVP_SCROLLBAR; } RenderSafe(); _viewer->SetProperties(property); Invalidate(); return; }// SFZWebBrowserControl::SetScrollbarEnable // /*private */Void SFZWebBrowserControl::RenderSafe(Void) { SFXGraphics::GetInstance()->SetClip(SFXRectangle::EmptyInstance()); }// SFZWebBrowserControl::RenderSafe //
SFZWebBrowserControl::IsScrollbarEnable | SFBControl::SetProperties | BREW API IHTMLVIEWER_SetProperties
スクロールバーの幅を指定します。[単位: ピクセル]
この関数は、HTML 表示のスクロールバーの幅を設定します。[単位: ピクセル]
![]() |
注意 |
---|---|
この関数は、内部で引数のオプション ID に "HVOPT_N_SBWIDTH" を指定して BREW API IHTMLVIEWER_SetOption 関数を呼び出します。 |
この関数の内部実装は以下の通りです。
/*public */SFCError SFZWebBrowserControl::SetScrollbarWidth(SInt32 pixel) { SFCError error(SFERR_NO_ERROR); RenderSafe(); error = _viewer->SetOption(HVOPT_N_SBWIDTH, (HVOpt)pixel); Invalidate(); return error; }// SFZWebBrowserControl::SetScrollbarWidth // /*private */Void SFZWebBrowserControl::RenderSafe(Void) { SFXGraphics::GetInstance()->SetClip(SFXRectangle::EmptyInstance()); }// SFZWebBrowserControl::RenderSafe //
SFZWebBrowserControl::GetScrollbarWidth | SFBHTMLViewer::SetOption | BREW API IHTMLVIEWER_SetOption
[ public ] SFCError SetTextColor( SFXRGBColorConstRef color // 設定する値 );
テキストの表示色を指定します。
この関数は、HTML 表示のテキストの表示色を設定します。
![]() |
注意 |
---|---|
この関数は、内部で引数のオプション ID に "HVOPT_RGB_TEXT" を指定して BREW API IHTMLVIEWER_SetOption 関数を呼び出します。 |
この関数の内部実装は以下の通りです。
/*public */SFCError SFZWebBrowserControl::SetTextColor(SFXRGBColorConstRef color) { SFCError error(SFERR_NO_ERROR); RenderSafe(); error = _viewer->SetOption(HVOPT_RGB_TEXT, HVOpt(color.AsRGBVAL())); Invalidate(); return error; }// SFZWebBrowserControl::SetTextColor // /*private */Void SFZWebBrowserControl::RenderSafe(Void) { SFXGraphics::GetInstance()->SetClip(SFXRectangle::EmptyInstance()); }// SFZWebBrowserControl::RenderSafe //
SFZWebBrowserControl::GetTextColor | SFZWebBrowserControl::SetLinkColor | SFBHTMLViewer::SetOption | BREW API IHTMLVIEWER_SetOption
[ public ] Void SetWeb( SFBWebSmpConstRef web // IWeb インターフェース );
通信に使う IWeb インターフェースです。
この関数は、 HTTP 通信でサーバーにアクセスするときに使用される BREW API IWeb インターフェースを設定します。
ネットワークアクセス中、あるいはレンダリング中の場合、それらの処理は中断されます。
この関数で設定した値は、 SFZWebBrowserControl::GetWeb 関数で取得できます。
![]() |
WebOpt 指定時の注意 |
---|---|
他の用途で利用するまでは、 BREW API IWeb インターフェースに設定した BREW API WebOpt データを保持する必要があります。 詳しくは、BREW API リファレンス( BREW API IWeb) の「 WEBOPT の寿命に関する注意事項 」を参照してください。 |
![]() |
サスペンド時の振る舞い |
---|---|
サスペンドしたとき、 BREW API WebOpt の情報はリセットされ IWeb インターフェースを内部で作成する設定(デフォルト状態)に戻ります。 サスペンド前の BREW API IWeb インターフェースを使うには、 レジューム時に BREW API WebOpt データを再設定する必要があります。 |
以下は、HTTP リクエストヘッダーを設定するコードと、 タイムアウトを設定するコードです。
![]() |
注意 |
---|---|
端末がサスペンドすると設定が無効になるので、 レジュームハンドラ内で設定し直す必要があります。 |
// HTTP リクエストヘッダーを設定するコード // ※header: 設定が有効な間は解放してはならない。例えば、header には "User-Agent: ibROWSE/0.1 (SophiaFramework; I; BREW 4.0)\r\n" などを指定する。 SCError sample::SetHeader(SFXAnsiStringConstRef header, SFZWebBrowserControlRef browser) { SFBWebSmp web; SFCError error(SFERR_NO_ERROR); web = browser.GetWeb(); if (web == null) { web = SFBWeb::NewInstance(&error); } if (error == SFERR_NO_ERROR) { WebOpt opts[2]; opts[0].nId = WEB_HEADER; opts[0].pVal = const_cast<ACharPtr>(header.GetCString()); // 設定する文字列をヒープに確保する場合、設定が有効な間は解放してはならない opts[1].nId = WEBOPT_END; opts[1].pVal = null; // "opts[1].pVal = null;" は省略可 if ((error = web->AddOpt(opts)) == SFERR_NO_ERROR) { browser.SetWeb(web); } } return error; }
// タイムアウトを設定するコード SCError sample::SetTimeOut(UInt32 time_out, SFZWebBrowserControlRef browser) { SFBWebSmp web; SFCError error(SFERR_NO_ERROR); web = browser.GetWeb(); if (web == null) { web = SFBWeb::NewInstance(&error); } if (error == SFERR_NO_ERROR) { // SFBWeb にタイムアウトを設定する WebOpt opts[2]; opts[0].nId = WEBOPT_CONNECTTIMEOUT; opts[0].pVal = reinterpret_cast<VoidPtr>(time_out); // 単位: ミリ秒 opts[1].nId = WEBOPT_END; if ((error = web->AddOpt(opts)) == SFERR_NO_ERROR) { browser.SetWeb(web); } } return error; }
SFZWebBrowserControl::UnsetWeb | SFZWebBrowserControl::GetWeb | SFBHTMLViewer | SFBWeb | SFBWebResp | SFBWebOpts | BREW API IHtmlViewer | BREW API IWeb | BREW API IWebResp | BREW API IWebOpts | BREW API WebOpt
[ public ] Void Stop(Void);
この関数は、通信やレンダリングを行っている場合、その処理を中断します。
![]() |
注意 |
---|---|
ネットワークアクセス中、もしくはレンダリング中以外ならば何も行いません。 表示済みの部分に対しては、影響を与えません。 |
この関数の内部実装は以下の通りです。
/*public */Void SFZWebBrowserControl::Stop(Void) { _webCallback.Cancel(); _viewer->Stop(); return; }// SFZWebBrowserControl::Stop //
[ public ] SFCError UnsetAuthorizeData(Void);
この関数は、 SFZWebBrowserControl::SetAuthorizeData 関数による HTTP ベーシック認証の設定を解除します。
![]() |
注意 |
---|---|
この関数を実行した後は、 HTTP リクエストには認証情報のヘッダーは付きません。 |
この関数の内部実装は以下の通りです。
/*public */SFCError SFZWebBrowserControl::UnsetAuthorizedData(Void) { return SetAuthorizedData(NULL_STR, NULL_STR, NULL_STR); }// SFZWebBrowserControl::UnsetAuthorizedData //
[ public ] Void UnsetWeb(Void);
この関数は、 SFZWebBrowserControl::SetWeb 関数による BREW API IWeb インターフェースの設定を解除します。
この関数を実行すると、 通信に必要な BREW API IWeb インターフェースはコントロール内部で作成されます。
現在通信中、もしくはレンダリング中の場合は、それらの処理は中断されます。
この関数の内部実装は以下の通りです。
/*public */Void SFZWebBrowserControl::UnsetWeb(Void) { Stop(); ClearWebRespAndOpts(); _web.Release(); }// SFZWebBrowserControl::UnsetWeb // /*private */Void SFZWebBrowserControl::ClearWebRespAndOpts(Void) { _webResp.Release(); _optMethod = SFXAnsiString::EmptyInstance(); _optBody.Release(); if (_optBodyMem != null) { MemoryFree(_optBodyMem); } _optBodyMem = null; _optSsl.Release(); }
SFZWebBrowserControl::SetWeb | SFZWebBrowserControl::GetWeb | SFZWebBrowserControl::Stop | SFBWeb | BREW API IWeb
enum CodeEnum { CODE_TYPE = four_char_code('c', 'h', 't', 'm') }; SFMTYPEDEFTYPE(CodeEnum)
enum DEFAULT {
HISTORY_SIZE = 30 // 履歴リストの大きさのデフォルト値
};
履歴リストの大きさのデフォルト値を示す HISTORY_SIZE のみ定義されています。
[ public ] SFMTYPEDEFCLASS(DoneNotify) class DoneNotify : public Notify { public: DoneNotify (SFBHTMLViewerPtr hv, int done_code); SInt32 GetDoneCode (Void) const; SFCError GetErrorCode (Void) const; UInt32 GetResponseCode(Void) const; }; SFMTYPEDEFCLASS(Notify) class Notify : public HViewNotify { public: HVNotifyCode GetType (Void) const; SFBHTMLViewerPtr GetHTMLViewer (Void) const; protected: Notify (SFBHTMLViewerPtr hv, HVNotifyCode notify = HVN_NONE); }; // HViewNotify: notification data // typedef struct { HVNotifyCode code; // notification code IHtmlViewer * phv; // identifies IHtmlViewer that sent the notification union { HViewJump jump; // HVN_JUMP HViewJump submit; // HVN_SUBMIT int nDone; // HVN_DONE HViewFocus focus; // HVN_FOCUS } u; } HViewNotify; #ifdef _WIN32 typedef unsigned HVNotifyCode; #else typedef int8 HVNotifyCode; #endif
この型は、 BREW API HViewNotify から派生しています。
SFZWebBrowserControl::DoneNotifyHandler 関数の引数として渡されるデータの型です。
DoneNotify クラスは以下のメンバ関数から構成されます。
GetDoneCode 関数 | 通信 / レンダリングの終了コードを取得します。 戻り値を BREW API WEB_ERROR_SUCCEEDED 関数に渡すと通信の成否が判定できます。 成功した場合は、サーバーの HTTP ステータスコード、失敗した場合は、負の値になります。 また、戻り値は BREW API WEB_ERROR_MAP 関数に渡すと BREW のエラーコードに変換されます。 |
GetErrorCode 関数 | 通信 / レンダリング時のエラーコードを取得します。 エラーがない場合は SFERR_NO_ERROR が返却されます。 |
GetResponseCode 関数 | サーバーの HTTP ステータスコードを取得します。 通信エラーなどで HTTP セッションが失敗している場合は 0 が返却されます。 |
SFZWebBrowserControl::DoneNotifyHandler | BREW API HViewNotify | BREW API WEB_ERROR_SUCCEEDED | BREW API WEB_ERROR_MAP
[ public ] SFMTYPEDEFCLASS(FocusNotify) class FocusNotify : public Notify { public: FocusNotify (SFBHTMLViewerPtr hv, SInt32 elementNo, HVFocusType type, SInt32 state); SInt32 GetElementNo(Void) const; HVFocusType GetFocusType(Void) const; SInt32 GetState (Void) const; }; SFMTYPEDEFCLASS(Notify) class Notify : public HViewNotify { public: HVNotifyCode GetType (Void) const; SFBHTMLViewerPtr GetHTMLViewer (Void) const; protected: Notify (SFBHTMLViewerPtr hv, HVNotifyCode notify = HVN_NONE); }; // HViewNotify: notification data // typedef struct { HVNotifyCode code; // notification code IHtmlViewer * phv; // identifies IHtmlViewer that sent the notification union { HViewJump jump; // HVN_JUMP HViewJump submit; // HVN_SUBMIT int nDone; // HVN_DONE HViewFocus focus; // HVN_FOCUS } u; } HViewNotify; #ifdef _WIN32 typedef unsigned HVNotifyCode; #else typedef int8 HVNotifyCode; #endif // HViewJump: contains data for hypertext jumps and form submissions // typedef struct { int posElem; // FORM or A item that triggered submit const char * pszURL; // URL ("URI") const char * pszMethod; // HVN_SUBMIT: "GET", "POST", etc. const char * pszData; // HVN_SUBMIT: NULL for "GET"; form data otherwise. } HViewJump; typedef struct { int posElem; // -1 when no focus HVFocusType nType; // HVFOCUS_... type int nState; // state, dependent upon type. } HViewFocus; // Types of focus items enum { HVFOCUS_NONE = 0 // no visible item ,HVFOCUS_LINK // <A HREF=...< ,HVFOCUS_EDIT // <INPUT TYPE={TEXT|PASSWORD}<or <TEXTAREA< ,HVFOCUS_CHECKBOX // <INPUT TYPE=CHECKBOX< : state = 1/0 for checked/unchecked ,HVFOCUS_RADIO // <INPUT TYPE=RADIO< : state = 1/0 for selected/unselected ,HVFOCUS_SUBMIT // <INPUT TYPE=SUBMIT< ,HVFOCUS_RESET // <INPUT TYPE=RESET< ,HVFOCUS_LIST // <SELECT< }; #ifdef _WIN32 typedef unsigned HVFocusType; #else typedef int8 HVFocusType; #endif
この型は、 BREW API HViewNotify から派生しています。
SFZWebBrowserControl::FocusNotifyHandler 関数の引数として渡されるデータの型です。
FocusNotify クラスは、以下のメンバ関数から構成されます。
GetState 関数 | フォーカスされている要素の状態を取得します。 取得した値は、 GetFocusType 関数の戻り値が HVFOCUS_CHECKBOX または HVFOCUS_RADIO であるときだけ有効です。 フォーカスされているチェックボックスあるいはラジオボタンが選択されている時は 0 以外の値、されていない時は 0 を返します。 |
GetElementNo 関数 | フォーカスされているエレメントの位置を取得します。 戻り値の位置は SFZWebBrowserControl::FindElement 関数の戻り値と同じです。 |
GetFocusType 関数 |
フォーカスされている要素の種類を取得します。
戻り値は、以下のいずれかです。
|
SFZWebBrowserControl::FocusNotifyHandler | SFZWebBrowserControl::FindElement | BREW API HViewNotify
[ public ] struct HistoryEntry { SFXAnsiString url; // URL SFXAnsiString title; // タイトル };
この型は、履歴内容(URL とタイトル)を表す構造体です。
[ public ] SFMTYPEDEFCLASS(JumpNotify) class JumpNotify : public Notify { public: JumpNotify (SFBHTMLViewerPtr hv, SInt32 elementNo, ACharConstPtr url, ACharConstPtr method = null, ACharConstPtr data = null); JumpNotify (SFBHTMLViewerPtr hv, ACharConstPtr url, ACharConstPtr method = null, ACharConstPtr data = null); SInt32 GetElementNo(Void) const; SFXAnsiStringConst GetUrl (Void) const; SFXAnsiStringConst GetMethod (Void) const; SFXAnsiStringConst GetData (Void) const; }; SFMTYPEDEFCLASS(Notify) class Notify : public HViewNotify { public: HVNotifyCode GetType (Void) const; SFBHTMLViewerPtr GetHTMLViewer (Void) const; protected: Notify (SFBHTMLViewerPtr hv, HVNotifyCode notify = HVN_NONE); }; // HViewNotify: notification data // typedef struct { HVNotifyCode code; // notification code IHtmlViewer * phv; // identifies IHtmlViewer that sent the notification union { HViewJump jump; // HVN_JUMP HViewJump submit; // HVN_SUBMIT int nDone; // HVN_DONE HViewFocus focus; // HVN_FOCUS } u; } HViewNotify; #ifdef _WIN32 typedef unsigned HVNotifyCode; #else typedef int8 HVNotifyCode; #endif
この型は、 BREW API HViewNotify から派生しています。
SFZWebBrowserControl::JumpNotifyHandler 関数の引数として渡されるデータの型です。
JumpNotify クラスは、以下のメンバ関数から構成されます。
GetElementNo | リンクとして選ばれた要素の位置を取得します。 この位置は、 SFZWebBrowserControl::FindElement 関数の戻り値と同じです。 |
GetUrl 関数 | 選択されたリンクの URL を取得します。 |
GetMethod 関数 | 選択されたリンクのサーバーへのアクセスメソッドを取得します ("GET" と "POST" がサポートされています)。 |
GetData 関数 | POST メソッドでサーバーへ送信するデータを取得します。 送信データがない、あるいは POST メソッドでない場合、空文字列を返します。 |
SFZWebBrowserControl::JumpNotifyHandler | SFZWebBrowserControl::FindElement | BREW API HViewNotify |
[ public ] SFMTYPEDEFCLASS(ResponseNotify) class ResponseNotify : public Notify { public: ResponseNotify (SFBHTMLViewerPtr hv, int error_code); SFCError GetErrorCode (Void) const; UInt32 GetResponseCode(Void) const; }; SFMTYPEDEFCLASS(Notify) class Notify : public HViewNotify { public: HVNotifyCode GetType (Void) const; SFBHTMLViewerPtr GetHTMLViewer (Void) const; protected: Notify (SFBHTMLViewerPtr hv, HVNotifyCode notify = HVN_NONE); }; // HViewNotify: notification data // typedef struct { HVNotifyCode code; // notification code IHtmlViewer * phv; // identifies IHtmlViewer that sent the notification union { HViewJump jump; // HVN_JUMP HViewJump submit; // HVN_SUBMIT int nDone; // HVN_DONE HViewFocus focus; // HVN_FOCUS } u; } HViewNotify; #ifdef _WIN32 typedef unsigned HVNotifyCode; #else typedef int8 HVNotifyCode; #endif
この型は、 BREW API HViewNotify から派生しています。
SFZWebBrowserControl::ResponseNotifyHandler 関数の引数として渡されるデータの型です。
ResponseNotify クラスは、以下のメンバ関数から構成されます。
GetErrorCode 関数 | 通信 / レンダリング時のエラーコードを取得します。 エラーがない場合は SFERR_NO_ERROR が返却されます。 |
GetResponseCode 関数 | サーバーの HTTP ステータスコードを取得します。 通信エラーなどで HTTP セッションが失敗している場合は 0 が返却されます。 |
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |
![]() ![]() ![]() ![]() |