dll3



Strefa C++ Builder'a





















Jak utworzyć bibliotekę DLL (wprowadzenie)      Strona
3 z 7        Dalej



w oparciu o materiały ze stron The Bits




      
Krok 2: Utworzenie formularza


      Utworzymy teraz formularz w katalogu DLLTUTOR. Wybierz File|New Form. C++Builder utworzy
typowy formularz. Zanim zaczniemy szczegółowo omawiać formularz, wybierz z palety komponentów:
dwie etykiety (Label1, Label2); dwa pola edycyjne (Edit1, Edit2); oraz dwa przyciski (Button1,
Button2). Wszystkie te komponenty umieść na formularzu. Aby zachować spójność z dalszą częścią
samouczka, zmień odpowiednie właściwości komponentów tak, żeby ich wartości były zgodne z tym
co pokazano poniżej:





Komponent

Właściwość

Wartość



Form

Caption

Dodaj dwie liczby



 

Name

frmAddNumbers



 

Position

poScreenCenter



Label1

Caption

Pierwsza liczba:



Label2

Caption

Druga liczba:



Button1

Caption

&Oblicz



Button2

Caption

&Anuluj



Edit1

MaxLength

5



 

Text

""



Edit2

MaxLength

5



 

Text

""





      Teraz wybierz File|Save i zapisz formularz pod nazwą Add2Nos. Celem tego formularza jest
umożliwienie wprowadzenia liczby całkowitej do każdego z dwóch pól edycyjnych (Edit1, Edit2). Jeśli
użytkownik kliknie przycisk Oblicz, to te dwie liczby zostaną dodane do siebie, a wynik zostanie
zwrócony do funkcji wywołującej. Jeśli zaś użytkownik kliknie przycisk Anuluj, to nastąpi powrót z
funkcji bez dodawania liczb. Kod biblioteki DLL powinien teraz wyglądać jak poniżej. Zauważ, że
linia USEFORM jest dopisywana automatycznie przez IDE.



//--------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

//---------------------------------------------------------
USEFORM("Add2Nos.cpp", frmAddNumbers);

//---------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hinst,
unsigned long reason, void*)
{
return 1;
}

//---------------------------------------------------------


      Jak powiemy funkcji wywołującej który przycisk został kliknięty? Ano zwrócimy zmienną typu bool
jako wynik funkcji. Jeśli będzie "true", to funkcja wywołująca wie, że zwrócono poprawną liczbę i
może wtedy wykonać odpowiednie operacje. Jeśli będzie "false", to funkcja wywołująca wie, że
kliknięto Anuluj.



      Dalej, pozwolimy użytkownikowi zdefiniować dwa domyślne stringi, które wstawimy do pól
edycyjnych w chwili tworzenia formularza. Oto deklaracja (prototyp) takiej funkcji w bibliotece DLL,
której używał będzie program wywołujący:



bool Add2(char *, char *, long int *);

      zatem pseudo-kod mógłby wyglądać np. tak:




if(Add2("123","456",&Sum))
{
// Kliknięto Oblicz. Mamy sumę.
}
else
{
// Kliknięto Anuluj. Nic nie rób.
}


      Plik Add2Nos.cpp powinien wyglądać tak:



//---------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Add2Nos.h"

//---------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TfrmAddNumbers *frmAddNumbers;

//--------------------------------------------------

__fastcall TfrmAddNumbers::TfrmAddNumbers(TComponent* Owner)

: TForm(Owner)

{

bResult = false;

}

//---------------------------------------------------

void __fastcall TfrmAddNumbers::Button1Click(TObject *Sender)

{

bResult = true;

Close();

}

//--------------------------------------------------

void __fastcall TfrmAddNumbers::Button2Click(TObject *Sender)

{

Close();

}

//---------------------------------------------------


      Zdefiniowaliśmy zmienną typu bool o nazwie bResult, która przekaże informacje do programu
wywołującego o tym, który przycisk został kliknięty. Ale nie zadeklarowaliśmy jeszcze naszej zmiennej
bResult, zatem zrobimy to teraz w pliku nagłówkowym. Aby się do niego dostać, kliknij zakładkę
ADD2NOS.CPP w oknie edytora kodu. Wskaż myszą nazwę pliku na zakładce i kliknij prawym
przyciskiem. Z rozwiniętego menu kontekstowego wybierz Open Source/Header File, co umieści plik
nagłówkowy (Add2Nos.h) pod kolejną zakładką w oknie edytora.



      Zmień zawartość pliku nagłówkowego tak, żeby wyglądał jak poniżej:





//-----------------------------------------------------

#ifndef Add2NosH

#define Add2NosH

//-------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

//-------------------------------------------------------

class TfrmAddNumbers : public TForm

{

__published: // IDE-managed Components

TLabel *Label1;

TLabel *Label2;

TButton *Button1;

TButton *Button2;

TEdit *Edit1;

TEdit *Edit2;

void __fastcall Button1Click(TObject *Sender);

void __fastcall Button2Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TfrmAddNumbers(TComponent* Owner);

bool bResult;

};

//--------------------------------------------------

extern PACKAGE TfrmAddNumbers *frmAddNumbers;

//--------------------------------------------------

#endif


      Zapisz formularz, używając File|Save. Przypomnijmy jeszcze raz kilka istotnych miejsc w formularzu.
Wewnątrz pliku nagłówkowego Add2Nos.h znajduje się zmienna typu bool - bResult. Zdefiniowano
ją w sekcji public definicji formularza. Zmienna ta musi być "widoczna" dla biblioteki DLL, kiedy w
czasie wykonywania będziemy tworzyć egzemplarz formularza. Dlatego też nie mogliśmy jej umieścić
w sekcji private, gdyż zakres jej ważności byłby tylko w granicach klasy, a nie poza nią (a o to
właśnie nam chodzi!).
Zerknij teraz na kod w pliku ADD2NOS.CPP. Zwróć uwagę, że bResult jest w konstruktorze
formularza ustawiona na "false", a wartość "true" przybiera tylko wewnątrz funkcji obsługującej
zdarzenie OnClick przycisku Oblicz.



      Jakkolwiek jest to kwestią wyboru. Równie dobrze mógłbyś ustawić ją na "false" wewnątrz funkcji
dla zdarzenia OnClick przycisku Anuluj. Ja jednak wolę używać konstruktora formularza do takich
celów, gdyż wtedy łatwiej znaleźć mi wszystkie zainicjalizowane zmienne. Jest to szczególnie
przydatne, kiedy tworzysz coraz większe projekty, przy których łatwo można zapomnieć gdzie
znajdują się pierwsze inicjalizacje zmiennych.










Uwaga: Autorzy oraz The Bits, nie ponoszą odpowiedzialności za ewentualne
szkody wynikłe z postępowania według zasad tego samouczka.
(c)1998 Peter Hamilton-Scott, Dallen Masters, & Simon Rutley-Frayne.
1999 Allan Carlton & Will Green. 
Tłumaczenie:  Maciek Durman




1  2  3  4  5  6  7















Wyszukiwarka

Podobne podstrony:
dll3

więcej podobnych podstron