HWND   hTray   =   FindWindow(TEXT( "Shell_TrayWnd "),   NULL); 
if(hTray   ==   NULL) 
break; 
hTray   =   FindWindowEx(hTray,   NULL,   TEXT( "TrayNotifyWnd "),   NULL); 
if(hTray   ==   NULL) 
break; 
hTray   =   FindWindowEx(hTray,   NULL,   TEXT( "SysPager "),   NULL); 
if(hTray   ==   NULL) 
break; 
hTray   =   FindWindowEx(hTray,   NULL,   TEXT( "ToolbarWindow32 "),   NULL); 
if(hTray   ==   NULL) 
break; 
iNum   =   SendMessage(hTray,   TB_BUTTONCOUNT,   NULL,   NULL);     //获取任务栏上图标个数 
for   (i   =   0;   i   <   iNum;   i++) 
SendMessage(hTray,   TB_HIDEBUTTON,   i,   TRUE); \
我用这个办法可以隐藏图标,但是留下了一片空白,只有在再次加入或删除图标后才能正常,查以前的帖子,发现有人说
try   SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,   0,   "Environment ")   etc.
可以解决问题,但是我使用后没有效果,不知道是使用方法的问题还是别的原因,我是2000系统,如果可以的话,详细一点.p.s:折衷的办法是NOTIFYICONDATA nid2;
nid2.cbSize = sizeof(NOTIFYICONDATA); 
nid2.hWnd = this->m_hWnd; 
nid2.uID = IDR_MAINFRAME+1; 
strcpy(nid2.szTip, "update"); //提示 
Shell_NotifyIcon(NIM_ADD, &nid2);
Shell_NotifyIcon(NIM_DELETE, &nid2);
但我总觉得应该有更正确的办法.

解决方案 »

  1.   

    这样就可以了
    ::SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,0);
      

  2.   


    我试过才给你说的
    你原来得最后一个参数是"Environment",我测试过的,最后一个参数是0
      

  3.   

    我试过才给你说的 
    你原来得最后一个参数是"Environment",我在我的xp系统测试过的,没有效果
    我发的这个,最后一个参数是0,我在我的xp系统测试过的,是可以的
      

  4.   

    我装了个XP进行了试验,确实在XP下::SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,0);是有效的。那么现在问题就明确了,在2000下怎么实现这个功能呢。另外说下,hTray  =  FindWindowEx(hTray,  NULL,  TEXT( "SysPager "),  NULL); 这一步在2000下是跳过得,不知道是不是有关系。
      

  5.   

    我的折衷办法就是类似于此,但是我总觉得这不是最好的办法,应该有类似的1个message可以完成这个功能