summaryrefslogtreecommitdiff
path: root/plugins/example/main.cpp
blob: edeb9e3fa0dd97adc17c00a69dd1db8338062401 (plain)
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
60
61
62
63
64

#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

bool wxPluginForEvilCore::OnInit()
{
    return true;
}


/*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* set_plugin_info()
{
	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 on_modules_loaded() //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
    wxEntryCleanup(); //call it before, or after other cleanup
	return 0;
}