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

📄 plugin.cpp

📁 著名的任天堂FC游戏机模拟器VirtuaNes 085版的源码!
💻 CPP
字号:
//
// Language plugin support
//
#include "VirtuaNESres.h"

#include "Pathlib.h"
#include "DebugOut.h"

#include "Plugin.h"

typedef	INT	(__cdecl *GETVLPVERSION)();
typedef	void	(__cdecl *GETVLPLANGUAGE)( LPSTR );
typedef LCID	(__cdecl *GETVLPLOCALEID)();

INT	CPlugin::m_PluginID = 0;
INT	CPlugin::m_PluginNum = 0;
CPlugin::PLUGIN	CPlugin::m_Plugin[PLUGIN_MAX];

HINSTANCE CPlugin::LoadPlugin()
{
	return	LoadPluginID( m_PluginID );
}

HINSTANCE CPlugin::LoadPluginID( INT nID )
{
	return ::LoadLibrary( m_Plugin[nID].Path );
}

BOOL	CPlugin::FindPlugin( LPCSTR lpModulePath )
{
	m_PluginNum = 0;

	string	Path = CPathlib::MakePath( lpModulePath, "*.vlp" );

	WIN32_FIND_DATA	find;
	HANDLE hFind = ::FindFirstFile( Path.c_str(), &find );
	if( hFind == INVALID_HANDLE_VALUE )
		return	FALSE;

	HINSTANCE	hDLL;
	GETVLPVERSION	GetVlpVersion = NULL;
	GETVLPLANGUAGE	GetVlpLanguage = NULL;
	GETVLPLOCALEID	GetVlpLocaleID = NULL;

	BOOL	bFind = TRUE;
	while( bFind ) {
		if( (hDLL = ::LoadLibrary( find.cFileName )) ) {
			GetVlpVersion  = (GETVLPVERSION) ::GetProcAddress( hDLL, "GetVlpVersion" );
			GetVlpLanguage = (GETVLPLANGUAGE)::GetProcAddress( hDLL, "GetVlpLanguage" );
			GetVlpLocaleID = (GETVLPLOCALEID)::GetProcAddress( hDLL, "GetVlpLocaleID" );

			if( !(!GetVlpVersion || !GetVlpLanguage || !GetVlpLocaleID) ) {
				INT	ver = GetVlpVersion();

				if( ver >= VIRTUANES_PLUGIN_VERSION ) {
					m_Plugin[m_PluginNum].LocaleID = GetVlpLocaleID();
					string	Path = CPathlib::MakePath( lpModulePath, find.cFileName );
					::strcpy( m_Plugin[m_PluginNum].Path, Path.c_str() );
					GetVlpLanguage( m_Plugin[m_PluginNum].Language );
					m_PluginNum++;
				}
			}

			::FreeLibrary( hDLL );
		}

		bFind = ::FindNextFile( hFind, &find );

		if( m_PluginNum >= PLUGIN_MAX )
			break;
	}

	::FindClose( hFind );

	LCID	lcid = ::GetUserDefaultLCID();
	for( INT no = 0; no < m_PluginNum; no++ ) {
		if( m_Plugin[no].LocaleID == lcid ) {
			m_PluginID = no;
			return	TRUE;
		}
	}

	return	TRUE;
}

⌨️ 快捷键说明

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