문제

나는 관습을 만들려고 노력하고있다 CStatic 제어 vc++ 그리고 몇 가지 문제가 있습니다.

나는 원래 a를 사용하고 있었다 CStatic 제어 SS_BLACKRECT 스타일. 이것은 주문시 제어에 대한 이미지를 표시해야 할 때까지 상황에 좋았습니다.

나는 실제로 이미지를 컨트롤에 그리는 모든 물류를 알아 냈지만 다른 것들을 방해하지 않고 어떻게하는지 알 수없는 것 같습니다.

기본적으로 나는 컨트롤이 정상으로 작동하기를 원합니다. CStatic 이랑 SS_BLACKRECT 대부분의 시간 스타일.

그런 다음 대신 컨트롤 위에 이미지를 그릴 수있는 메소드를 호출 할 수 있어야합니다. 나는 그림을 사용하고있다 GDI 그리고 둘 다 시도했습니다 OnPaint() 방법과 DrawItem() 성공하지 못한 방법. 나는 그것을 끌어들일 수있다 OnPaint() 그러나 내가 기지를 호출 할 때 CStatic::OnPaint() 내 이미지 위에 그려집니다.

나는 그것이 평범한 것처럼 그리도록 허용 할 수 있어야하지만 이미지를 맨 위에 던져 버려야합니다. 내가 그것을 시도했을 때 DrawItem() 방법은 분명히 문제가 발생했기 때문에 문제가 발생했습니다. SS_BLACKRECT 스타일이지만 내가 예상처럼 제어를 그릴 때까지 기다리고 있습니다.

내가 찾고 있다고 생각하는 것은 세 가지 중 하나라고 생각합니다. 사용하는 방법 GDI 기지 후 OnPaint() 메소드 마감. 컨트롤이 기본값을 그리는 방법 SS_BLACKRECT 스타일과 그때 OWNERDRAW 나중에 이미지. 또는 도면을 모방하는 코드 SS_BLACKRECT.

마지막은 가장 쉬운 일이지만 나는 CStatic 기본 grawitem과 같은 제어.

도움이 되었습니까?

해결책

전화 해보세요 Default() 당신의 OnPaint() 매니저.

그런 다음 이미지를 그리는 지 여부에 따라 표준 상단을 그릴 수 있습니다. CStatic 제어.

다른 팁

몇 가지 아이디어가 있습니다.

만약에 CStatic::OnPaint() 이미지를 그려서 먼저 호출하고 나중에 이미지를 그립니다.

그렇지 않으면 SS_BLACKRECT에서 내가 보지 못한 곳에서는 단순히 전화를 걸어서 복제 할 수 있어야합니다. CDC::FillSolidRect() 획득 한 직사각형을 통과합니다 GetClientRect() 그리고 반환 된 색상을 사용합니다 GetSysColor(COLOR_WINDOWFRAME)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top