美好的一天。
我正在寫一個FireBreath的插件。微小的問題是由於我的C++知識欠佳而出現的,請參閱下面的代碼。會員的非靜態鏈接錯誤C2352
我不明白,爲什麼功能FB::PluginWindowWin::getBrowserHWND()
,返回HWND
不想爲HWND
工作爲GetWindowRect(hWnd, &rect)
功能。
編譯器從FB::PluginWindowWin::getBrowserHWND()
強調FB
並告訴我, 「成員在非靜態鏈接必須指定而設置的對象」(這是我的翻譯,消息是俄羅斯,但我相信它仍然得到了同樣的意思)
得到這個錯誤:
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();
你能不能給我這樣的對象的示例代碼? – 2013-03-26 18:37:33
我從來沒有使用Firebreath,所以我不能夠非常具體。我想你需要在Firebreath文檔中找到一些示例代碼並遵循它。但是在http://colonelpanic.net/2010/11/firebreath-tips-drawing-on-windows/看一個博客,看起來FB應該調用你的事件處理程序並傳遞一個指向'PluginWindow'的指針,你然後可以投射到'PluginWindowWin'並調用'getBrowserHWND()'。我想你應該寫一個擴展'PluginCore'的類。如果是這樣,你可以在它的一個方法中調用'this-> getWindow()'來獲得'PluginWindow'。希望有所幫助。 – 2013-03-26 19:49:39
Thx Nate,會試圖搞砸它。 – 2013-03-26 20:58:33