ui/wpf/UIwrapper/UIwrapper/toolkit.cpp

Tue, 27 Jan 2015 09:59:32 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Tue, 27 Jan 2015 09:59:32 +0100
changeset 82
0cdb8089a29f
parent 81
5eb765a7a793
child 83
a38aec91bd66
permissions
-rw-r--r--

added event handler for menus (WPF)

// Dies ist die Haupt-DLL.

#include "stdafx.h"
#include <stdio.h>

#include "toolkit.h"

#using "UIcore.dll"


void* ObjectToPtr(Object ^obj) {
	GCHandle handle = GCHandle::Alloc(obj);
	IntPtr pointer = GCHandle::ToIntPtr(handle);
	return pointer.ToPointer();
}

Object^ PtrToObject(void *ptr) {
	GCHandle h = GCHandle::FromIntPtr(IntPtr(ptr));
	Object^ object = h.Target;
	h.Free();
	return object;
}

// EventWrapper

EventWrapper::EventWrapper(UIcallback callback, void *eventdata) {
	this->callback = callback;
	this->userdata = eventdata;
	action = gcnew Action<IntPtr>(this, &EventWrapper::Callback);
}

Action<IntPtr>^ EventWrapper::GetAction() {
	return action;
}

void EventWrapper::Callback(IntPtr uiobj) {
	if (callback) {
		callback(uiobj.ToPointer(), userdata);
	}
}

UI_EXPORT void __stdcall UIinit(char *appname) {
	UI::Application ^app = UI::Application::GetInstance();
	app->Name = gcnew String(appname);
}

UI_EXPORT void __stdcall UImain() {
	Thread ^thread = UI::Application::GetInstance()->Start();
	thread->Join();
}

UI_EXPORT void __stdcall UIshow(void *wptr) {
	UI::MainWindow ^window = (UI::MainWindow^)PtrToObject(wptr);
	window->ShowWindow();
}

mercurial