|
쌈개 님이 쓰신 글 :
: 흑.. API 시절에는 다 변경할 수 있어서 좋았건만..
:
:
:
: API에 보며는
: WM_CTLCOLOR 시리즈 메세지가 있자나여..
: 버튼, 스크롤바 등등등 리턴할때 브러쉬 넘겨주면 그 색으로 칠하자나여...
:
: 근데 그게 빌더에선 안되요..
: 첨엔 메세지맵에서 될 줄 알구서리.. -_-
:
: 예를 들어 버튼이라면
:
: BEGIN_MESSAGE_MAP
: MESSAGE_HANDLER(WM_CTLCOLORBTN, TWMCtlColorBtn, WMCtlColorBtn)
: END_MESSAGE_MAP(TForm)
:
: 이렇게 메세지 잡구
: SetTextColor(Message.ChildDC, RGB(255, 0, 0));
: hbr = CreateSolidBrush(RGB(255, 0, 0));
: Message.Result = (int)hbr;
: 이렇게 브러쉬를 리턴해 줘도 감감 무소식이네요...
:
:
: 이래 저래 한참을 서핑해본 결과 걔네들 버튼은 그게 안된다는투의 말을 봤네요...
: 과연 이게 안되는 건가요?
:
:
: 버튼의 색상... 페이지 컨트롤의 탭 제목 표시줄 색깔..
: 콤보박스의 화살표 색깔 등등 모두 바꿔야 되는데... 허허...
: 윈도우 테마 같은 거 구현할 길 없을까요?
:
: 꾸벅꾸벅.. 읽어 주셔서 감사합니다..
: 답신 기다릴께요
임펠리테리입니다.
이미 존재하는 클래스에 대해 메시지맵을 만들 방법이 없죠? 보여주신 메시지맵도, 폼에다 메시지맵을 건 것이지 버튼에 작용하는 것이 아닙니다. 메시지맵은 클래스를 정의할 수 있을 때만 사용가능합니다.
이미 존재하는 클래스에 대해서라면, GetWindowLong()과 SetWindowLong() 함수를 이용하여 윈도우프로시저를 바꿔치워야 합니다. (일종의 후킹입니다.) API에 익숙하신 것 같으시니 헬프를 보시면 별 어려움이 없으시겠네요.
그럼 이만...
|