vc++6.0でMFC ActiveX ControlWizardを使用しているのですが、
1つメソッドを追加し、そのメソッドをIEから呼び出すことって
可能でしょうか?
またパラメータ(引数)などがあっても平気でしょうか?
ちょっとしたヒントでも良いので教えて下さい。
よろしくお願いします。

A 回答 (1件)

ActiveXコントロールをブラウザでロードさせるには


<object>タグを使用します。こんなかんじです。

<OBJECT ID="hogehoge"
classid ="CLSID:6BFdf352-394A-11d3-B153-00C04F79FAA6"
type="application/x-oleobject" width=160 height=180>
<PARAM NAME="AutoStart" VALUE="True">
<PARAM NAME="BufferingTime" VALUE="3">
</object>

<param>タグではオブジェクトのプロパティを設定できます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QMFC VC++6.0 DestroyWindowの実装場所について

[開発環境]:Visual C++ 6.0

現在、Visual C++ 6.0を使ったプログラミングの勉強をしています。
MFC AppWizard (exe)でSDIプログラムのtest1プロジェクト作成後、メインフレームにボタンを実装し、そのボタンを押下するとモードレスダイアログを表示するというアプリケーションを作っているのですが、ダイアログを終了させる時のDestroyWindowの実装場所と実装方法が分かりません。
ダイアログ用のクラスはCmyDialogとしていますが、ダイアログの終了ボタンを実装した場合、そのボタン処理の中すなわちCmyDialogクラスのなかの関数で行うべきなのでしょうか?それともダイアログの作成と同様にメインフレームがわの処理(CTest1Viewクラスでの処理?)として行うべきなのでしょうか?この場合にはどのような場所でどのようなタイミングで実装すればよいのか分かりません。
ご存じの方、これらについて御教授お願いします。

以下プログラムの一部を記載します。
-test1view.cppの一部-(ここでダイアログの作成と表示をしています)
void CTest1View::OnButton1()
{
CmyDialog* myDLG = new CmyDialog;
myDLG->Create(IDD_DIALOG1,this);
myDLG->ShowWindow(SW_SHOW);
}

[開発環境]:Visual C++ 6.0

現在、Visual C++ 6.0を使ったプログラミングの勉強をしています。
MFC AppWizard (exe)でSDIプログラムのtest1プロジェクト作成後、メインフレームにボタンを実装し、そのボタンを押下するとモードレスダイアログを表示するというアプリケーションを作っているのですが、ダイアログを終了させる時のDestroyWindowの実装場所と実装方法が分かりません。
ダイアログ用のクラスはCmyDialogとしていますが、ダイアログの終了ボタンを実装した場合、そのボタン処理の中すなわちCmyDia...続きを読む

Aベストアンサー

ずいぶん回答がないままのようですが、まだお困りでしょうか?

とりあえず、回答します。
DestroyWindowを呼び出す場所については、ゆるされるタイミングで好きな時に。ということになるでしょうか。
つまり、このモードレスダイアログが要らなくなったときですね。
一般的?かどうか自信ないですが、Viewクラスの破棄時に呼ぶのが妥当かと。あるいは、このモードレスダイアログを使用する機能が終了した時とか。
ただご提示のサンプルでは、ダイアログのポインタがOnButton関数内の変数になってしまっているので、メンバ変数にするなどが必要です。

QVC++6.0 MFC ダイアログバーを横に並べるには?

VC++6.0 MFC ダイアログバーを横に並べるには?

MainFrameでコントロールバーをいくつか作成しました。
下記のようにやると上下につながります。
ABarの右側にBBarをくっつけるには、どうしたらいいのでしょうか?

ちなみにALIGN_RIGHTにするとメインフレームの右端に張り付いてしまいます。

//ABarを作成
if( !m_wndABar.Create( this, IDD_DLGBAR_A, CBRS_TOP, IDD_DLGBAR_A ) )
{
TRACE0("Failed to create DlgBar\n");
return -1; // 作成に失敗
}
// ドッキング設定
m_wndABar.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndAiBar,AFX_IDW_DOCKBAR_TOP);


//BBarを作成
if( !m_wndBBar.Create( this, IDD_DLGBAR_B, CBRS_TOP , IDD_DLGBAR_B ) )
{
TRACE0("Failed to create DlgBar\n");
return -1; // 作成に失敗
}
// ドッキング設定
m_wndBBar.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndBBar,AFX_IDW_DOCKBAR_TOP);

VC++6.0 MFC ダイアログバーを横に並べるには?

MainFrameでコントロールバーをいくつか作成しました。
下記のようにやると上下につながります。
ABarの右側にBBarをくっつけるには、どうしたらいいのでしょうか?

ちなみにALIGN_RIGHTにするとメインフレームの右端に張り付いてしまいます。

//ABarを作成
if( !m_wndABar.Create( this, IDD_DLGBAR_A, CBRS_TOP, IDD_DLGBAR_A ) )
{
TRACE0("Failed to create DlgBar\n");
return -1; // 作成に失敗
}
// ドッキング設定
m_wndABar.EnableDocking(CBRS_...続きを読む

Aベストアンサー

#1です。
すみません。#1で注意点があります。

ダイアログバー「ABar、または、BBar」が、CToolBarではなく、
CDialogBarだった場合は、#1の参考サイトの関数をそのまま
使用すると、引数の型違いでコンパイルエラーとなるかもしれ
ません。

もし、エラーとなった場合は、関数 DockControlBarLeftOf()
の定義を以下のように修正する必要があると思います。

<変更前>
・ヘッダーの定義
 void DockControlBarLeftOf( CToolBar* Bar, CToolBar* LeftOf );
・本体側の定義
 void CMainFrame::DockControlBarLeftOf( CToolBar* Bar, CToolBar* LeftOf )
 {
   :
 }

<変更後>
・ヘッダーの定義
 void DockControlBarLeftOf( CControlBar* Bar, CControlBar* LeftOf );
・本体側の定義
 void CMainFrame::DockControlBarLeftOf( CControlBar* Bar, CControlBar* LeftOf )
 {
   :
 }

以上です。

#1です。
すみません。#1で注意点があります。

ダイアログバー「ABar、または、BBar」が、CToolBarではなく、
CDialogBarだった場合は、#1の参考サイトの関数をそのまま
使用すると、引数の型違いでコンパイルエラーとなるかもしれ
ません。

もし、エラーとなった場合は、関数 DockControlBarLeftOf()
の定義を以下のように修正する必要があると思います。

<変更前>
・ヘッダーの定義
 void DockControlBarLeftOf( CToolBar* Bar, CToolBar* LeftOf );
・本体側の定義
 void CMainFrame::DockControlBarLe...続きを読む

Q【VC++6.0(MFC)】メモリの静的、動的割り当ての意味

いつも大変お世話になっています。
VC++初心者です。

大変初歩的な事なのですが、
理解できていないので質問をさせて頂きたいと思います。

new、deleteはメモリを動的に割り当て、開放しるようですが、
この動的とはどういう意味なのでしょうか。
動的があるのなら、静的にメモリ割り当てというものも
あるのでしょうか。
(静的、動的を区別することによって得られる
恩恵とは何なのでしょうか。)
具体的に例を挙げていただけると幸いです。

Aベストアンサー

>> 「確保される場所が違う」、これをもう少し厳密に言うと
>> 「確保されるメモリの場所が違う」という事でしょうか。
>> (例えば、
>> int i;みたいな変数は、Aという範囲のメモリを使いなさい、
>> new を使った変数は、Bという範囲のメモリを使いなさい、
>> というイメージでしょうか。
>> 稚拙な表現ですみません。)

参照URLにも記載されていますが、【int a】で確保した場合、
関数内のauto変数ならスタック領域、static変数やグローバル変数ならば
静的領域に確保されます。

【new】や【malloc】などで確保した場合はヒープ領域に確保されます。


>> >(可変長のCSVファイルを読み込みや、双方向リストなどのデータ構造を作成したい場合)
>> >いきなりデカイローカル変数等などを用意して使いまわしても良いと思いますが、実用的ではありません。
>> この内容を拝見して「何故、実用的でないのか」と疑問に思いました。
>> (確かに、あまり良くないな、感覚的には思うのですが、
>>  論理的には説明できないのです。)
>> つまり、私の挙げた例を使うと、メモリ範囲Bがあるのに、
>> メモリ範囲Aの部分を大量に消費してしまうから、
>> 実用的でないということでしょうか。

まず、関数内で宣言されるauto変数は、大概の処理系ではスタック領域に確保されるため、
コンパイルオプション等にもよりますが、それほど大きな領域を確保できませんし、
大きな領域を確保出来る環境を前提に作ってしまうと、移植性に乏しくなってしまいます。

newやmallocでメモリを動的に確保出来る利点は以下の通りと私個人では判断しております。

(1)配列では面倒なデータの削除や追加が可能なデータ構造を実現できる。
 通常の配列では、途中のデータを追加・削除しようとすると、データのコピー等が発生するなど
 処理が重たくなってしまいます。
 そこで、リスト構造などデータの追加・削除が容易な仕組みを実現することが必要となり、
 自己参照構造体やメモリの動的確保で実現を行います。

(2)例えば、メモリ領域が最大100M確保可能な環境があるとします。
 データaとデータbがあり、それぞれ可変長(0~100M)だが、
 データaとデータbは足して100Mを超えることは無いものとします。
 上記の場合、データa・データbのそれぞれの最大メモリ使用量は100Mのため
 足して200Mの領域を最初に確保したいと思いますが、環境が最大100Mまでしか
 確保できないため、出来ません。
 そこで動的メモリ確保となってくる訳です。


特にオブジェクト指向でプログラムを組むとなると、各タイミングで各種オブジェクトの
生成・消滅が発生します。
それを前提にある程度のオブジェクト数を最初に用意しておく事も可能ですが、コンストラクタや
デストラクタを活かすコードを書こうとした場合、new・delete演算子で生成・消滅させた
方が良いと思います。

私はwindows畑ではありませんが、microsoftのMFCなどもウィンドウやボタンを生成する毎に
それに対応するCButtonクラス等を継承したクラスを生成していたはずです。

以上

>> 「確保される場所が違う」、これをもう少し厳密に言うと
>> 「確保されるメモリの場所が違う」という事でしょうか。
>> (例えば、
>> int i;みたいな変数は、Aという範囲のメモリを使いなさい、
>> new を使った変数は、Bという範囲のメモリを使いなさい、
>> というイメージでしょうか。
>> 稚拙な表現ですみません。)

参照URLにも記載されていますが、【int a】で確保した場合、
関数内のauto変数ならスタック領域、static変数やグローバル変数ならば
静的領域に確保されます。

【new】や【mal...続きを読む

Qfor文の処理に時間がかかっているか。MFC VC++ 6.0 使用

今 私は MFC VC++ 6.0 を使用しています。

CModel::OnDraw(CDC *pDC)
{
(略)

(ここから)
for(int i=0;i<500000;i++){
なんらかの アルゴリズム
}

(ここまで)

(略)

}

上記に示した (ここから) (ここまで)に ドレくらい時間がかかっているか 時間を 計りたいのです。 かかったじかんを
pDC->TextOut(・・・・・)

と 画面に 表示させたいのですが、どうすればいいでしょうか?

参考書には 今の 時間(4時12分) などの現在の時刻を 表示させるものは 結構のってるのですが、私は 時刻ではなく for文を処理している 時間を しりたいのです。よければ 教えてください。

Aベストアンサー

わたしはGetTickCount()の関数は使ったことありませんが。

DWORD tStart = GetTickCount();

for(int i=0;i<500000;i++){
なんらかの アルゴリズム
}

// 処理にかかった時間(msec)
DWORD tElapsed = GetTickCount() - tStart;

QVC6.0からVC7.0への移植

VisualStudioでプログラムしています。
このたび、VC6.0で作ったプログラムをVC7.0(.NET?)に移植しようとしたところ、
「MSVCIRTD.LIBがありません」とエラーが出たので、
Microsoft Visual Studio\VC98\LibにあったMSVCIRTD.LIBをコピーしてコンパイルを通したのですが、
今度はvc60.pdbが見つからないというwarningが出てしまいます。
warningなので無視して実行しようとすると、
強制終了してしまいます。

VC6.0で作ったプログラムのファイル構成と比べると、
確かにvc70.pdbはあるのですが、vc60.pdbはありません。
ご存知の方がいましたら、問題の解決方法をご教授くださいよろしくお願いします。

Aベストアンサー

visual studio c++.net ですよね
(MSVCIRTD.LIB)
msvcirtd.libは
C:\Program Files\Microsoft Visual Studio .NET\Vc7\lib
にありますよ
ほかのサンプルでためして、同じようでしたら
インストールがおかしいのではないでしょうか


人気Q&Aランキング

おすすめ情報