2011-04-06 4 views
0

일부 단추 컨트롤을 사용하여 대화 상자 창을 만들고 있습니다. 단추를 개별적으로 색칠하고 싶습니다. 나는 내가 사용해야한다고 생각하는 것을 찾았고 발견했다, WM_CTLCOLORBTN Message.브러시, Win32 C++ 핸들을 얻는 방법

반환 값은 "브러쉬 핸들"이어야합니다. 나는 붓을 만들 수 있습니다

이 같은 예를 들어 :

HBRUSH blueBrush=CreateSolidBrush(RGB(0,255,0)); 

하지만 내가 어떻게이 브러시 핸들을 반환합니까?

편집 : 내 메시지 처리 기능은

LRESULT CALLBACK ClientDlgProc(...) 

로 정의하고 내가 blueBrush를 반환하려고하면이 오류 얻을 :

오류 C2440를 '반환'에 'HBRUSH'에서 변환 할 수 없습니다를 'LRESULT'

+0

누군가 내 버튼을 채우는 더 좋은 방법을 알고 있다면 알려 주시기 바랍니다. – Moberg

+0

아래 답변은 정확하지만 여기에 누출이 있습니다. HBRUSH를 대화 상자의 수명 동안 어딘가에 저장하고 나중에 DestroyObject()를 저장해야합니다. 일반적으로 WM_INITDIALOG에서 생성되고 WM_DESTROY에서 삭제됩니다. – ymett

+0

나는 아직까지 그렇게까지 얻지 못했다. ^^ ' – Moberg

답변

2

CreateSolidBrush가 반환하는 값은 핸들입니다 (HBRUSH의 H는 'handle'을 의미합니다).

+0

오. 내 진짜 질문은 LRESULT로 반환하는 방법, 원래의 질문에 편집 참조하십시오 같아요. – Moberg

+0

그럴 경우 간단한 캐스트가 트릭을 수행해야합니다. return (LRESULT) blueBrush; –

+0

고마워, 작동, 버튼이 녹색으로 변한다. 그러나 테두리가없고, 텍스트가 보이지 않는다. Doh :( – Moberg

0

HBRUSH은 브러시 핸들입니다. blueBrush을 반환하십시오.

관련 문제