この記事では、いずれかのソケット クラスから独自のクラスを派生させることで得られる機能の一部について説明します。
CAsyncSocket または CSocket から独自のソケット クラスを派生して、独自の機能を追加できます。 特に、これらのクラスには、オーバーライドできる仮想メンバー関数が多数用意されています。 これらの関数には、 OnReceive、 OnSend、 OnAccept、 OnConnect、 OnClose が含まれます。 派生ソケット クラスの関数をオーバーライドして、ネットワーク イベントが発生したときに提供される通知を利用できます。 フレームワークは、これらの通知コールバック関数を呼び出して、読み取りを開始できるデータの受信など、重要なソケット イベントを通知します。 通知関数の詳細については、「 Windows ソケット: ソケット通知」を参照してください。
さらに、クラス CSocket
は OnMessagePending メンバー関数 (高度なオーバーライド可能) を提供します。 MFC は、ソケットが Windows ベースのメッセージをポンプしている間にこの関数を呼び出します。
OnMessagePending
をオーバーライドして、Windows から特定のメッセージを検索し、それらに応答することができます。
クラスCSocket
で提供されるOnMessagePending
の既定のバージョンでは、ブロック呼び出しの完了を待機している間、メッセージ キューでWM_PAINT メッセージが調べられます。 ディスプレイ品質を向上させるために描画メッセージをディスパッチします。 これは、便利なことを行う以外に、関数を自分でオーバーライドする方法の 1 つを示しています。 別の例として、次のタスクに OnMessagePending
を使用することを検討してください。 ネットワーク トランザクションの完了を待っている間にモードレス ダイアログ ボックスを表示するとします。 ダイアログ ボックスには、[キャンセル] ボタンが含まれています。このボタンを使用すると、ユーザーは時間がかかりすぎるブロックトランザクションを取り消すことができます。
OnMessagePending
オーバーライドでは、このモードレス ダイアログ ボックスに関連するメッセージが表示されることがあります。
OnMessagePending
オーバーライドで、TRUE を返すか、基底クラス バージョンのOnMessagePending
の呼び出しから戻ります。 必要な作業が実行される場合は、基底クラス バージョンを呼び出します。
詳細については、以下を参照してください。