ㅡ,.ㅡ ..분명 트레이 아이콘을 등록했는데..사라졋당..헐.;;;
재부팅하면서 자동으로 트레이 아이콘을 등록하게끔 해놓았는데..이놈이 도대체 어딜갔단 말인다..ㅠㅠ
무한정 삽질을 할뻔했지만 회사 과장님으로 부터 정보를 받아 다행히 쉽게 해결할 수 있었다..ㅋㅋ
자..내용을 구구절절 쓰기는 귀찮으니.. 컨트롤 C + V 신공을 발휘하도록 하겠다~!
이야압!!!!~~
출처: http://blog.naver.com/ratmsma?Redirect=Log&logNo=40028805165
트레이 아이콘에 문제가 생길 경우, 예를 들어 익스플로어가 다운되어
재 시작을 될 때에는 익스플로어가 현재 트레이 아이콘에 등록되어
있는 모든 윈도우에게 보내주는 메시지는 “Taskbar Created"라는
메시지 입니다.
여러분이 그동안 살펴보았단 메세지와 다른 점은 WM_MOUSEMOVE 와
같은 상수값이 아니라, 문자열이라는 점인데, 이런식으로 문자열로 된
메세지는 실제로 있을 수 없습니다. 모든 메세지는 반드시 상수값을
가지고 있어야 합니다. 하지만, 단순한 상수 값으로 메세지를 표현하기에는
한계가 있기 때문에 특정 문자열로 부터 메세지 상수를 등록하는
방법을 사용할 수 있습니다. 물론, “Taskbar Created" 도 고유의 메세지
상수값을 윈도우로부터 얻을 수 있습니다.
이때 메시지를 등록하는 함수는 RegisterWindowMessage() 함수 입니다.
이 함수를 사용하여 반환되는 메시지 ID를 가지고 일반 메시지처럼 메시지
핸들러를 등록하여 사용하면 됩니다. 그리고 결과는 확인해 보고 싶으시면,
Ctrl+Alt+Del 을 눌러서 익스플로어(Explorer)를 ‘작업종료’ 시키시면 트레이
아이콘에서 몇몇 아이콘이 사라지는 효과(?)를 보실 수 있습니다.
만일 윈도우즈 NT 계열이라면(Windows 2000 포함) <그림 2>와 같이
작업 관리자를 띄워서 강제로 프로세스를 종료하면 됩니다.
. 예제 코드
// 메시지 등록 과정
UINT g_uShellRestart; g_uShellRestart = RegisterWindowsMessage(__Text(“TaskbarCreated”));
// Message Map 에서
ON_REGISTERED_MESSAGE(g_uShellRestart, OnTrayShow)
// 메시지를 처리합니다.
LRESULT CMyDlg::OnTrayShow(WPARAM wParam, LPARAM lParam)
{
// TrayIcon을 다시 보여줍니다. ShowTray는 Tray를 보여주는 함수입니다.
m_Tray.ShowTray();
//긍까, 메시지를 다시 보여주는 코드를 삽입하라는 말이죠..ㅎ
}
ShowTray()에는 아래와 같은 코드가 들어가야 되겠죠..NOTIFYICONDATA nid;
nid.cbSize = sizeof(nid);
nid.hWnd = m_hWnd;
nid.uID = IDR_MAINFRAME;
nid.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
nid.uCallbackMessage = WM_ICON_NOTIFY;
//이 부분이 중요 - 트레이 아이콘에서 이벤트 발생시 발생되는 메세지 정의하는 부분..
nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
strcpy(nid.szTip,"Test");
Shell_NotifyIcon(NIM_ADD,&nid);
SendMessage(WM_SETICON,(WPARAM)TRUE,(LPARAM)nid.hIcon);
//일단 아이콘 생성하기 전에 다이얼로그를 숨겨야 겠죠..^^
ShowWindow(SW_HIDE);
[출처] 트레이 아이콘(TrayIcon) 사라지는 버그 막기|작성자 헤더막스
[출처] 트레이 아이콘(TrayIcon) 사라지는 버그 막기|작성자 헤더막스
'Study > MFC' 카테고리의 다른 글
CtreeCtrl의 사용법!!! 쉽게 쉽게~ (0) | 2011.09.28 |
---|---|
프로그램 실행시 메인 다이얼로그 숨기기 (0) | 2011.09.28 |
mfc TextOut 배경 투명하게 쓰기.. (0) | 2011.09.28 |
유니코드와 멀티바이트에 따른 컨트롤 테마 변경 (0) | 2011.09.28 |
MFC에서 원하는 사이트 익스플로러창 띄우기~ (0) | 2011.09.28 |
댓글