Добавление кнопки плагина к окну сообщения QIP. В этом примере узнаем, как можно создать кнопку плагина в окне сообщения программы QIP, а также добавить ей событие. Для этого будет использоваться плагин заготовка, необходимые действия описаны в виде алгоритма действий:
1. Добавить новую переменную с типом TAddBtnInfo, в определении класса TQipPlugin:
class TQipPlugin : public IQIPPlugin { public: ULONG __stdcall AddRef(); HRESULT __stdcall QueryInterface(REFIID riid, void** ppvObject); ULONG __stdcall Release(); TQipPlugin(IQIPPluginService* PluginService); ~TQipPlugin(); TPluginInfo* __stdcall GetPluginInfo(); void __stdcall OnQipMessage(TPluginMessage* PlugMsg); private: ULONG PlugCntr; IQIPPluginService * PlugServ; TPluginInfo PlugInfo; TAddBtnInfo PluginButton; };
2. Добавить к функции OnQipMessage обработку событий PM_PLUGIN_CAN_ADD_BTNS И PM_PLUGIN_MSG_BTN_CLICK:
case PM_PLUGIN_CAN_ADD_BTNS: PluginButton.BtnPNG = NULL; PluginButton.BtnHint = SysAllocString(L"Кнопка плагина"); PluginButton.BtnIcon = ::LoadIcon(NULL,IDI_INFORMATION); TPluginMessage retMsg; retMsg.Msg = PM_PLUGIN_ADD_BTN; retMsg.DllHandle = PlugInfo.DllHandle; retMsg.WParam = PtrToInt(&PluginButton); retMsg.LParam = NULL; retMsg.NParam = NULL; retMsg.Result = 0; PlugServ->OnPluginMessage ( &retMsg ); break; case PM_PLUGIN_MSG_BTN_CLICK: MessageBox(NULL,L"Нажатие на кнопку",L"MyQipPlugin",MB_OK|MB_ICONINFORMATION); break;
3. Добавить удаление используемых ресурсов в обработке событий PM_PLUGIN_QUIT и PM_PLUGIN_DISABLE:
case PM_PLUGIN_QUIT: case PM_PLUGIN_DISABLE: DestroyIcon(PluginButton.BtnIcon); SysFreeString(PluginButton.BtnHint); break;
Результат работы плагина: