質問: activexコントロールの作成(vb6) こんばんは。 今、vb6でactivexコントロールを作成しようと思っています。 現在、標準exeにて、プログラムが作ってあります。 動作としては、 1.スタートボタン(cmdstart)で開始 2.処理(外部の測定器によるデータ収集) 3.終了ボタン(cmdend)にてプログラム終了 です。 これをもとに、activexコントロールを作成したいです。手元にある文献にしたがってほぼコピー&ペーストで作成しました。また、これの動作を調べるため、標準exeのフォームを作成し、そのフォームにactivexコントロールを貼り付けました。 ここで質問です。 form_loadはusercontrol_initializeに書き換えました。(これは文献に載っていました) 最後のプログラム終了がうまくいきません。 標準exeでは private sub cmdend_click() unload me end sub と書いてプログラムを終了させていました。 ここを書き換えずにactivexコントロールを実行させたらエラーが出ました。"unload me"を"end"に書き換えてみたら、サポートされていないと出ました。 cmdendをクリックしてプログラムを終了させるにはどう書けばいいでしょうか? よろしくお願いします。
回答: activexコントロール内で、プログラムを終了させよう、というプログラムデザインがそもそもの元凶だと思われます。 質問で書かれていた、1,2,3の処理中、2の機能を持ったactivexコントロールを作成する。 1の処理開始、3のプログラム終了はactivexコントロールを貼り付けられるプログラム本体で処理する方が良いと思います。 仮に2の処理終了と同時に、プログラムを終了させたいと言うことであれば、activexコントロールに処理終了イベントを実装します。 '処理が終了したことを通知するイベント event shorishuryo のような感じです。 処理が終わった際に、 '処理終了イベントを発生させてプログラム本体に通知する raiseevent shorishuryo としてやれば、本体プログラム中でshorishuryoイベントが発生しますので、プログラム終了のためにunload meを実行します。 決してお勧めなわけではありませんが、以下のようにすると内部の終了ボタンがクリックされた事を、本体プログラム側に通知することができます。 '『終了』コマンドボタンがクリックされたことを通知するイベント event endclick private sub cmdend_click() raiseevent endclick end sub