|
pyromania 님이 쓰신 글 :
: tray에 마우스가 오버되면 텍스트 메시지가 뜨잖아요.
:
: 이것을 마우스 오버가 되지 않아도 실행하고 싶을때 실행시킬 수 없을까요?
:
: 그리고 그 텍스트도 임의로 바꾸고 싶구요.
:
: 작업표시줄이 숨김으로 되어있어도 보여주고 싶거든요
:
: 작업표시줄이 잠깐 돌출해서 보여줘도 상관없고
:
: 그냥 돌출 안한상태에서 메시지만 보여져도 상관이 없는데요...
:
: 고수님들의 조언 부탁드립니다.
아래 내용을 보시고 응용하시면 될 것같네요.
/*
typedef struct _NOTIFYICONDATA { // nid
DWORD cbSize;
HWND hWnd;
UINT uID;
UINT uFlags;
UINT uCallbackMessage;
HICON hIcon;
char szTip[64];
} NOTIFYICONDATA, *PNOTIFYICONDATA;
*/
//먼저 아이콘의 메시지를 Windows에 등록
unsigned IconMsg = RegisterWindowMessage ("System Monitor By M.H. LIM") ;
//아이콘 트레이에 아이콘 추가
void __fastcall TForm1::AddTrayIcon ()
{
NOTIFYICONDATA iconData ;
memset(&iconData, 0, sizeof (iconData)) ;
iconData.cbSize = sizeof (iconData) ;
// 통지 메시지를 받을 윈도우의 핸들
iconData.hWnd = Handle ;
// 마우스가 아이콘 위에 왔을 때 표시할 팁
strncpy (iconData.szTip, "System Monitor", sizeof(iconData.szTip)) ;
// 트레이에 표시할 아이콘의 핸들
iconData.hIcon = Application->Icon->Handle ;
// 통지 메시지를 지정
iconData.uCallbackMessage = IconMsg ;
// iconData의 유효한 구성원들(콜백함수, 아이콘, 팁)
iconData.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP ;
// 아이콘 추가
Shell_NotifyIcon(NIM_ADD, &iconData) ;
}
//---------------------------------------------------------------------------
//아이콘 트레이에서 아이콘 제거
void __fastcall TForm1::RemoveTrayIcon ()
{
NOTIFYICONDATA iconData ;
memset (&iconData, 0, sizeof (iconData)) ;
iconData.cbSize = sizeof (iconData) ;
iconData.hWnd = Handle ;
Shell_NotifyIcon (NIM_DELETE, &iconData) ;
}
//---------------------------------------------------------------------------
// 통지 메시지를 처리
void __fastcall TForm1::WndProc(Messages::TMessage &Msg)
{
if (Msg.Msg == IconMsg)
{
switch(Msg.LParam)
{
case WM_LBUTTONDBLCLK:
Show();
return;
case WM_RBUTTONDOWN:
POINT pt;
GetCursorPos(&pt);
PopupMenu1->Popup(pt.x, pt.y);
return;
default:
TForm::WndProc(Msg);
return;
}
}
else switch(Msg.Msg)
{
//case WM_CLOSE:
// Hide();
// return;
case WM_SYSCOMMAND:
if(Msg.WParam==SC_CLOSE || Msg.WParam==SC_ICON)
{
Hide(); Msg.Result=0L; return;
}
}
TForm::WndProc(Msg);
}
//---------------------------------------------------------------------------
|