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