Добрый день.
Я пишу плагин с FireBreath. Небольшая проблема возникла из-за моих слабых знаний на С ++, см. Код ниже.Нестационарная ссылка на элемент Ошибка C2352
Я не могу понять, почему функция FB::PluginWindowWin::getBrowserHWND()
, которая возвращает HWND
не хотят работать HWND
для GetWindowRect(hWnd, &rect)
функции.
Компилятор подчеркивает FB
из FB::PluginWindowWin::getBrowserHWND()
и говорит мне, что «не статическая ссылка на элемент должен быть определен, а объект набора» (Это мой перевод, сообщение на русском, но я считаю, что еще есть один и тот же смысл)
Получил эту ошибку:
Error C2352 FB::PluginWindowWin::getBrowserHWND:illegal call of non-static member function
Код:
TestPlugin.cpp
#include "Win/PluginWindowWin.h"
#include "JSObject.h"
#include "variant_list.h"
#include "DOM/Document.h"
#include "global/config.h"
#include <Windows.h>
#include "TestPluginAPI.h"
///////My Functions////////
FB::variant PosTest()
{
RECT rect;
HWND hWnd;
hWnd = FB::PluginWindowWin::getBrowserHWND();
if(GetWindowRect(hWnd, &rect))
{
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
int left = rect.left;
return left;
}
}
TestPlugin.h
#include "Win/PluginWindowWin.h"
#include <string>
#include <sstream>
#include <boost/weak_ptr.hpp>
#include "JSAPIAuto.h"
#include "BrowserHost.h"
#include "TestPlugin.h"
#include <Windows.h>
/////Declarations/////
//Rect
BOOL WINAPI GetWindowRect(HWND hWnd, LPRECT lpRect);
//Pos Test
FB::variant PosTest();
Можете ли вы дать мне пример кода такого объекта? –
Я никогда не использовал Firebreath, поэтому я не смогу быть очень конкретным. Я думаю, вам нужно найти образец кода в документации Firebreath и следовать ему. Но, глядя на блог в http://colonelpanic.net/2010/11/firebreath-tips-drawing-on-windows/, кажется, что FB должен вызывать обработчики событий и передавать указатель на «PluginWindow», который вы затем может быть добавлен в 'PluginWindowWin' и вызывается' getBrowserHWND() '. Я думаю, вы должны написать класс, который расширяет «PluginCore». Если это так, вы можете вызвать 'this-> getWindow()' в одном из своих методов, чтобы получить 'PluginWindow'. Надеюсь, это поможет. –
Thx Nate, попробует возиться с ним. –