|
임프님.. 답변 감사합니다.
참 여담인데.. 임프가 임펠리테리인가염?
저두 임펠리테리 무지 조아하는뎅.. 씬쓔빈곤이나.. 썸웨어오버더렌보우두 멋있구..
아이오브허리케인이나 온엔온도.. -_-;;
잠시 다른 곳으로 새었네요...
에헴.. 일단 알려주신대로...
메세지 후킹을 시도해 보았습니다만.. 결과는 -_- 묵묵..
현재 리스트박스 옆에 나오는 스크롤바가 보기 시러서
색상을 조금 바꾸려고 합니다.
API 시절에는 WM_CTLCOLORSCROLLBAR라는 게 있어서 그려질때 스크롤바의 부모에게로 날라가져.
그럼 이거 가로채서 칠할 브러쉬 맹근다음 리턴하면 되었는뎅.. -_-;;
다음에 소스를 같이 올립니다.(참고로 SBListBox1는 TListBox를 상속에서 오너드로하는 겁니다.)
말씀하신데로 리스트박스의 메세지프로시져를 가로채서 테스트해본 결과
아예 들어오지를 않는군요.
혹시 어디가 잘못 된 건지 좀 봐주시구요..
안된다면.. 흑흑..
혹시 스크롤바나 버튼 그리고 콤보박스의 화살표 등등의 색깔을 바꾸는 방법 아시면 알려주심이.
그냥 쉽게 말씀드리자면 윈도우 테마 제작하는 거랑 같아요..
근데 왜 안되는겨.. -_-;;;
그럼...
신슈빈곤.. 신슈빈곤... (^^)/~
LRESULT CALLBACK NewWindowProc(HWND hWnd, UINT msg, WPARAM w,
LPARAM l)
{
if (msg == WM_CTLCOLORSTATIC)
ShowMessage("The vertical scrollbar is scrolling!");
return CallWindowProc((FARPROC)Form1->OldWindowProc, hWnd, msg, w, l);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
OldWindowProc = (WNDPROC)SetWindowLong(SBListBox1->Handle, GWL_WNDPROC, (long)NewWindowProc);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
SetWindowLong(SBListBox1->Handle, GWL_WNDPROC, (long)OldWindowProc);
}
//---------------------------------------------------------------------------
|