From 4283465f23806ae4b8ad7344949f55698c16a203 Mon Sep 17 00:00:00 2001 From: watcherhd Date: Thu, 21 Apr 2011 20:19:47 +0000 Subject: MTextControl - text render API for different plugins git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@12 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- mTextControl/src/main.cpp | 143 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 mTextControl/src/main.cpp (limited to 'mTextControl/src/main.cpp') diff --git a/mTextControl/src/main.cpp b/mTextControl/src/main.cpp new file mode 100644 index 0000000..16dbc20 --- /dev/null +++ b/mTextControl/src/main.cpp @@ -0,0 +1,143 @@ +/* +Miranda Text Control - Plugin for Miranda IM + +Copyright © 2005 Victor Pavlychko (nullbie@gmail.com), + © 2010 Merlin_de + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +=============================================================================== + +File name : $HeadURL: main.cpp $ +Revision : $Revision: $ +Last change on : $Date: 2010-07-03 15:25:00 $ +Last change by : $Author: Merlin_de $ + +=============================================================================== +*/ + +#include "headers.h" + +HINSTANCE hInst = 0; +PLUGINLINK *pluginLink = 0; + +HMODULE hMsfteditDll = 0; +HRESULT (WINAPI *MyCreateTextServices)(IUnknown *punkOuter, ITextHost *pITextHost, IUnknown **ppUnk); + +PLUGININFOEX pluginInfoEx = +{ + sizeof(PLUGININFOEX), + MTEXT_DISPLAYNAME, + PLUGIN_MAKE_VERSION(__MAJOR_VERSION,__MINOR_VERSION,__RELEASE_NUM,__BUILD_NUM), + MTEXT_DESCRIPTION, + MTEXT_AUTHOR, + MTEXT_EMAIL, + MTEXT_COPYRIGHT, + MTEXT_WEBPAGE, + UNICODE_AWARE, + 0, + MTEXT_UUID +}; + +PLUGININFO pluginInfo = +{ + sizeof(PLUGININFO), + pluginInfoEx.shortName, + pluginInfoEx.version, + pluginInfoEx.description, + pluginInfoEx.author, + pluginInfoEx.authorEmail, + pluginInfoEx.copyright, + pluginInfoEx.homepage, + pluginInfoEx.flags, + pluginInfoEx.replacesDefaultModule +}; + +extern "C" BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) +{ + hInst=hinstDLL; + return TRUE; +} + +static HANDLE hModulesLoaded = 0; +static int ModulesLoaded(WPARAM wParam,LPARAM lParam); + +extern "C" __declspec(dllexport) PLUGININFO *MirandaPluginInfo(DWORD mirandaVersion) +{ + pluginInfo.cbSize = sizeof(PLUGININFO); + return &pluginInfo; +} + +extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) +{ + pluginInfoEx.cbSize = sizeof(PLUGININFOEX); + return &pluginInfoEx; +} + +extern "C" __declspec(dllexport) const MUUID *MirandaPluginInterfaces(void) +{ + static const MUUID interfaces[] = { MTEXT_UUID, MIID_LAST }; + return interfaces; +} + +extern "C" __declspec(dllexport) int Load(PLUGINLINK *link) +{ + pluginLink = link; + + //6.0A SDK is missing RichEd20.lib for x64 + //http://connect.microsoft.com/VisualStudio/feedback/details/551071/the-6-0a-sdk-is-missing-riched20-lib-for-x64 + MyCreateTextServices = 0; + hMsfteditDll = LoadLibrary(_T("msftedit.dll")); + if (hMsfteditDll) { + MyCreateTextServices = (HRESULT (WINAPI *)( + IUnknown *punkOuter, + ITextHost *pITextHost, + IUnknown **ppUnk)) + GetProcAddress(hMsfteditDll, "CreateTextServices"); + } + +// LoadFancy(); + LoadEmfCache(); + LoadRichEdit(); + LoadTextUsers(); + LoadServices(); + //LoadOptions(); + + MTextControl_RegisterClass(); + hModulesLoaded = HookEvent(ME_SYSTEM_MODULESLOADED, ModulesLoaded); + return 0; +} + +static int ModulesLoaded(WPARAM wParam,LPARAM lParam) +{ +// char fn[MAX_PATH+1]; +// GetModuleFileName(hInst, fn, MAX_PATH); +// InitFancy(); +// InitIcons(icons, fn, iconCount); + return 0; +} + +extern "C" __declspec(dllexport) int Unload(void) +{ + UnhookEvent(hModulesLoaded); +// UnloadOptions(); + UnloadServices(); + UnloadTextUsers(); + UnloadRichEdit(); + UnloadEmfCache(); +// UnloadFancy(); + FreeLibrary(hMsfteditDll); + return 0; +} -- cgit v1.2.3