2013-01-16 3 views
2

백그라운드에서 일부 작업을 수행하는 작은 응용 프로그램을 작성했습니다.C++ MFC 트레이에 응용 프로그램을 보내는 방법

사용자의주의가 필요 없기 때문에 응용 프로그램을 시스템 트레이에 보내고 누군가가 그것을 클릭하면 창이 다시 팝업되어야합니다.

문제는 필자가 원하는 모든 것을 수행하는 MFC 프로그램 (대화 상자)을 작성한 것입니다. 이제 트레이에 넣을 방법을 찾아야합니다.

유형 : MFC (대화 창) lnguage : C++ IDE : 비주얼 스튜디오 2012

당신은 내가이 작업을 수행 할 수있는 방법에 어떤 아이디어가 있습니까? 또는 당신은 어쩌면 좋은 튜토리얼이나 함수/내가 필요한 클래스를 알고 있습니까?

이미 codeprojects.com 및 google에서 검색했지만이 점에 대해서는별로 중요하지 않습니다. 덕분에 .

편집 1 :이 같은 노력

:

HWND hMainWindow = this->GetSafeHwnd(); 
HICON hProgramIcon = this->GetIcon(false); 
char szTip[16] = "Tracker"; 
nidTrayIcon.cbSize = sizeof(nidTrayIcon); 
nidTrayIcon.hIcon = hProgramIcon; 
nidTrayIcon.hWnd = hMainWindow; 
nidTrayIcon.uCallbackMessage = (WM_USER + 1); 
nidTrayIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; 
nidTrayIcon.uID = 0x0200; 
strcpy_s((char*)nidTrayIcon.szTip,16, szTip2); 
nidTrayIcon.szTip[strlen(szTip)] = '\0'; 
Shell_NotifyIcon(NIM_ADD, &nidTrayIcon); 

이 코드를 실행하면, 내 응용 프로그램 코드 "0x03으로"로 종료 (경로 찾을 수 없습니다 ...)

편집 2 :

this->ShowWindow(SW_HIDE); 

도 작동하지 않습니다. 같은 문제.

답변

1

당신은 NotifyIcon 클래스를 찾고 있습니다 : 단지 시스템 트레이에 정말 나쁜 UI 아이디어를 응용 프로그램입니다 추가하는 것을 http://alanbondo.wordpress.com/2008/06/22/creating-a-system-tray-app-with-c/

: 여기 http://msdn.microsoft.com/en-gb/library/system.windows.forms.notifyicon.aspx

을하고하는 것은 튜토리얼입니다. Microsoft는 Windows 95/98 일 동안 매우 인기가 있었으며 Microsoft는 모든 사람이 복사하여 붙여 넣은 작업 코드 예제를 유용하게 제공했습니다. 곧 우리는 물고기와 눈을 우리 시스템 트레이에서 수영했습니다. 그리고 트레이가 더 풍부 해지고 따라서 완전히 쓸모 없게되었습니다.

응용 프로그램이 사용자의주의를 필요로하지 않는 작업을 수행하는 경우 서비스로 만들거나 사용자가 작업 표시 줄에 대화 상자를 최소화하고 대화 상자에 진행률 표시 줄을 표시하게하십시오. 이렇게하면 작업 표시 줄 아이콘 위로 마우스를 가져 가면 사용자가 진행 상황을 확인할 수 있습니다.

유용한 시스템을 사용해보십시오. 이 아이콘이 네트워크 연결과 같은 사용자의 현재 작업에 영향을 줄 수있는 시스템 수준 활동을 전달할 경우에만 아이콘을 추가하십시오. 그렇지 않으면 시스템 트레이를 깔끔하게 정리하지 마십시오. 내 시스템 트레이에서 튀는 토끼를 보려고 내 관심을 필요로하는 일에서 눈을 떼고 싶지는 않습니다.

+1

을 이것은 관리 코드, MFC에 완전히 무관. – ildjarn