0

再生とダウンロードの進行状況を表示する CSliderCtrl を使用してビデオ プレーヤーを実装したいと考えています。ビデオが再生されると親指が動き、ビデオ ファイルがダウンロードされるとチャンネルが変化します。この記事1を参考にしましたが、チャンネルはイベントハンドラーでしか描画できないのですが、大量のファイルを受信したときにチャンネルを描画したいです。そのため、ハンドラではなく実行時にチャネルを取得する方法を知りたいです。 効果

4

1 に答える 1

1

他のオーナー描画コントロールと同様に、Custom Draw イベント ハンドラーですべてを描画する必要があります。Codeproject のこのカスタム クラスも例外ではありません。

これに対応するには、既にダウンロードされたチャンクのサイズとファイルのサイズを保持するメンバー変数を親ウィンドウに作成する必要があります。例えば

class CMyDialog: CDialog
{
private:
   int nBytes; // downloaded bytes
   int nSize;  // total size of the file
}

チャンクを受け取ると、それに応じて nBytes を増やします。

スライダー コントロールのカスタム描画ハンドラーでは、これらの変数を使用してチャネル位置をオフセットします。基本的に、記事の著者が提案したように、長方形を描くだけです。作成者は 1 つの長方形を使用しましたが、別のブラシで描画された 2 つ (左右の長方形) を使用します。

実際のトリックは、チャンクを受け取るたびにスライダーを強制的に再描画することです。Invalidateを使用する必要があります:

m_myslider.Invalidate();
于 2013-10-17T01:35:43.617 に答える