2014-05-21 9 views
0

시스템 트레이에 여러 아이콘을 배치하는 MFC/C++ 앱을 코딩하고 있습니다. (아이콘의 수는 사용자가 제어하며 사용자가 앱의 특정 기능에 따라 최대 10 개까지 도달 할 수 있습니다.)내 아이콘이 시스템 트레이에 추가되는 순서는 무엇입니까?

제 질문은 다음과 같습니다. 그 아이콘들은 트레이에 놓여 있습니까? 지금은 어떻게됩니까

내가 특정 순서로

Shell_NotifyIcon(NIM_ADD, &nid); 

를 호출 할 때, 아이콘은 실제 트레이에 표시되는 순서가 다른 것입니다.

+4

내가 잘못 입증 싶지만, 내가이 생각하지 않습니다 가능한. 왜 처음에는 10 개의 아이콘을 추가하고 싶습니까? 메뉴 나 다른 것이 더 이해가되지 않습니까? – Thomas

+0

@ 토마스 : 알겠습니다. 그건 분명히 내 질문에 대답. 고맙습니다. – c00000fd

+1

아이콘이 나타나는 순서를 제어 할 수 없습니다. –

답변

0

작업 트레이는 단지 ToolBar32 컨트롤입니다.

HWND hWnd = ::FindWindow(_T("Shell_TrayWnd"), NULL); 
if(hWnd) 
{ 
    hWnd = ::FindWindowEx(hWnd,NULL,_T("TrayNotifyWnd"), NULL); 
    if(hWnd) 
    { 
     hWnd = ::FindWindowEx(hWnd,NULL,_T("SysPager"), NULL); 
     if(hWnd) 
     {     
      hWnd = ::FindWindowEx(hWnd, NULL,_T("ToolbarWindow32"), NULL); 
     } 
    } 
} 

그런 다음이 전화를 할 수 있어야한다 : 당신은이 같은으로 핸들을 얻을 수 있습니다

::SendMessage(hWnd, TB_MOVEBUTTON, nFrom, nTo); 
+0

내 프로세스에없는 창에 실제로'TB_MOVEBUTTON'을 보낼 수 있습니까? – c00000fd

+2

언제든지 변경할 수있는 구현 세부 정보를 사용하고 있습니다. –

+0

@ c00000fd : yes. 특정 프로세스 주소 공간에 의존하는 포인터가 아닌 정수 매개 변수를 직접 매개 변수로 전달하기 때문에 예. –