'Notifier'에 해당되는 글 1건

  1. 2007.03.29 작업표시줄 메시지 알림...



메신져 등의 프로그램에서는 등록한 사용자가 로그인을 하거나 메시지 등을 수신하게 되면 작업표시줄 위에 조그맣게 메시지가 출력된다.

첨부파일은 이런 기능을 간단하게 구현한것으로 단순하게 작업표시줄의 위치를 얻은 후에 타이머를 이용해서 윈도우를 출력시켜준다.

예전에 올렸던 TV알리미 를 만들 때 생각나서 후딱 만들었던 건데 샘플소스를 날려서 다시 만들어봤다.

만들다가 맘에 안드는 부분을 바꾸다보니 기본원리는 같지만 소스가 좀 수정되었다.
(기존 소스에서는 Sleep() 함수를 사용했었는데 이 함수를 쓰면 마우스 이벤트가 안먹히는 문제로 첨부파일에 있는 소스에서는 타이머를 3개 쓰는 방법으로 변경함...)

우선 사용한 변수 및 상수값은 아래와 같다.
#define SHOW_WND 0
#define SLEEP_WND 1
#define HIDE_WND 2

CRect rect;
int m_nWindowWidth;
int m_nWindowHeight;
int m_nWindowBottom;
int m_nWindowTop;

그리고 OnInitDialog() 함수를 통해서 출력할 다이얼로그의 크기와 출력 위치 등을 설정후에 바로 타이머를 작동 시킨다.



타이머는 nIDEvent 값에 따라 3가지 상태로 작동을 하는데 순서데로 메시지출력(아래->위), 정지, 메시지닫기(위->아래)이다...

단순하게 처음에 출력할 윈도우를 작업표시줄에 두었다가 메시지출력시에 MoveWindows() 함수를 이용해서 타이머시간 및 rect 값에 따라서 윈도우가 위로 올라온다.

그 이후에 역시 타이머를 이용해서 5초 동안 윈도우를 정지 시켜놓고 이후에 출력의 반대과정을 거쳐서 윈도우를 아래로 내린다.



제작시에 프로젝트를 다이얼로그 기반으로 만든 후에, 리소스에서 다이얼로그를 하나 추가시켜서 클래스와 연결해서 사용했다.
사용하는측에서는 해당 다이얼로그 변수를 하나 만들고 그냥 DoModal()로 다이얼로그를 띄워줬다.
따로 클래스로 하나 빼서 쓰기 쉽게 만들고 싶지만 실력이 안된다;;;
참고자료 2번의 자료를 받으면 프로젝트에 가져다 쓰기 쉽게 잘 만들어졌다...
공부할 때는 몰라도 쓸때는 이미 검증된것 가져다 쓰는게 최고인것 같다 -_-


참고자료
1. 작업표시줄 영역얻기( jiniya.net )
2. 코드프로젝트( Taskbar Notification dialog )

(사용언어 및 제작툴 : MFC / VS2005)
Posted by Gungume
,