2013-04-19 1 views
7

Visual C++에서 그래픽을 처음 사용했습니다. 나는 단지 색깔로 채워진 직사각형을 만들려고 노력하고있다. 오류가 ...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

이 일반적으로 경고가 아닌 오류가 될 것입니다. 이 경우에는 가짜 인 것처럼 보입니다. 당신이 그것을 같은 초기화하면 더 나은 그것은 수도 작업

: CreateSolidBrush의 사용에 유의 마십시오

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

을 - HBRUSH에 색을 주조가 작동하지 않을 것 같다.

+0

고마워요,하지만 지정된 사각형을 만들고 있지 않습니다. –

+0

@shubhanksrivastava : 지정한 좌표와 일치해야합니다. 비록 그 사람들이 잘못하면 나는 많은 것을 할 수 없다. 사실, 하드 코딩 된 좌표는 거의 항상 잘못된 것입니다. –

+0

위의 내용을 보면 CreateSolidBrush (RGB (50,151,151))를 의미하는 것 같습니다. –

0

코드는 때문에이 코드의 실패

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

당신은 어떤 의미있는 방법에 HBRUSH에 RGB 색상을 캐스팅 할 수 없습니다. HBRUSH을 얻을 수있는 유일한 방법은 시스템에 문의하십시오.

그래서, 그 목적을 위해 API 함수 중 하나를 사용하여 실제 브러쉬를 만들어야합니다. 예 : CreateSolidBrush.

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

브러시 작업을 마치면 DeleteObject으로 전화하여 시스템에 자원을 반환하십시오.

일반적으로 캐스트를 작성할 때마다 코드를 매우 의심스러운 것으로 간주합니다. 캐스트없이 코드를 작성하도록 항상 노력하십시오.