- PR -

ActiveX control画面を閉じる

投稿者投稿内容
hihi
常連さん
会議室デビュー日: 2002/08/30
投稿数: 29
お住まい・勤務地: 名古屋
投稿日時: 2006-01-23 10:43
VB6で作成したActiveXControlで自分自身を閉じるボタンを作成したいので、VBでMe.Closeみたいな事は何でしょうか、誰か教えていただけるでしょうか?
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-01-23 11:01
Unload Meじゃないの?
hihi
常連さん
会議室デビュー日: 2002/08/30
投稿数: 29
お住まい・勤務地: 名古屋
投稿日時: 2006-01-23 11:07
Unload(me)を使えない。このオブジェクトのプロパティが存在しないみたいなメッセージがでました。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-01-23 11:20
引用:

VB6で作成したActiveXControlで自分自身を閉じるボタンを作成したいので、VBで



「自分自身を閉じる」とは、その ActiveX コントロールだけが閉じればいいんですか?

それとも、ActiveX コントロールをホストしている、トップレベルのウィンドウを閉じたいんですか?
hihi
常連さん
会議室デビュー日: 2002/08/30
投稿数: 29
お住まい・勤務地: 名古屋
投稿日時: 2006-01-23 11:30
ありがとうございます、トップ画面を閉じればいいと思います。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-23 11:34
引用:

hihiさんの書き込み (2006-01-23 11:30) より:

トップ画面を閉じればいいと思います。


それは「ActiveX 自身」とは言えないと思うのですが...
ActiveX コントロールの Parent を見ていって Form である場合に、Unload すればいいのかな。

ただ、ActiveX コントロール自身からではなく、そのフォームから Unload すべきです。
子コントロールは親コントロールに関与しない方が良いからです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-01-23 12:43
引用:

ActiveX コントロールの Parent を見ていって Form である場合に、Unload すればいいのかな。



ActiveX コントロールには「ウィンドウレスコントロール」というものもあるので、ウィンドウの親子関係を辿るのは間違いです。

ActiveX コントロールの「親子関係」は IOleObject、IOleClientSite, IOleContainer の接続によって表されので、それを辿るのが正道です。

が、「IE に表示されている ActiveX コントロール」の場合、コントロール自身は IObjectWithSite を必ず実装している保証があり、IE4 以降の実装では、IObjectWithSite::GetSite() で取得したインターフェースから、もっと簡単に IE のトップレベルフレーム(ウィンドウ)にたどり着けます。

# 。。。が、詳細はもう忘れました (^^;
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-01-24 01:07
引用:

ActiveX コントロールには「ウィンドウレスコントロール」というものもあるので、ウィンドウの親子関係を辿るのは間違いです。



今回は、最終的に「トップレベルウィンドウ」が見つかればよいだけなので、ウィンドウの親子関係を辿るのでも出来そうですね (^^;

ただし、自分自身がウィンドウレスコントロールの場合は一工夫必要かも。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/

スキルアップ/キャリアアップ(JOB@IT)