次の方法で共有


イベントのフリーズ

コンテナーは、IOleControl::FreezeEventsTRUE で呼び出すことによって、イベントに応答する準備ができていないことをコントロールに通知できます。 FALSEFreezeEvents を呼び出すことで、凍結を解除できます。 コンテナーがイベントをフリーズすると、イベントの受信ではなく、イベントの処理がフリーズします。つまり、イベントが凍結されている間もコンテナーはイベントを受信できます。 イベントが凍結されている間にコンテナーがイベント通知を受信した場合、コンテナーはイベントを無視する必要があります。 他のアクションは適切ではありません。

イベントが見逃されないことがコントロールにとって重要な場合、コントロールは、コンテナーの FreezeEventsTRUE の呼び出しを書き留める必要があります。 コンテナーのイベント処理が停止している間、コントロールは次のいずれかの手法を実装する必要があります。

  • コンテナーがアクションを実行しないことを十分に承知した上で、イベントを発生させます。
  • コントロールが発生させるすべてのイベントを破棄します。
  • コンテナーが FALSEFreezeEvents を呼び出した後で、保留中のすべてのイベントをキューに登録します。
  • 関連するイベントまたは重要なイベントのみをキューに登録し、コンテナーが FALSEFreezeEvents を呼び出した後に起動します。

各テクニックはさまざまな状況で受け入れられ、適切です。 コントロールの開発者は、コントロールの機能に適切な手法を決定して実装する責任があります。