7

Visual C++ でグラフィックスを使用するのは初めてです。色で塗りつぶされた長方形を作ろうとしています。これを修正するには助けが必要です...

RECT rect;
HDC hdc;
hdc=CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL);
rect.left=30;
rect.right=100;
rect.top=50;
rect.bottom=200;
FillRect(hdc,&rect,(HBRUSH)(RGB(40,151,151)));

エラーは次のとおりです。

ERROR: The variable 'rect' is being used without being initialized.

4

2 に答える 2

7

これは通常、エラーではなく警告です。この場合、それはスプリアスのようにも見えます。

次のように初期化すると、よりうまく機能する可能性があります。

HDC hdc=CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL);
RECT rect = {30, 50, 100, 200};
HBRUSH brush = CreateSolidBrush(RGB(50, 151, 151));

FillRect(hdc, &rect, brush);

DeleteObject(brush);

--の使用に注意してくださいCreateSolidBrush。色を HBRUSH にキャストすることはほとんど機能しないようです。

于 2013-04-19T17:52:17.550 に答える
3

次のコードが原因で、コードが失敗します。

(HBRUSH)(RGB(40,151,151))

HBRUSH意味のある方法でRGB カラーを にキャストすることはできません。を取得する唯一の方法HBRUSHは、システムに取得するように依頼することです。

そのため、その目的のために API 関数の 1 つを使用して実際のブラシを作成する必要があります。たとえば、CreateSolidBrush.

HBRUSH hBrush = CreateSolidBrush(RGB(40,151,151));

ブラシの使用が終了したら、 を呼び出しDeleteObjectてリソースをシステムに返します。

原則として、キャストを記述するたびに、コードを非常に疑わしいものと見なします。常にキャストなしでコードを書くように努めてください。

于 2013-04-19T18:27:30.540 に答える