Добавление кнопки плагина к окну сообщения 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;
Результат работы плагина:
