수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1694107
  • Today | 458
  • Yesterday | 588

Programming/MFC2006/12/19 22:46

트레이 아이콘(TrayIcon) 사라지는 버그 막기

고수닷넷 - 디버깅전문가님


1. 요약


요즘 나오는 프로그램에서는 대부분 TrayIcon을 제공합니다.
단순히 프로그램 리스트(태스크 바)에 나오는 것보다는, TrayIcon이 사용자에게 보다 더 편리한 UI를 제공하기 때문입니다. 그런데, 익스플로어(인터넷 익스플로어가 아닙니다.)의 버그 때문에 <그림 1>과 같이 종종 TrayIcon이 Tray에서 사라지는 경우가 있습니다. 하지만, 몇몇의 프로그램은 사라지지 않고 계속 남아있는 경우도 볼 수 있습니다.

사용자 삽입 이미지

<그림 1 - 트레이 아이콘에서 사라지는 모습>


그럼 우리의 프로그램도 익스플로어와는 상관없이 계속 트레이에 있으려면 어떻개 해야할까요? 익스플로어는 자신이 죽었다가 새로 시작되는 경우 현재 보이는 모든 윈도우에게 멧세지를 보내주는데, 우리는 이 메시지를 등록하여 사용함으로써 트레이 아이콘이 사라지는 버그를 막을 수 있습니다.


2. 본문

트레이 아이콘에 문제가 생길 경우, 예를 들어 익스플로어가 다운되어 재 시작을 될 때에는 익스플로어가 현재 트레이 아이콘에 등록되어 있는 모든 윈도우에게 보내주는 메시지는 “Taskbar Created"라는 메시지 입니다.

여러분이 그동안 살펴보았단 메세지와 다른 점은 WM_MOUSEMOVE 와 같은 상수값이 아니라, 문자열이라는 점인데, 이런식으로 문자열로 된 메세지는 실제로 있을 수 없습니다. 모든 메세지는 반드시 상수값을 가지고 있어야 합니다. 하지만, 단순한 상수 값으로 메세지를 표현하기에는 한계가 있기 때문에 특정 문자열로 부터 메세지 상수를 등록하는 방법을 사용할 수 있습니다. 물론, “Taskbar Created" 도 고유의 메세지 상수값을 윈도우로부터 얻을 수 있습니다.

이때 메시지를 등록하는 함수는 RegisterWindowMessage() 함수 입니다. 이 함수를 사용하여 반환되는 메시지 ID를 가지고 일반 메시지처럼 메시지 핸들러를 등록하여 사용하면 됩니다. 그리고 결과는 확인해 보고 싶으시면, Ctrl+Alt+Del 을 눌러서 익스플로어(Explorer)를 ‘작업종료’ 시키시면 트레이 아이콘에서 몇몇 아이콘이 사라지는 효과(?)를 보실 수 있습니다.
만일 윈도우즈 NT 계열이라면(Windows 2000 포함) <그림 2>와 같이 작업 관리자를 띄워서 강제로 프로세스를 종료하면 됩니다.

사용자 삽입 이미지

<그림 2 - 작업 관리자>


그리고, 익스플로어를 다시 시작하기 위해서는 '파일|새 작업(실행...)' 를 선택하여 explorer 을 입력하시면 됩니다.

하지만, 우리가 만든 프로그램의 트레이 아이콘은 여전히 트레이에서 살아남는 강한 모습을 보여줄 것입니다.


3. 예제 코드

[// 메시지 등록 과정 

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();

} 


정리


제대로된 프로그램이라면 작은 기능을 제공하더라도 세세한 부분까지 신경써야 한다고 생각합니다. 비록 작은 기능이지만, 사용자가 혼란스러워하지 않도록 기능을 구현하는 프로그래머가 되었으면 좋겠네요~

"MFC" 카테고리의 다른 글
  • FlashWindow 함수를 사용하여 내 프로그램의 존재... (0)2006/12/27
  • 디렉터리 구조에 관한 실용적 고찰 (0)2006/12/19
  • 트레이 아이콘(TrayIcon) 사라지는 버그 막기 (0)2006/12/19
  • MFC DLL 간단 설명 (0)2006/12/19
  • 프로그램 내에서 한/영 전환하기 (0)2006/12/18
2006/12/19 22:46 2006/12/19 22:46
Posted by webdizen
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2521

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1 ... 720 721 722 723 724 725 726 727 728 ... 3009  Next»

RSS HanRSS
Blog Image
webdizen
이곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (3009)
Webdizen (141)
Life (6)
Diary (16)
Blog (9)
IDEA (2)
Travel (10)
Book (16)
Photo (7)
Movie (8)
Music (14)
Leisure Sports (10)
Funny (6)
Hardware (121)
Software (120)
Windows (5)
Unix & Linux (120)
Installation (5)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (804)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (2)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (4)
Network (66)
Web (79)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • 마주앙 스페셜
  • 예술대학
  • 시바스
  • File Icon
  • Gateway
  • 감정인식
  • 윈져 프리미엄
  • 프레임 워크
  • SQL Server 2005
  • 시스템 방어
  • JsUnit
  • 춘천캠퍼스
  • 네트워크 포트
  • 백록관
  • SQLXML
  • Run-Length
  • SyBase
  • 패스포드
  • Container
  • 객체 비지향

Recent Articles

  • 트위터(Twitter)의 시작!.
  • 청년 리더의 조건.
  • 애플의 타블렛 PC - 아이패드....
  • 미래의 인터페이스 - 육감 기....
  • 기초발성법 동영상 강좌.

Recent Comments

  • 학교 과제물중 쓰레드에 대하....
    장진혁 03/17
  • 관리자만 볼 수 있는 댓글입....
    비밀방문자 03/12
  • 상대방의 이야기를 열심히 경....
    DoNuts 03/03
  • Lots of students know techn....
    Bobbi35Shannon 02/25
  • 좋은글 잘 보고 갑니다..
    Und_hacker 01/08

Recent Trackbacks

  • printf,scanf를 이용한 형식....
    yundream의 프로그래밍 이야기 03/10
  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 2009
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007

Archive

  • 2010/02 (1)
  • 2010/01 (6)
  • 2009/12 (5)
  • 2009/09 (3)
  • 2009/08 (1)

Calendar

«   2010/03   »
일 월 화 수 목 금 토
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.