mmsstv/CItems/TextArt/TextArt.cpp

218 lines
5.9 KiB
C++
Raw Permalink Normal View History

2013-07-05 22:15:14 +02:00
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#include "ComLib.h"
#include "About.h"
//---------------------------------------------------------------------------
USEUNIT("Comlib.cpp");
USEFORM("About.cpp", AboutDlg);
USERC("textart.rc");
USEFORM("TextDlg.cpp", TextDlgBox);
USEFORM("CodeVw.cpp", CodeView);
//---------------------------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
switch(reason){
case DLL_PROCESS_ATTACH:
{
InitSys(hinst);
_setmbcp(_MB_CP_ANSI);
HWND hMM = ::FindWindow("TMmsstv", NULL);
if( hMM != NULL ) Application->Handle = hMM;
}
break;
case DLL_PROCESS_DETACH:
sys.m_fMultProc = NULL;
if( sys.m_pDefStg != NULL ){
CItem *pItem = new CItem;
pItem->Create(NULL, 0);
pItem->SaveToInifile("Default", ININAME, FALSE);
delete pItem;
delete sys.m_pDefStg;
sys.m_pDefStg = NULL;
}
if( sys.m_pTextList != NULL ){
SaveStringsToIniFile(sys.m_pTextList, "Strings", ININAME, TRUE);
delete sys.m_pTextList;
sys.m_pTextList = NULL;
}
if( sys.m_pStyleList != NULL ){
SaveStringsToIniFile(sys.m_pStyleList, "Styles", ININAME, FALSE);
delete sys.m_pStyleList;
sys.m_pStyleList = NULL;
}
if( sys.m_pFontList != NULL ){
delete sys.m_pFontList;
sys.m_pFontList = NULL;
}
if( sys.m_pBitmapTemp != NULL ){
delete sys.m_pBitmapTemp;
sys.m_pBitmapTemp = NULL;
}
break;
}
return 1;
}
//---------------------------------------------------------------------------
extern "C" __declspec(dllexport)
void mcmLanguage(DWORD lang)
{
sys.m_MsgEng = lang;
}
//---------------------------------------------------------------------------
extern "C" __declspec(dllexport)
void mcmAboutDialog(HWND hWnd)
{
TAboutDlg *pBox = new TAboutDlg(NULL);
pBox->ShowModal();
delete pBox;
}
//---------------------------------------------------------------------
extern "C" __declspec(dllexport)
HANDLE mcmCreateObject(LPCBYTE pStorage, DWORD Size)
{
CItem *pItem = new CItem;
ASSERT(pItem);
if( pItem != NULL ) pItem->Create(pStorage, Size);
return (HANDLE)pItem;
}
//---------------------------------------------------------------------
extern "C" __declspec(dllexport)
DWORD mcmGetItemType(HANDLE hObj)
{
ASSERT(hObj);
CItem *pItem = (CItem *)hObj;
return pItem->GetItemType();
}
//---------------------------------------------------------------------
extern "C" __declspec(dllexport)
LPCBYTE mcmCreateStorage(HANDLE hObj, LPDWORD pSize)
{
ASSERT(hObj);
CItem *pItem = (CItem *)hObj;
return pItem->CreateStorage(pSize);
}
//---------------------------------------------------------------------
extern "C" __declspec(dllexport)
void mcmDeleteStorage(HANDLE hObj, LPCBYTE pStorage)
{
ASSERT(hObj);
CItem *pItem = (CItem *)hObj;
pItem->DeleteStorage(pStorage);
}
//---------------------------------------------------------------------
extern "C" __declspec(dllexport)
void mcmDeleteObject(HANDLE hObj)
{
ASSERT(hObj);
CItem *pItem = (CItem *)hObj;
if( pItem != NULL ) delete pItem;
}
//---------------------------------------------------------------------
extern "C" __declspec(dllexport)
DWORD mcmEdit(HANDLE hObj, HWND hWnd)
{
ASSERT(hObj);
CItem *pItem = (CItem *)hObj;
int r = pItem->EditDialog(hWnd);
return r;
}
//---------------------------------------------------------------------
extern "C" __declspec(dllexport)
DWORD mcmFont(HANDLE hObj, HWND hWnd)
{
ASSERT(hObj);
CItem *pItem = (CItem *)hObj;
int r = pItem->FontDialog(hWnd);
::SetForegroundWindow(hWnd);
return r;
}
//---------------------------------------------------------------------
extern "C" __declspec(dllexport)
DWORD mcmGetOrgSize(HANDLE hObj)
{
ASSERT(hObj);
CItem *pItem = (CItem *)hObj;
return pItem->GetOrgSize();
}
//---------------------------------------------------------------------
extern "C" __declspec(dllexport)
void mcmPos(HANDLE hObj, DWORD pos, DWORD size, DWORD tsize)
{
ASSERT(hObj);
CItem *pItem = (CItem *)hObj;
pItem->SetPos(pos, size, tsize);
}
//---------------------------------------------------------------------
extern "C" __declspec(dllexport)
LPCSTR mcmGetUserText(HANDLE hObj)
{
ASSERT(hObj);
CItem *pItem = (CItem *)hObj;
return pItem->GetText();
}
//---------------------------------------------------------------------
extern "C" __declspec(dllexport)
HBITMAP mcmUpdateText(HANDLE hObj, HBITMAP hDest, LPCSTR pText)
{
ASSERT(hObj);
ASSERT(hDest);
CItem *pItem = (CItem *)hObj;
// Draw object to hDest
Graphics::TBitmap *pDest = new Graphics::TBitmap;
pDest->Handle = hDest;
pDest = pItem->Draw(pDest, pText);
HBITMAP hb = pDest->ReleaseHandle();
delete pDest;
return (hb != hDest) ? hb : NULL;
}
//---------------------------------------------------------------------
extern "C" __declspec(dllexport)
HBITMAP mcmUpdateImage(HANDLE hObj, HBITMAP hDest, HBITMAP hSrc)
{
ASSERT(0); // This function should not be called
return NULL;
}
//---------------------------------------------------------------------
extern "C" __declspec(dllexport)
void mcmSetDraft(HANDLE hObj, DWORD draft)
{
ASSERT(hObj);
CItem *pItem = (CItem *)hObj;
pItem->SetDraft(draft);
}
//---------------------------------------------------------------------
extern "C" __declspec(dllexport)
void mcmSetEx(HANDLE hObj, DWORD ex)
{
ASSERT(hObj);
CItem *pItem = (CItem *)hObj;
pItem->SetEx(ex);
}
//---------------------------------------------------------------------
extern "C" __declspec(dllexport)
void mcmGetFont(HANDLE hObj, LOGFONT *pLogfont)
{
ASSERT(hObj);
CItem *pItem = (CItem *)hObj;
pItem->GetFont(pLogfont);
}
//---------------------------------------------------------------------
extern "C" __declspec(dllexport)
void mcmSetFont(HANDLE hObj, LOGFONT *pLogfont)
{
ASSERT(hObj);
CItem *pItem = (CItem *)hObj;
pItem->SetFont(pLogfont);
}