2013-04-19 13 views
7

Visual C++でGraphicsを初めて使用しました。私はちょうど色でいっぱいの長方形を作ろうとしています。これを修正するために助けを必要と...C++でFillRect()を使用する

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.

+1

本当に?私はそれがうまくいくと思っていたでしょう。これに当てはまる別の「rect」がないと確信していますか? –

+0

これはエラーですか、警告ですか? – deepmax

答えて

4

これは通常、警告、エラーではなくなります。この場合、それはまた偽りのように見える。

それは、より良いかもしれない仕事は、あなたがそれをのようなものを初期化場合:

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に色をキャスト働く可能性は低いようです。

+0

ありがとう、しかし、指定された矩形を作成していません。 –

+0

@shubhanksrivastava:あなたが指定したのと同じ座標を使うべきです。しかし、もしそれらが間違っていると私はあまりできない。確かに、ハードコーディングされた座標はほとんど常に間違っています。 –

+0

また、私はCreateSolidBrush(RGB(50,151,151))を意味すると思います。 –

0

あなたのコードがあるため、このコードで失敗:

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

あなたはどんな意味のある方法でHBRUSHにRGBカラーをキャストすることはできません。 HBRUSHを入手する唯一の方法は、あなたにシステムを提供することです。

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

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

、システムにリソースを返すためにDeleteObjectを呼び出します。

一般的に、キャストを書くたびに、そのコードを非常に疑わしいものとみなします。常にキャストなしでコードを書くように努めます。

関連する問題