次の方法で共有


Windows ソケット : ソケット クラスからの派生

この記事では、いずれかのソケット クラスから独自のクラスを派生させることで得られる機能の一部について説明します。

CAsyncSocket または CSocket から独自のソケット クラスを派生して、独自の機能を追加できます。 特に、これらのクラスには、オーバーライドできる仮想メンバー関数が多数用意されています。 これらの関数には、 OnReceiveOnSendOnAcceptOnConnectOnClose が含まれます。 派生ソケット クラスの関数をオーバーライドして、ネットワーク イベントが発生したときに提供される通知を利用できます。 フレームワークは、これらの通知コールバック関数を呼び出して、読み取りを開始できるデータの受信など、重要なソケット イベントを通知します。 通知関数の詳細については、「 Windows ソケット: ソケット通知」を参照してください。

さらに、クラス CSocketOnMessagePending メンバー関数 (高度なオーバーライド可能) を提供します。 MFC は、ソケットが Windows ベースのメッセージをポンプしている間にこの関数を呼び出します。 OnMessagePendingをオーバーライドして、Windows から特定のメッセージを検索し、それらに応答することができます。

クラスOnMessagePendingで提供されるCSocketの既定のバージョンでは、ブロック呼び出しの完了を待機している間、メッセージ キューでWM_PAINT メッセージが調べられます。 ディスプレイ品質を向上させるために描画メッセージを送信します。 これは、便利なことを行う以外に、関数を自分でオーバーライドする方法の 1 つを示しています。 別の例として、次のタスクに OnMessagePending を使用することを検討してください。 ネットワーク トランザクションの完了を待っている間にモードレス ダイアログ ボックスを表示するとします。 ダイアログ ボックスには、[キャンセル] ボタンが含まれています。このボタンを使用すると、ユーザーは時間がかかりすぎるブロックトランザクションを取り消すことができます。 OnMessagePending のオーバーライドは、このモードレス ダイアログ ボックスに関連するメッセージを表示する可能性があります。

OnMessagePendingオーバーライドで、TRUE を返すか、基底クラス バージョンのOnMessagePendingを呼び出してその結果を返します。 引き続き必要な作業を実行したい場合は、基底クラスのバージョンを呼び出してください。

詳細については、以下を参照してください。

こちらも参照ください

MFC の Windows ソケット