예전에 제가 진행했던 허접 프로젝트중에서...
나니카(=무언가)를 모방해서 만들어보고자 한 적이 있었습니다.
채팅 기능과 플러그인 기능을 넣은 버전을 만들기 위한 목적이었는 데요.
(이하 그 것)
잠시 그 것에 대해서 설명을 해보자면은..
바탕화면에 두가지 캐릭터의 이미지가 나와서 여러가지 이야기를 하는 악세사리입니다.
폼을 숨기고서 해당 이미지의 그려질 부분만을 화면에 표시해주는 것을 구현하고 있었는데..
데브피아에서 있는 폼을 투명하게하는 예제들은 거의.. 폼 위에 있는 이미지 컨트롤도 투명하게 만듭니다.
따라서 제가 선택한 방법은... 뒤에 있는 배경화면을 가져와서 이미지가 그려질 부분을 제외한 곳에 뿌려주는 것입니다.
그래서 다른 프로그램이 그 것을 덮었다가 해제되었을때에.. 그 것을 새로 그려주어야 했습니다.
그 것이 다른 윈도우에 덮였다가 다시 모습을 들어내게되는 시점이 폼이 포커스를 얻는 시점이라 생각하고..
해당 이벤트로 코딩을 해놓았는 데.. 생각처럼.. 다른 프로그램에 가려졌다가 그 폼으로 포커스가 넘어왔을때에..
해당 이벤트가 발생하지 않더군요.
그래서 문의해본 결과로는.. 같은 프로그램이 동작하는 상황 안에서.. 여러 폼 중에서
해당 폼이 포커스가 들어왔을 경우만.. 그 이벤트가 발생한다고 하더군요.
그래서 무한 루프나 타이머를 이용해서 해본 결과로는.. 리소스를 많이 먹고.. 그림이 차근차근 그려지더군요 -_-aa
지금 생각에는.. 미리 메모리에 그릴 그림을 다 그린 후에.. 표시하는 거랑..
다이렉트X 를 사용하는 것으로.. 해결이 될 것 같기도 한데..
역시나.. 무한 루프라던지.. 타이머는.... 비효율적인 것 같아서요 -_-aa
여기에 관해서 사용할만한 API라던가 조언을 해주셨으면 합니다.
더 중대한 문제는 다음 문제에서 발생하는 데요..
두번째 문제는.. 나니카의 경우나 기타 악세사리의 경우를 보자면...
이미지의 공백부분을 클릭할 시에.. 클릭 이벤트가.. 해당 폼을 지나서...
그 뒤에 있는 다른 아이콘에 전달되는데요.
예를 들자면..
┏ 이미지 크기( 폼 영역) ━━━━━━┓
┃ (공백부분) ┃
┃ //보이는 부분///// ┃
┃ [아이콘] ////////////////////// ┃
┃ ///////////////// ┃
┗━━━━━━━━━━━━━━━━━┛
물론 사용자는.. 뒤에 있는 아이콘을 클릭하는 것이겠지만...
프로그램 입장에서는.. 자신에게 이벤트가 발생됩니다.. ;;
이때에.. 일일히.. 뒤에 있는 프로그램을 찾아서 메시지를 넘겨주도록..
코딩을 해야하는 걸까요..? -_-aa
예를 들어서 다음과 같은 경우에..
┏프로그램1━━━━━━┓
┃ ┃
┃ ┃
┃ ┃━프로그램2━┓
┃ ★ ┃ ┃
┗━━━━━━━━━━┛ ┃
┃ ┃
┗━━━━━━━━━┛
★ 지점을 클릭한다고 해서.. 프로그램2에 까지 클릭 이벤트가 넘어가진 않잔아요..??
그렇다면..제가 첫번째 질문하면서.. 예상한 해결방안이 아니라..
아예 폼을 해당 이미지의 보여지는 부분으로 일그러트려서 -_-aa
해당 이미지의 보여질 부분만이 폼의 영역이 되도록 조정해야되는 것일까요..??
구멍뚤린 폼이라던가.. 다각형 폼 등등은 들어본 기억이 있는 것 같기도 하지만 -_-;;
예를 들어서... 이미지가 소녀라면.. 소녀 형태로.. 폼을 재형성 시키는 예는
들어보지 못한 것 같은 데요.. -_-;;;
그럼 답변 부탁드리겠습니다.. ^^a
악세사리 공백부분을 클릭하는 이벤트 발생시 자신의 뒤쪽에 있는 윈도우 객체에 그 이벤트 값을 넘겨주는 식으로 코딩을 하면 될거 갔군요.
예를 들자면
if(isTransGif(gif)) {
behindeWindowObject = self.getBehindeWindowObject();
behindeWindowObject.setEvent(eventClick);
}
이런식이 될듯.-_-합니다.
[가상입니다.-_- 위에도 적었지만 전 윈도우 API나 MFC를 모릅니다.-_-;]
(그러고 보니 윈도우는 헝그리안 네이밍룰을 따르니까 저건 잘 못 짠거군요-_-, 저건 자바룰과 비슷 합니다.)
만약 바탕화면이라면 바탕화면도 하나의 window객체일테니 무리없이 이벤트가 넘어 갈듯합니다.-_-;
다각형 폼이 있다면 소녀 형태도 크게 잡으면 다각형폼이 될거 같습니다.
[외곽선을 최대한 간략화 하면 가능할겁니다.]
어차피 구분값얻어 내는건 Gif나 Png에서 투명부분의 값을 얻어내서 투명한 부분이면 폼에서 제외 색이 있으면 폼으로 생성..
이렇게 하면 될겁니다.-_-;
[윈도우 프로그래밍을 잘 모르니 상당히 힘들군요-_-;]