#include "stdafx.h" #include "MeteoToolsDefs.h" #include <direct.h> ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// typedef BMSDLL_DATA& (WINAPI *DLL_GetBSM_Para)(); typedef PictureFileList& (WINAPI *DLL_GetPicFiles)(int); typedef IsoLines& (WINAPI *DLL_GetPoliLines)(); typedef Coordinates& (WINAPI *DLL_GetCoordinates)(); typedef IsoPlane& (WINAPI *DLL_GetIsoPlanes)(); typedef ColorMatrix& (WINAPI *DLL_GetColorMatrix)(); typedef BMSDSynopList& (WINAPI *DLL_GetSynopDataSet)(); typedef MSDFile& (WINAPI *DLL_GetMSDFileList)(); typedef MSDFILE& (WINAPI *DLL_GetCurrentMSDFile)(); typedef MSDFILE& (WINAPI *DLL_GetFirstSynopMSDFile)(); typedef DRAW_PARA& (WINAPI *DLL_GetDrawPara)(); #define myPicFiles(folder) GetPicFiles(folder) #define myBMS_Para GetBSM_Para() #define myPoliLines GetPoliLines() #define myCoordinates GetCoordinates() #define myIsoPlanes GetIsoPlanes() #define mySynopList GetSynopDataSet() #define NowDate GetCurrentMSDFile() #define ExistDates GetMSDFileList() #define FirstSynopDate GetFirstSynopMSDFile() #define myDrawPara GetDrawPara() typedef void (WINAPI *DLL_ConnectMeteoCom)(HWND,int); typedef void (WINAPI *DLL_DisconnectMeteoCom)(); typedef BOOL (WINAPI *DLL_GetDataOfPoint)(int,int,BMSDATA_SET*); typedef BOOL (WINAPI *DLL_GetSynopDataOfPoint)(int,int,BMSD_SYN*,char *); typedef int (WINAPI *DLL_SetSynopField)(time_t); typedef BOOL (WINAPI *DLL_LoadScreenField)(time_t,int,int,ScreenGridData &); typedef BOOL (WINAPI *DLL_LoadDataField)(time_t,int,int,BMSDataList &); typedef void (WINAPI *DLL_LoadPictureList)(); typedef void (WINAPI *DLL_DrawThumbFolders)(HDC,int,CRect &,int,int,int,int); typedef void (WINAPI *DLL_DrawSeaData)(CDC*,LPRECT,time_t,int,int,float,float,float,float); typedef void (WINAPI *DLL_DrawSfcData)(CDC*,LPRECT,time_t,int,int,float,float,float,float); typedef void (WINAPI *DLL_DrawSynData)(CDC*,LPRECT,time_t,int,int,float,float,float,float); typedef void (WINAPI *DLL_MovePicFile)(int,int,int); typedef void (WINAPI *DLL_DeletePicFile)(int,int); typedef void (WINAPI *DLL_RenamePicFileName)(int,int,char*); typedef void (WINAPI *DLL_DecodeMPfromFile)(char*); typedef void (WINAPI *DLL_DecodeMPfromClipBoard)(HWND); typedef time_t (WINAPI *DLL_LoadAllMSDFiles)(); typedef void (WINAPI *DLL_SetCurrentMSDFile)(int); typedef void (WINAPI *DLL_SetGridDimension)(int,int); HINSTANCE m_DllHandle=NULL; DLL_ConnectMeteoCom ConnectMeteoCom=NULL; DLL_DisconnectMeteoCom DisconnectMeteoCom=NULL; DLL_GetBSM_Para GetBSM_Para=NULL; DLL_LoadPictureList LoadPictureList=NULL; DLL_GetPicFiles GetPicFiles=NULL; DLL_DrawThumbFolders DrawThumbFolders=NULL; DLL_GetColorMatrix GetColorMatrix=NULL; DLL_LoadScreenField LoadScreenField=NULL; DLL_LoadDataField LoadDataField=NULL; DLL_SetSynopField SetSynopField=NULL; DLL_GetSynopDataSet GetSynopDataSet=NULL; DLL_GetDataOfPoint GetDataOfPoint=NULL; DLL_GetSynopDataOfPoint GetSynopDataOfPoint=NULL; DLL_GetPoliLines GetPoliLines=NULL; DLL_GetCoordinates GetCoordinates=NULL; DLL_GetIsoPlanes GetIsoPlanes=NULL; DLL_MovePicFile MovePicFile=NULL; DLL_DeletePicFile DeletePicFile=NULL; DLL_RenamePicFileName RenamePicFileName=NULL; DLL_DrawSeaData DrawSeaData=NULL; DLL_DrawSfcData DrawSfcData=NULL; DLL_DrawSynData DrawSynData=NULL;DLL_DecodeMPfromFile DecodeMPfromFile=NULL; DLL_DecodeMPfromClipBoard DecodeMPfromClipBoard=NULL; DLL_GetMSDFileList GetMSDFileList=NULL; DLL_GetCurrentMSDFile GetCurrentMSDFile=NULL; DLL_GetFirstSynopMSDFile GetFirstSynopMSDFile=NULL; DLL_LoadAllMSDFiles LoadAllMSDFiles=NULL; DLL_SetCurrentMSDFile SetCurrentMSDFile=NULL; DLL_SetGridDimension SetGridDimension=NULL; DLL_GetDrawPara GetDrawPara=NULL;void WINAPI DeInstallMeteoServerTool() { DisconnectMeteoCom(); FreeLibrary(m_DllHandle); } BOOL WINAPI GetMcString(char* DatBuf) { HKEY hKey; long retCode; DWORD dat_sodb=255,val_type=REG_SZ; DatBuf[0]=0; retCode=RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Bonito\\MeteoCom",0,KEY_READ,&hKey); if(!retCode) { retCode=RegQueryValueEx( hKey, // handle to key to query "AccessDir", // address of name of value to query NULL, // reserved &val_type, // address of buffer for value type (BYTE*)DatBuf, // address of data buffer &dat_sodb // address of data buffer size ); RegCloseKey (hKey); } return(retCode); } extern char myDIR[256]; BOOL WINAPI InstallMeteoServerTool() { //getcwd(buf,255); //get the main directory //strcpy(myDIR,buf);if(m_DllHandle) return TRUE; // Get the DLL char buf[512],dlldir[512]; if(GetMcString(dlldir)) return FALSE; sprintf(buf,"%s\\MeteoTools.dll",dlldir); m_DllHandle= LoadLibrary(buf); if(!m_DllHandle) { sprintf(buf,"%s\\MeteoTools.dll",myDIR); m_DllHandle= LoadLibrary(buf); if(!m_DllHandle) return FALSE; } // Get the routine pointers to the MeteoServiceTool DLL ConnectMeteoCom=(DLL_ConnectMeteoCom)GetProcAddress(m_DllHandle,"ConnectMeteoCom"); DisconnectMeteoCom=(DLL_DisconnectMeteoCom)GetProcAddress(m_DllHandle,"DisconnectMeteoCom"); GetBSM_Para=(DLL_GetBSM_Para)GetProcAddress(m_DllHandle,"GetBSM_Para"); LoadPictureList = (DLL_LoadPictureList)GetProcAddress(m_DllHandle,"LoadPictureList"); GetPicFiles=(DLL_GetPicFiles)GetProcAddress(m_DllHandle,"GetPicFiles"); DrawThumbFolders=(DLL_DrawThumbFolders)GetProcAddress(m_DllHandle,"DrawThumbFolders"); GetColorMatrix = (DLL_GetColorMatrix)GetProcAddress(m_DllHandle,"GetColorMatrix"); LoadScreenField=(DLL_LoadScreenField)GetProcAddress(m_DllHandle,"LoadScreenField"); LoadDataField=(DLL_LoadDataField)GetProcAddress(m_DllHandle,"LoadDataField"); SetSynopField=(DLL_SetSynopField)GetProcAddress(m_DllHandle,"SetSynopField"); GetDataOfPoint = (DLL_GetDataOfPoint)GetProcAddress(m_DllHandle,"GetDataOfPoint"); GetSynopDataOfPoint = (DLL_GetSynopDataOfPoint)GetProcAddress(m_DllHandle,"GetSynopDataOfPoint"); GetSynopDataSet = (DLL_GetSynopDataSet)GetProcAddress(m_DllHandle,"GetSynopDataSet"); GetCoordinates=(DLL_GetCoordinates)GetProcAddress(m_DllHandle,"GetCoordinates"); GetPoliLines=(DLL_GetPoliLines)GetProcAddress(m_DllHandle,"GetPoliLines"); GetIsoPlanes=(DLL_GetIsoPlanes)GetProcAddress(m_DllHandle,"GetIsoPlanes"); MovePicFile=(DLL_MovePicFile)GetProcAddress(m_DllHandle,"MovePicFile"); DeletePicFile=(DLL_DeletePicFile)GetProcAddress(m_DllHandle,"DeletePicFile"); RenamePicFileName=(DLL_RenamePicFileName)GetProcAddress(m_DllHandle,"RenamePicFileName"); DrawSeaData=(DLL_DrawSeaData)GetProcAddress(m_DllHandle,"DrawSeaData"); DrawSfcData=(DLL_DrawSfcData)GetProcAddress(m_DllHandle,"DrawSfcData"); DrawSynData=(DLL_DrawSfcData)GetProcAddress(m_DllHandle,"DrawSynData"); DecodeMPfromFile=(DLL_DecodeMPfromFile)GetProcAddress(m_DllHandle,"DecodeMPfromFile"); DecodeMPfromClipBoard=(DLL_DecodeMPfromClipBoard)GetProcAddress(m_DllHandle,"DecodeMPfromClipBoard"); GetMSDFileList=(DLL_GetMSDFileList)GetProcAddress(m_DllHandle,"GetMSDFileList"); GetCurrentMSDFile=(DLL_GetCurrentMSDFile)GetProcAddress(m_DllHandle,"GetCurrentMSDFile"); GetFirstSynopMSDFile=(DLL_GetFirstSynopMSDFile)GetProcAddress(m_DllHandle,"GetFirstSynopMSDFile"); SetCurrentMSDFile=(DLL_SetCurrentMSDFile)GetProcAddress(m_DllHandle,"SetCurrentMSDFile"); LoadAllMSDFiles=(DLL_LoadAllMSDFiles)GetProcAddress(m_DllHandle,"LoadAllMSDFiles"); SetGridDimension=(DLL_SetGridDimension)GetProcAddress(m_DllHandle,"SetGridDimension"); GetDrawPara=(DLL_GetDrawPara)GetProcAddress(m_DllHandle,"GetDrawPara");return TRUE; }