⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.cpp

📁 浙江大学的悟空嵌入式系统模拟器
💻 CPP
字号:
// LCD.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include "LCD.h"
#include "LCD_Screen.h"
#include <wx/object.h>

extern "C" WXEXPORT const wxClassInfo *wxGetClassFirst(); 
const wxClassInfo *wxGetClassFirst() { 
  return wxClassInfo::GetFirst(); 
}


using LCD::LCD_Screen;

extern "C" {

	LCD_API size_t Wukong_Enum_Module(std::vector<Core::Module_Meta> &res)
	{
		res.clear();
		Core::Module_Manager::append_meta(res, "LCD_Screen", Core::Module_Manager::MT_GUIOBSERVER);
		Core::Module_Manager::append_meta(res, "Touchscreen", Core::Module_Manager::MT_GUIOBSERVER);
		Core::Module_Manager::append_meta(res, "UART_Screen", Core::Module_Manager::MT_GUIOBSERVER);
		return res.size();
	}


		
	LCD_API Core::Module * Wukong_Create_Module(const std::string & name)
	{
		if (name == "LCD_Screen")
		{
			Core::Module * module;
			module = (Core::Observer *)wxCreateDynamicObject(wxString("LCD_Screen"));

/*	wxNode *node;
	wxClassInfo::sm_classTable->BeginFind();
	while(node = wxClassInfo::sm_classTable->Next())
	{
		wxClassInfo *classInfo = (wxClassInfo *)node->Data();
		if( classInfo->IsKindOf(CLASSINFO(LCD_Screen))) //&& (classInfo != (& (Core::Observer::sm_classLCD_Screen))) )
		{
			module = (Core::Module *) classInfo->CreateObject();
		}
	}

*/

//			module = new LCD::LCD_Screen();
			module->on_create();
			return module;
		}

		if (name == "UART_Screen")
		{
			Core::Module * module;
			module = (Core::Observer *)wxCreateDynamicObject(wxString("UART_Screen"));

			return module;
		}
		return 0;

	}

	LCD_API bool Wukong_Destroy_Module(const std::string & name, Core::Module * module)
	{	
		assert(name == module->get_name());
		if (name == module->get_name())
		{
			module->on_destroy();
			delete module;
			return true;
		}
		else 
		{
			return false;
		}
	}

}



//WXDLL_ENTRY_FUNCTION();

#ifdef WIN32
BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
	case DLL_THREAD_ATTACH:
	case DLL_THREAD_DETACH:
	case DLL_PROCESS_DETACH:
		break;
	}
    return TRUE;
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -