UIWebBrowserをC++Builderで使ってみる実験
手軽に使えるブラウザをちょこっと作ってみようと思ったのですが、VCだと結構面倒なので、C++Builderを使って 作ってみようかと思います。
もちろん、軽量化のためには Visual C++で作らねばならないのですが…。
かなり昔のコンポーネントですが、UIWebBrowser を使って見ることにします。
まず、コンポーネントのインストールを選んで新しいパッケージを作ります。
ここで、ユニットファイルに解凍した全てのPasファイルを取り込みます。
こんな感じです。
このままコンパイルするとエラーが出るのですが…。
・UIWebBrowser.Pas の MSHTML_TLB を MSHTMLに変更
・ContainsのCppプロジェクトに以下を追加。
#pragma comment(lib, "wininet.lib") #pragma comment(lib, "Urlmon.lib") #pragma comment(lib, "shdocvw.lib") |
・2箇所 HWND をHANDLEに書き換える。
inline __fastcall TWebBrowser(HWND ParentWindow) : Olectrls::TOleControl(ParentWindow) { } inline __fastcall TUIWebBrowser(HWND ParentWindow) : Shdocvw::TWebBrowser(ParentWindow) { } |
inline __fastcall TWebBrowser(HANDLE ParentWindow) : Olectrls::TOleControl(ParentWindow) { } inline __fastcall TUIWebBrowser(HANDLE ParentWindow) : Shdocvw::TWebBrowser(ParentWindow) { } |
UIBrowser.hppのインクルードファイル名を変更
#include <MSHTML.hpp> // Pascal unit #include <MSHTML.h> // Pascal unit |
UIFavorites.pasにバグがあるので、次のように書き換える。
Menu := NewItem('ImpFavCaption', 0, False, True, FavoritesImport, 0, ''); Menu := NewItem('ExpFavCaption', 0, False, True, FavoritesExport, 0, ''); |
Menu := NewItem(ImpFavCaption, 0, False, True, FavoritesImport, 0, ''); Menu := NewItem(ExpFavCaption, 0, False, True, FavoritesExport, 0, ''); |
・ \include\vcl\SHDocVw.hpp に以下を追加。
typedef IPersistFile *_di_IPersistFile; typedef IDispatch *_di_IOleCommandTarget; typedef IDropTarget *_di_IDropTarget; |
この状態でコンパイルすると、
[リンカ エラー] 外部シンボル 'InternetQueryOptionA' が未解決(\UIWEBBROWSER\UIWEBBROWSER.OBJ が参照) [リンカ エラー] 外部シンボル 'InternetSetOptionA' が未解決(\UIWEBBROWSER\UIWEBBROWSER.OBJ が参照) [リンカ エラー] 外部シンボル 'DoOrganizeFavDlg' が未解決(\UIWEBBROWSER\UIWEBBROWSER.OBJ が参照) [リンカ エラー] 外部シンボル 'CreateURLMoniker' が未解決(\UIWEBBROWSER\UIWEBBROWSER.OBJ が参照) [リンカ エラー] 外部シンボル 'RetrieveUrlCacheEntryFileA' が未解決(\UIWEBBROWSER\BROWSERDOMEVENT.OBJ が参照) [リンカ エラー] 外部シンボル 'UnlockUrlCacheEntryFile' が未解決(\UIWEBBROWSER\BROWSERDOMEVENT.OBJ が参照) [リンカ エラー] 外部シンボル 'URLDownloadToFileA' が未解決(\UIWEBBROWSER\BROWSERDOMEVENT.OBJ が参照) |
のようにエラーが出るので、コマンドラインから以下を実行
$(BCB)\Bin\implib $(BCB)\Lib\psdk\shdocvw.lib %windir%\system32\shdocvw.dll |
$(BCB)はC++Builderのインストールフォルダ。
できたLibファイルをインポートします。
取りあえず、簡単なブラウザ完成。
数時間で作ったので、ほんとに基本機能しかありませんが。
黒猫ぶらうざ~ v0.10
動作確認は Windows Me と Windows 2000 ですです。
関連サイト:
UIWebBrowser
Comments