#include "stdafx.h"
#include "LoadDatabase.h"



OPENDATABASEROUTINE		openDatabaseRoutine;
CLOSEDATABASEROUTINE	closeDatabaseRoutine;
SEARCHINDATABASEROUTINE	searchInDatabaseRoutine;
FILLDATABASERECORD		fillDatabaseRoutine;


extern HINSTANCE		hInst;
extern HWND				g_hMainWindow;
HMODULE					g_hDatabaseLibrary;
const char				*g_DatabasePtr = NULL;
int						g_cRecordsInBase = 0;


BOOL LoadDatabaseDLL(void)
{
	HMODULE hModule = LoadLibrary(TEXT("PhoneDB.dll"));
	DWORD error = 0;

	if (hModule == NULL)
		error = GetLastError();
	else {
		openDatabaseRoutine = (OPENDATABASEROUTINE)GetProcAddress(hModule, "OpenDatabase");
		closeDatabaseRoutine = (CLOSEDATABASEROUTINE)GetProcAddress(hModule, "CloseDatabase");
		searchInDatabaseRoutine = (SEARCHINDATABASEROUTINE)GetProcAddress(hModule, "SearchInDatabase");
		fillDatabaseRoutine = (FILLDATABASERECORD)GetProcAddress(hModule, "FillDatabaseRecord");

		if (openDatabaseRoutine == NULL
		|| closeDatabaseRoutine == NULL
		|| searchInDatabaseRoutine == NULL
		|| fillDatabaseRoutine == NULL)
			error = GetLastError();
	}

	if (error) {
		DWORD systemLocale = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL);
		HLOCAL hlocal = NULL; 
		
		FormatMessage(
			 FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS |
			 FORMAT_MESSAGE_ALLOCATE_BUFFER, 
			 NULL, GetLastError(), systemLocale, 
			 (PTSTR) &hlocal, 0, NULL);

		MessageBox(0, (TCHAR*)hlocal, NULL, MB_OK);
		LocalFree(hlocal);
		return FALSE;
	} else
		return TRUE;
}


BOOL GetFilename(TCHAR *szFile)
{
	OPENFILENAME ofn;

	memset(&ofn, 0, sizeof(ofn));
	ofn.lStructSize = sizeof(OPENFILENAME); 
	ofn.hInstance = hInst;
	ofn.hwndOwner = g_hMainWindow; 
	ofn.lpstrFilter = NULL;
	ofn.lpstrCustomFilter = NULL;
	ofn.lpstrFile = szFile; 
	ofn.nMaxFile = MAX_PATH * sizeof(*szFile); 
	ofn.lpstrFileTitle = NULL; 
	ofn.nMaxFileTitle = 0; 
	ofn.lpstrInitialDir = NULL; 
	ofn.Flags = OFN_OVERWRITEPROMPT; 
	ofn.lpstrTitle = NULL; 
	
	BOOL retval = GetOpenFileName(&ofn);
	return retval;
}
Соседние файлы в папке osisp_laba4