2013-04-19 19 views
7

Sono nuovo nell'utilizzo di Graphics in Visual C++. Sto solo cercando di fare un rettangolo pieno di un colore. Hai bisogno di aiuto per correggere questo ...Utilizzo di FillRect() in 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))); 

L'errore è:

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

+1

Davvero? Avrei pensato che avrebbe funzionato Sei sicuro che non ci sia un altro "rect" da qualche parte a cui questo si applica? –

+0

È un errore o un avviso? – deepmax

risposta

4

Questo sarà normalmente un avvertimento, non un errore. In questo caso, sembra anche spuria.

E potrebbe lavoro meglio se si inizializza esso qualcosa di simile:

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); 

Da notare l'uso del CreateSolidBrush - fusione di un colore a un HBRUSH sembra improbabile che funzioni.

+0

Grazie, ma non sta facendo il rettangolo specificato. –

+0

@shubhanksrivastava: Dovrebbe usare le stesse coordinate che hai specificato. Non posso fare molto se quelli sono sbagliati però. Sinceramente, le coordinate hard-coded sono quasi sempre sbagliate. –

+0

Anche sopra credo che intendessi CreateSolidBrush (RGB (50,151,151)); –

0

Il codice non riesce a causa di questo codice:

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

Non puoi lanciare un colore RGB per un HBRUSH in modo significativo. L'unico modo per ottenere un HBRUSH è chiedere al sistema di dartene uno.

Quindi, è necessario creare un pennello reale utilizzando una delle funzioni API a tale scopo. Ad esempio, CreateSolidBrush.

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

Quando avete finito con il pennello, chiamare DeleteObject a restituire le risorse al sistema.

Come regola generale, ogni volta che scrivi un cast, consideri il codice molto sospetto. Cerca sempre di scrivere codice senza calchi.