VCでIEのブラウザ画面を・・

このエントリーをはてなブックマークに追加
1石田
VCで、ウィンドウの中にIEのブラウザ画面を埋め込みたい。
VBでは、WBオブジェクトを埋め込むだけでできるのに、
VCでは、結構手間かかるんですかねえ?
教えてください
2デフォルトの名無しさん:2001/05/24(木) 18:03
CHtmlView
3石田:2001/05/24(木) 18:16
MFC
つかいたくないんですけど・・・
4デフォルトの名無しさん:2001/05/24(木) 18:47
おおグッドタイミング。俺も知りたいです。
自分で調べた成果、以下の2つのインタフェース実装は最低条件らしい。
・IWebBrowser2
・DWebBrowserEvents2

で、これらって派生させてメソッドのコード自分で書かないかんの?
簡単にんにインタフェース取得できんのかな。
CoGetWebBrowerみたいな関数あるとありがたいのに。
54:2001/05/24(木) 18:50
で、サンプルほしいんで今日一日検索してたんだけど、VBとMFCばかり。
dountのソースが非MFCだったんだけど、独自ライブラリ使ってるので
解析難航しております。
6デフォルトの名無しさん:2001/05/24(木) 18:51
>>5
独自ライブラリっていうかATL+WTLではなく?
74:2001/05/24(木) 19:01
>>6
有名なのかな?無知ですいません。
8デフォルトの名無しさん:2001/05/24(木) 19:17
MFCのソースを読むというのは?
9わからん:2001/05/24(木) 23:19
私も興味があった一人なんですけど、結局、分かる人はいないのですか?
10デフォルトの名無しさん:2001/05/24(木) 23:27
WTLで作られたブラウザがあるな・・
11デフォルトの名無しさん:2001/05/24(木) 23:36
>>10
直前で外出
12デフォルトの名無しさん:2001/05/24(木) 23:53
>>4
IWebBrowser2はIEコンポーネントが提供するインターフェイス。自分で実装
する必要はない。ていうか、こんなもん実装できるか。しないために、IEコンポーネントを
使う。
DWebBrowserEvents2はIWebBrowser2からのイベントを受けるイベントシンク。
こっちはコンテナ側が実装して、IWB2からのイベントを処理する。

IWebBrowser2のIFを得るには、CoCreateInstanceにCLSID_InternetExplorerや
CLSID_IWebBrowserを渡してやれば実体化できる。
CLSID_InternetExplorerを渡してもIEが実体化され起動したIEを制御できる
だけなので、あまり面白くない。が、IEの画面を別プロセスから制御するのは
見た目には面白いので素人ウケするかもしれない。
コントロールとして埋め込むにはCLSID_IWebBrowserを実体化する。
CLSID_IWebBrowser2の方を実体化するには、OleControlContainerになら
ないといけないらしい。その辺が恐ろしく面倒だということまではわかった。
素直に、MFCかWTLを使うのが良いと思う。そのためのMFCでありWTLなわけだし。
13デフォルトの名無しさん:2001/05/25(金) 11:11
WSHの実行ログを表示するコンソールとして、IEを使っています。
141ですが:2001/05/25(金) 20:54
結局みなさん、結論として途中までしかわからないというかんじでしょうか?
よかったらサンプルプログラムあるURL、書籍など教えてください!
15デフォルトの名無しさん:2001/05/26(土) 00:59
ていうか、VC使いはMFC使った方が楽だからわざわざMFCを
使わない方法を考えない。(=車輪の再発明をしない)
16デフォルトの名無しさん:2001/05/27(日) 19:29
>>15
同意。デル使いがVCLを使わない方法を考えないのと同じ。
174:2001/05/28(月) 10:52
・インタフェースはIWebBrowser2
・DWebBrowserEvents2でIWebBrowser2のイベントを受け取る
・実体化はCoCreateInstanceでよい
・OleControlContainerにするのが面倒くさい

インターネット漁ったけど結局収穫無し。
むー、意地でも作りたくなってくるな。
181ですが(石田):2001/05/28(月) 14:56
みんなろくに解答してくれないのに、初心者たたきみたいに
うざいです。たぶん、実際に知っている連中なんだろうけど
そういう人は、こういうところだけで面と向かっては、
喧嘩うれない人ばっかだろうから
(ボクシングやってる自分としては、現実でも喧嘩うること
自体未熟といいたいけど)
流してみています。
4さん、同じ目的を持っているみたいですね!!
同盟をくみましょう
19デフォルトの名無しさん:2001/05/28(月) 15:02
>>1
スレ眺めても別に叩いる奴なんていないと思うが・・・?
20デフォルトの名無しさん:2001/05/28(月) 15:14
>>18
ボクシングのやりすぎで頭がおかしくなってしまったのでは?(叩き)
21デフォルトの名無しさん:2001/05/28(月) 15:37
VBと同じようにやりたいのなら(藁

"VCで、ウィンドウの中にIEのブラウザ画面を埋め込むのに
VCでも、WBオブジェクトを埋め込むだけでできるのに、 "

MFC使いたくないとかワケのわからないことを言うから余計に
問題が複雑になっていると思われ。

VBと同じくダイアログベースだがな(藁
今やってみたが1分も掛からずに出来たぞ。

C++よくわからんからMFC使いたくないとかいうVB厨じゃないだろうな。
MFCとかWTLを使わない方がずーーーと難しいなんて事は分かって
ないと思われ。
22デフォルトの名無しさん:2001/05/28(月) 15:39
>>18 あなたみたいなクレクレ厨房もうざいんですがね。
23石井:2001/05/28(月) 15:54
すいません、このスレの人はまともでした
ほかのところでは、首つれだとか、糞食ってシネ だとか
丸一日へこみました
24デフォルトの名無しさん:2001/05/28(月) 15:56
このスレの住人>>>>>>>>>>石井>>ほかのところ
25デフォルトの名無しさん:2001/05/28(月) 15:59
2chで罵倒される人は、罵倒されるようなことをしてるのがほとんどだよ。
それが気づいているかいないかっていうだけ。

君は自分が自己中心的ってことに気づいてないだけ。
現実社会では人間関係もあってまわりがあわせてくれてるんだろうけど、
2chではそうはいかないってことだよ。

それがわかったら自己啓発セミナーにでも逝って更生しなさい
26つーか:2001/05/28(月) 16:38
MFCじゃなくても
ActiveXオブジェクト(WebBrowser)をうめこめばいいだけでないの?
>21
27デフォルトの名無しさん:2001/05/28(月) 16:48
>>1==石田==石本==石井はマゾだと思われ。
わざわざ罵倒されるようなことをする、わざわざMFCを使わない方法を探る、
わざわざ車輪を再発明しようとするetc
2821:2001/05/28(月) 16:49
>>26

MFCなしでVB厨にもActiveXオブジェクトに
簡単にアクセースできますか?
29デフォルトの名無しさん:2001/05/28(月) 19:15
>>1
MFC がイヤなら ATL の CAxWindow を遣うのはどない?
メインウィンドウにフィットする子ウィンドウを作り、そいつを
CAxWindow オブジェクトにアタッチし、CreateControlEx()。

MFC も ATL もイヤで、ゼロから実装したいっつうなら、
他の人も言ってるように、OLE(ActiveX)の理解が必須。
「Inside OLE」とかを読んで、ActiveX コントロールとの連携方法を
ゼロから学習するしかないやろね。

素直になんらかのライブラリの恩恵を受けたほうがよいと思うよ。
30デフォルトの名無しさん:2001/05/28(月) 20:51
>>29
MFCもATLも理解できない1にOLEを理解しろと言うのは不可能だ。
311ですが:2001/05/28(月) 20:51
多分誤解を招いたかもしれません、1からWebブラウザを作るという意味
ではさすがにありません。
どうやら、ActiveXコントロールでWeb Browserオブジェクトを埋め込む
というのが有力みたいですね。
32名無し関数のλさん:2001/05/28(月) 21:55
>>31
WTL 入れて ATL/WTL App Wizard に雛型を作らせて、それを出発点に
するのが良いと思う。

Use a view window にチェック入れて View Type を HTML Page にすれ
ば、CAxWindow を使って IE コンポーネント埋め込んだコードを書き出し
てくれる。これで QueryControl 使って IWebBrowser2 インターフェースを
取得すれば、とりあえず IE コンポーネントを操作できる。


----------
LRESULT OnFileNew(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
        // TODO: add code to initialize document
        HRESULT hr;
        CComPtr<IWebBrowser2> spBrowser;

        hr = m_view.QueryControl(&spBrowser);
        if (FAILED(hr))
                return 0;

        CComVariant ve;
        CComVariant vurl(_T("http://piza2.2ch.net/tech/index2.html"));
        spBrowser->Navigate2(&vurl, &ve, &ve, &ve, &ve);
                
        return 0;
}
----------

使いこなすには ATL/WTL のコードを読むのが必須ですが(WTL にいたっ
てはドキュメントないし)、それなりの力量が要求されます。読んで分からな
かったら諦めましょう。
331ですが:2001/05/29(火) 00:00
なるほど!
32さんのアドバイスは簡潔かつ、参考になりました
ありがとうございます

・・・何人か、私になりすましてる・・・
341ですが:2001/05/29(火) 00:00
なるほど!
32さんのアドバイスは簡潔かつ、参考になりました
ありがとうございます

・・・何人か、私になりすましてる・・・
351ですが:2001/05/29(火) 00:00
なるほど!
32さんのアドバイスは簡潔かつ、参考になりました
ありがとうございます

・・・何人か、私になりすましてる・・・
36デフォルトの名無しさん:2001/05/29(火) 00:10
  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
  |      呼んだ?         |
  \_______ ____/
              |/
           ∧⊂ヽ
           (゚Д゚)ノ
   ____/ |⊃ |\____
   \ 叩 / ̄ |   | ̄\ 氏 /
     \/   ⊂ ノ〜  \/
     /\ ((⊂∪⊃)) /\
   / 逝 \____/ 煽 \
     ̄ ̄ ̄ ̄\. 騙 ./ ̄ ̄ ̄ ̄
              \/
37デフォルトの名無しさん:2001/05/29(火) 03:31
>>31
誰もそれ以外の方法を提案してないんだけど。
MFCやATL+WTLを使おうが使うまいが、「Web Browserコントロールを埋め込む」
ことには変わりない。
38フレデリック:2001/05/29(火) 14:45
DWebBrowserEvents2はイベントソースだよ。
イベントを発信するのはあくまでコントロールだよ。
その実装がコンテナにあるんです。こちらをシンクといいます。
接続ポイントについて学ぶといいです。
39デフォルトの名無しさん:2001/05/29(火) 15:50
donutのソース、それほどわかりにくいとは思えないんだが…
1の用途ならIWebBrower2のラッパークラスとして定義してるとこだけ
見れば済むんじゃないのか?
40!1
>>39
これから詳しく読もうと思うんだけど、読むべきファイルについて助言を頼む。

ざっと見て MtlBrowser.h でラッパクラス CWebBrowser2 と IWebBrowserEvent2Impl
を定義して、それを ChildFrm.h で利用しているみたいだが、この二つを読めば OK?