1

WINAPIを使用してGUIを開発していますが、質問があります。メッセージを処理するためのそれぞれの手順を使用して、カスタムのプログレスバーを作成しました。プログレスバーを自分でペイントします。プログレスバーのパーセンテージには、カスタムメッセージを使用して更新する静的変数を使用してから、InvalidateRectを使用してプログレスバーを再描画します。次に、コードを最適化して、ProgressBarクラスの複数のウィンドウを作成するにはどうすればよいでしょうか。問題は、それらすべてに同じ静的パーセンテージ変数を使用できないことです。したがって、各インスタンスには独自のパーセンテージ変数が必要です。

ありがとうございました

4

2 に答える 2

3

すべてのウィンドウには、任意の目的に使用できるポインター サイズのユーザー データ変数が少なくとも 1 つGetWindowLongPtrありSetWindowLongPtrますGWLP_USERDATA

WNDCLASSさらに、ウィンドウ クラスを登録するときに、メンバーを使用して、クラス内の各ウィンドウに割り当てる追加のユーザー データを指定できますcbWndExtra。たとえば、クラスを登録するときにこれを sizeof(DWORD_PTR) に設定した場合SetWindowLongPtr、インデックス 0 を使用して DWORD_PTR サイズの値を格納することもできます。

ウィンドウごとに保存するデータの量に応じて、上記の方法を使用して直接保存するか、独自の構造体を割り当ててそれへのポインターを保存できます (ウィンドウが破棄されたときにデータを解放することを忘れないでください)。

SetPropウィンドウごとにデータを保存するもう 1 つの方法は、および関数を介してウィンドウ プロパティを使用するGetPropことです。これにより、1 つまたは複数のポインター サイズの名前/値のペアを保存できます。

于 2013-01-04T12:43:23.230 に答える
0

パーセンテージ変数を静的にしないでください。クラスの一部にして、ゲッター/セッターから読み書きする

于 2013-01-04T10:01:11.167 に答える