프로그램의 목적이 무엇인지 궁금하네요
혹시
TrayIcon을 하나등록해놓고..
아이콘이미지를 상황에 따라 바꾸려 하는것인가요?
그렇다면..
-지우고 -clear하고 -추가하고 -변경하고
위 과정을 반복하지 말고
1) 한번만 등록하고
2) 필요할때 그냥 Modify만 하면 아이콘 이미지를 바꿀수 있습니다.
void __fastcall TForm2::ChangeTrayIcon(TIcon *Icon)
{
NOTIFYICONDATA icondata;
memset(&icondata, 0x00, sizeof(icondata));
icondata.cbSize = sizeof(icondata);
icondata.hWnd = Handle;
icondata.uFlags = NIF_ICON;
icondata.hIcon = Icon->Handle;
Shell_NotifyIcon(NIM_MODIFY,&icondata);
}
참 그리고 제가 작성한 ClearTray(); 함수의 소스가 어디있나요?
여기 사이트에 있었남?
그럼..
도상곤 님이 쓰신 글 :
: 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);
: }
: 파일첨부하겠습니다
: 스크린샷첨부에요