삽질하는플머

'탐구생활/Others'에 해당되는 글 6건

  1. 리치에디트 배경에 그림 넣어보기 2

리치에디트 배경에 그림 넣어보기

탐구생활/Others
델마당의 질답란에서 프레야님의 질문을 보고 예전에 북마크한 글이 떠올랐다.
http://www.webdizen.net/blog/2738?category=95
리치에디트 배경에 그림을 넣는 방법이 소개된 곳인데... 역시 델마당의 질답란은 아이디어의 보고이다.

RichEd20.dll 이 로드된 상태에서 해당 컨트롤에 WS_EX_TRANSPARENT 를 설정하면 WM_ERASEBKGND 메시지에서 배경을 처리할 수 있다는 이야기. 시키는대로 테스트 해 봤더니 스크롤바가 생겨나는 시점에서 NC영역이 그려지지 않는 문제가 있다. 배경을 다 그린 뒤 WM_NCPAINT 메시지를 한번 더 때려주면 일단은 해결되지만 맘에 안들어... 

워낙 극성스럽게 NC영역을 그려대는 CoolSB를 쓰면 이 문제가 발생하지 않는다. 깜박임이 없는 배경그리기도 가능. 역시 좋은 물건이다.



TRichEdit 는 TCustomMemo 에서 상속받은 물건이다. 따라서 TEdit, TMemo 를 대체하는 것도 가능하다.
WM_ERASEBKGND에서 전달받은 DC를 인자로 다시 부모윈도에 WM_ERASEBKGND를 던지면 쓸만한 투명에디트도 만들 수 있겠다.

아무튼 CoolSB 는 NC영역을 갖고놀아보려는 사람들에게는 보물같은 자료.


애석하게도... CoolSB_Detours 를 흉내낸 이 어플은 윈도 7에서 제대로 동작하지 않는다. 원본은 잘 돌아가는 걸 보니 아직 눈치채지 못한 다른부분이 있는 듯 한데... 구덩이를 잘못팠나...


-----------

2010.6.25

NC영역을 포함한 윈도의 DC를 얻어낼 때 사용한 GetDCEx 가 윈도 7과 XP가 다르게 동작하는 문제가 있었다. 그냥 GetWindowDC를 사용하도록 수정. 이제 윈도 7에서도 제대로 표시된다.