как поместить иконку... например в StatusBar?
,,,
Вот выдержка из справки (сам не проверял).
Как добавить свою программу в трей
A: (SUnteXx)
#define MYWM_NOTIFYICON (WM_USER + 1)
Создаем (глобальную) функцию
BOOL TrayMessage (HWND hDlg, DWORD dwMessage, UINT uID, HICON hIcon, PSTR pszTip)
// systray icon
{
BOOL res;
NOTIFYICONDATA tnd;
tnd.cbSize = sizeof(NOTIFYICONDATA);
tnd.hWnd = hDlg;
tnd.uID = uID;
tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
tnd.uCallbackMessage = MYWM_NOTIFYICON; // Сообщение, которое пошлется при всяких там кликах на иконке...
tnd.hIcon = hIcon;
if (pszTip)
{
lstrcpyn(tnd.szTip, pszTip, sizeof(tnd.szTip));
}
else
{
tnd.szTip[0] = '\0';
}
res = Shell_NotifyIcon(dwMessage, &tnd);
return res;
}
А потом по ходу дела (то есть проги) делаем следующее:
Добавляем иконку:
TrayMessage(hWnd, NIM_ADD, 0, hIcon, szText);
Изменяем иконку:
TrayMessage(hWnd, NIM_MODIFY, 0, hIcon, szText);
Удаляем иконку:
TrayMessage(hWnd, NIM_DELETE, 0, 0, 0);
Параметры функции TrayMessage:
HWND hWnd; // указатель на окно
HICON hIcon; // указатель на иконку
char *szText; // указатель на текст для подсказки
Теперь ловим сообщение MYWM_NOTIFYICON, где lParam будет событием (WM_LBUTTONDOWN, к примеру...)а
имелось в виду не трей,
а StatusBar->Panels->Canvas
.это немного не то:
имелось в виду не трей,
а StatusBar->Panels->Canvas
Пардон, поспешил, посмотрим...
,,,
Вот так,
void __fastcall TFMainForm::StatusBarDrawPanel(TStatusBar *StatusBar,
TStatusPanel *Panel, const TRect &Rect)
{
if(Panel->Index == 1)
{
StatusBar1->Canvas->Draw(Rect.Left, Rect.Top,Image1->Picture->Bitmap);
if(!TreeView_modified)
StatusBar1->Canvas->Draw(Rect.Left, Rect.Top,Image2->Picture->Bitmap);
}
}