C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 108 - Развиваем SysTray / MFC шаг за шагом / Visual C++

Шаг 108 - Развиваем SysTray

Вы обращали внимание на то, что у всех икон в SysTray существует подсказка ? Для её существования необходимо в структуру заполнить поле посказки, правильно выставить флаги.

void CTestSystrayDlg::OnButton1() 
{
	NOTIFYICONDATA nf;
	nf.hWnd = m_hWnd;
	nf.uID = NULL;
	
	nf.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
	nf.uCallbackMessage = WM_MYICONNOTIFY;
	strcpy(nf.szTip,"Hello Systray");

	HICON hIcon;
	hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	nf.hIcon = hIcon;
	Shell_NotifyIcon(NIM_ADD,&nf);
}
Я хочу и получать сообщения в окно при двойном щелчке на кнопке. Для этого необходимо завести свое сообщение.
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by TestSystray.rc
//
........
#define IDC_BUTTON2                     1001

#define WM_MYICONNOTIFY				    WM_USER+1

// Next default values for new objects
// 
.......
Передать его в структуру.
nf.uCallbackMessage = WM_MYICONNOTIFY;
Описать реакцию на него в карте сообщений
BEGIN_MESSAGE_MAP(CTestSystrayDlg, CDialog)
	......
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_MYICONNOTIFY,OnIcon)
END_MESSAGE_MAP()
Описать функцию, которая будет вызвана в ответ на это сообщение
/////////////////////////////////////////////////
// CTestSystrayDlg dialog

class CTestSystrayDlg : public CDialog
{
// Construction
public:
	void OnIcon(WPARAM wp, LPARAM lp);
	......
};

И её реализацию проверим LPARAM на тип сообщений:

void CTestSystrayDlg::OnIcon(WPARAM wp, LPARAM lp)
{
	if (lp==515) AfxMessageBox("Click");
}

Код этой функции будет вызываться на любое сообщение. А вот 512 - это двойной щелчок.

Собирайте приложение. Создайте иконку в SysTray щелкните на неё два раза и ваше диалоговое окно среагирует.


Загрузить проект | | |
Автор Каев Артем.
[AD]