File\OpenDLL - standartowy dialog wyboru plików z filtrem *.dll (skrót Ctrl+O), ładuje wybraną bibliotekę
File\CloseDLL - początkowo wyszarzona, zamyka i zwalnia bibliotekę, dostępna jedynie, gdy jest załadowana jakaś biblioteka
File\Exit - kończy działanie programu
DLL\Find Max - początkowo wyszarzona, uruchamia funkcję z biblioteki (skrót Ctrl+F), dostępna jedynie, gdy jest załadowana poprawna biblioteka (zawiarająca odpowiednią funkcję)
Działanie programu:
program wczytuje wskazany DLL i weryfikuje, czy zawiera niezbędne składniki tzn.:
funkcję 'maxInTable'
ciąg znaków w zasobach numerze 1 i 2
w razie braku ciągów należy zdefiniować własne
w oknie głónym wyświetla informacje uzyskane z DLLa
nazwa załadowanej biblioteki lub informacja o tym, że żadna nie jest załadowana
ciąg znaków z zasobów DLL o numerze 1 lub zastępczy, gdy brak
ciąg znaków z zasobów DLL o numerze 2 lub zastępczy, gdy brak
adres funkcji 'maxInTable' z DLL
Zawartość DLL'a:
int maxInTable(int table[], int size, int& retValue, int step, BOOL (CALLBACK *stepfun)(int));
zwracająca maksymalną wartość tablicy (przez retValue, sama funkcja zwraca 0 w normalnych okolicznościach i -1 gdy została przerwana), gdzie:
table - tablica liczb do przeszukania
size - rozmiar tablicy
retValue - znaleźiona wartość
step - co ile procent zaawansowania wywoływać stepfun
stepfun - funkcja wywoływana po osiągnięciu wielokrotności wskazanego
procentu zaawansowania z wartością argumentu równą aktualnemu
procentowemu zaawansowaniu oraz po zakończeniu sortowania w
wartością argumentu równą 101
np. dla wartości 15 zostanie wywołana kolejno z następującymi
parametrami: 15, 30, 45, 60, 75, 90, 101
ciąg znaków w zasobach o numerze 1, zawierający tekst, który powinien
zostać dodany do tytułu okna po zakończeniu przeszukiwania
ciąg znaków w zasobach o numerze 2, zawierający tekst, który powinien
zostać dodany do tytułu okna po przerwaniu przeszukiwania
Funkcja stepfun:
podawana jako parametr funkcji
wywoływana z parametrem określającym procentowe zaawansowanie
lub wartością 101 oznaczającą zakończenie
powinna dodawać do tytułu okna aktualne zaawansowanie (w procentach) oraz wyświetlać na dole okna pasek postępu, jeśli
przeszukiwanie zostało zakończone powinna dodawać tekst o numerze
1 z zasobów biblioteki DLL, jeśli przerwane tekst o numerze 2
wartość zwracana: TRUE jeśli sortowanie ma być kontynuowane, FALSE
w przeciwnym przypadku
przeszukiwanie można zatrzymać naciśnięciem prawego przycisku myszy,
UWAGA: proszę zostawić to na koniec