LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static HINSTANCE hInst;
HDC hDC;
PAINTSTRUCT ps;
RECT rc;
NOTIFYICONDATA iconData;
switch(uMsg)
{
case WM_COMMAND:
if (wParam == 1)//мои кнопки
{
MessageBox(hWnd,"Ну что ж, начнем...","",MB_OK);
}
if(wParam==2)
{
MessageBox(hWnd,"Закончили","",MB_OK);
/////////
}
break;
case WM_USER+5:
if(lParam==WM_LBUTTONUP)
{
ShowWindow(hWnd,SW_SHOW);
ShowWindow(hWnd,SW_RESTORE);
Shell_NotifyIcon(NIM_DELETE, &iconData);
}
if(lParam==WM_RBUTTONUP)
PostQuitMessage(0);
break;
case WM_PAINT:
hDC = BeginPaint(hWnd, &ps);
//////////
/////////
EndPaint(hWnd, &ps);
break;
case WM_CLOSE:
{
iconData.cbSize = sizeof(NOTIFYICONDATA);
iconData.hWnd = hWnd;
iconData.uID = 5;
iconData.uFlags = NIF_ICON |NIF_INFO ;
iconData.uCallbackMessage = WM_USER+5;
iconData.hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON1));
iconData.dwInfoFlags = NIIF_WARNING;
strcpy_s(iconData.szInfo,"† m@k$ †");
strcpy_s(iconData.szInfoTitle,"Автор");
Shell_NotifyIcon(NIM_ADD, &iconData);
}
ShowWindow(hWnd,SW_MINIMIZE);
break;
Помогите разобраться с tooltip(balloon)
2) Как сделать так, чтобы подсказка "выплывала" не сразу, а после нажатия например на кнопку "1".
Заранее спасибо за помощь!!!
Код:
Цитата:
iconData.uFlags = NIF_ICON |NIF_INFO ;
Забыли флаг NIF_MESSAGE для обработки сообщения WM_USER+5:
Код:
iconData.uFlags = NIF_ICON |NIF_INFO | NIF_MESSAGE;
А вот насчёт появления balloon'а по нажатию на кнопку дела обстоят намного сложнее. Вопрос: Какое приложение будет обрабатывать события клавиатуры? Ответ: Конечно же текущее Вопрос: А разве "наше" приложение является текущим? Ответ: Нет... не является...
Может на помощь придёт клавиатурный шпион? А может без него обойтись? Вас не устраивает, скажем обычный таймер?
а вот насчет кнопки я не понял. Кнопка в окне моей программы. Что, оно не является текущим?
Цитата:
Как сделать так, чтобы подсказка "выплывала" не сразу, а после нажатия например на кнопку "1"
Я подумал, что Вы говорите о "кнопке" клавиатуры. На эту мысль меня навлекло название кнопки - "1"- такое же как и у клавиши "1" Тогда всё элементарно...
В самом начале Вы не указываете флаг NIF_INFO в поле uFlags структуры NOTIFYICONDATA:
[LEFT]
Код:
iconData.uFlags = NIF_ICON | NIF_MESSAGE;
Затем в обработчике сообщения WM_COMMAND добавляем флаг NIF_INFO в поле uFlags, ну к примеру так:
Код:
case WM_COMMAND:
switch(wParam)
{
case 100://идентификатор кнопки
tray.uFlags=tray.uFlags | NIF_INFO;
Shell_NotifyIcon(NIM_MODIFY, &tray);//обновляем
return 0;
}
return 0;
switch(wParam)
{
case 100://идентификатор кнопки
tray.uFlags=tray.uFlags | NIF_INFO;
Shell_NotifyIcon(NIM_MODIFY, &tray);//обновляем
return 0;
}
return 0;
Теперь нажатие на кнопку приводит к отображению подсказки в виде balloon'а или tooltip'а
Вот и всё...