|
bool __fastcall TMainForm::TrayMessage(DWORD dwMessage)
{
NOTIFYICONDATA NCond;
PSTR StrHint;
StrHint = "Hint";
NCond.cbSize = sizeof(NOTIFYICONDATA);
NCond.hWnd = Handle;
NCond.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
NCond.uCallbackMessage = MYWM_NOTIFY;
if(dwMessage == NIM_MODIFY)
{
NCond.hIcon = Image_Tray->Picture->Icon->Handle;
lstrcpyn(NCond.szTip, StrHint, sizeof(NCond.szTip));
}
else
{
NCond.hIcon = NULL;
NCond.szTip[0] = '\0';
}
return (Shell_NotifyIcon(dwMessage, &NCond));
}
제가 트레이를 조종할때 쓰는 소스입니다
이렇게 해놓고
TrayMessage(NIM_ADD);
TrayMessage(NIM_MODIFY);
이런식으로 추가를하면 추가가 되는데요
DELETE는 방금 소스바로아래에 넣었을경우에는
무지잘됩니다
근데 다른함수에서 프로세서를 감지할경우 꺼버리게하고
count를 증가시켜서 6부터는 다른이미지를 트레이에 입력하고자
아래와같이 입력을 해봤습니다만 제일첨에생성한 트레이는 안사라지네요;
count++;
if(count<=5){
Image_Tray->Picture->Icon->LoadFromFile(ExeName+"icon\\shield_green.ico");
TrayMessage(NIM_DELETE);
ClearTray();//장성호님의 소스
TrayMessage(NIM_ADD);
TrayMessage(NIM_MODIFY);
}
else if(count<=10){
Image_Tray->Picture->Icon->LoadFromFile(ExeName+"icon\\shield_yellow.ico");
TrayMessage(NIM_DELETE);
ClearTray();//장성호님의 소스
TrayMessage(NIM_ADD);
TrayMessage(NIM_MODIFY);
}
else{
Image_Tray->Picture->Icon->LoadFromFile(ExeName+"icon\\shield_red.ico");
TrayMessage(NIM_DELETE);
ClearTray();//장성호님의 소스
TrayMessage(NIM_ADD);
TrayMessage(NIM_MODIFY);
}
파일첨부하겠습니다
스크린샷첨부에요
|