1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
#include <wx/wx.h>
#include <pluginapi.h> //this is necessary, PLUGININFO structure, other related to load/unload plugin code
PLUGINLINK *pluginLink;
class wxPluginForEvilCore: public wxApp //this is like on default wxwidgets application
{
virtual bool OnInit();
};
IMPLEMENT_APP_NO_MAIN(wxPluginForEvilCore) //main() does not needed, we will create instance by hand later
/*HINSTANCE hInst;
BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved ) //default dll entry point
{
hInst = hinstDLL;
return TRUE;
}*/ //windows specific, does not needed ?
PLUGININFO pluginInfo =
{
sizeof(PLUGININFO), //size of structure
(wchar_t*)L"example plugin", //name
0, //description
0, //author
0, //author email
0x00010101 //version 0.1.1.1
};
extern "C" PLUGININFO* SetPluginInfo()
{
return &pluginInfo; //necessary, our plugin info for core can recognize us
}
extern "C" int Load(PLUGINLINK *link) //basic initialisation, registering new functions, do other basic initialisation, you can create infinite loop, or other code which use many time here, only fast basic initialisation
{
pluginLink = link; //necessary
//some basic initialisation code
return 0; //all ok, retrun 0
}
extern "C" int OnModulesLoaded() //load main code from here, all services from other plugins must be avaible here
{
wxApp::SetInstance(new wxPluginForEvilCore()); //create instance, i think here is right place, not in load where we do only basic initialisation
// wxEntry(GetModuleHandle(NULL),NULL,NULL,SW_SHOW); //here we need to get module handle somehow, commented string is for windows only
return 0;
}
extern "C" int Unload()
{
//do some cleanup on exit
return 0;
}
|