[ Pobierz całość w formacie PDF ]
.Nale¿y pamiêtaæ, ¿e Panel sterowania komunikuje siê zapletem nie tylko w chwili jego wywo³ania (dwukrotnego klikniêcia ikony), leczrównie¿ w czasie inicjalizacji (pobranie parametrów, jak ikona i opisy) izamkniêcia.Zwi¹zane s¹ z tym zdarzenia: OnInquire, OnNewInquire, OnStop i andOnStartWParms.Nie bêdziemy ich tutaj u¿ywaæ, jednak warto zdawaæ sobie sprawêz mo¿liwoœci ich wykorzystania do wymiany danych.W naszym przyk³adzie wykorzystamy natomiast zdarzenie OnActivate, generowane wchwili dwukrotnego klikniêcia ikony apletu w oknie Panelu sterowania.ObiektSender, przekazywany jako parametr funkcji obs³ugi zdarzenia, identyfikujewywo³ywany modu³ (aplet logiczny).Drugi parametr funkcji, Data, zawierawskaŸnik do struktury danych wykorzystywanej w obs³udze zdarzeñ OnInquire iOnNewInquire (dodatkowe informacje na temat odpowiednich komunikatów izwi¹zanych z nimi struktur danych mo¿na znaleŸæ w rozdziale 14.).Projektujemy formularz apletuPowróæmy obecnie do projektowania naszego apletu i zaprojektujmy dla niegoprosty formularz, zawieraj¹cy trzy przyciski.Po wybraniu modu³u apletu(AppletModule1) w oknie eksploratora modu³Ã³w, kliknij dwukrotnie polew³aœciwoœci AppletIcon w oknie inspektora obiektów.Na ekranie pojawi siê oknoedytora obrazków, umo¿liwiaj¹ce wybranie ikony reprezentuj¹cej aplet w Panelusterowania (mo¿na tu u¿yæ ikony zdefiniowanej uprzednio za pomoc¹ edytoragraficznego i zapisanej w pliku.ico).W polu w³aœciwoœci Caption wpisz nazwêapletu (np.„Aplet æwiczebny”), a w polu w³aœciwoœci Help – opis apletu (np.„To jest aplet przyk³adowy”).Wybierz polecenie New Form z menu File i ustaw rozmiary nowo utworzonegoformularza poprzez przeci¹ganie krawêdzi mysz¹ lub wpisanie odpowiednichwartoœci do pól Width i Height inspektora obiektów.Nastêpnie wybierz z kartyStandard palety komponent TButton i wstaw go do formularza klikniêciem lewegoprzycisku myszy.Powtórz tê operacjê trzykrotnie, nadaj¹c przyciskomw³aœciwoœci opisane w tabeli 6.4.Tabela 6.4.W³aœciwoœci przycisków dla przyk³adowego apletuKomponentW³aœciwoœæWartoœæButton1CaptionWidthPoka¿ pasek zadañ110Button2CaptionWidthUkryj pasek zadañ110Button3CaptionWidthZamknij110Utwórz funkcjê obs³ugi zdarzenia OnClick dla przycisku Button1, klikaj¹c godwukrotnie i wpisuj¹c w oknie edytora nastêpuj¹cy kod:void __fastcall TForm2::Button1Click(TObject *Sender){// Poka¿ pasek zadañ.HANDLE Hide_TaskBar;Hide_TaskBar = FindWindow("Shell_traywnd", "");SetWindowPos(Hide_TaskBar, 0, 0, 0, 0, 0, SWP_SHOWWINDOW);}W analogiczny sposób utwórz funkcjê obs³ugi zdarzenia OnClick dla przyciskuButton2.Jej kod powinien wygl¹daæ nastêpuj¹co:void __fastcall TForm2::Button2Click(TObject *Sender){// Ukryj pasek zadañ.HANDLE Hide_TaskBar;Hide_TaskBar = FindWindow("Shell_traywnd", "");SetWindowPos(Hide_TaskBar, 0, 0, 0, 0, 0, SWP_HIDEWINDOW);}Pozosta³o nam do obs³u¿enia zdarzenie OnClick dla przycisku Button3.Odpowiednia funkcja obs³ugi bêdzie mia³a postaæ:void __fastcall TForm2::Button3Click(TObject *Sender){Close();}W nastêpnej kolejnoœci trzeba bêdzie zmodyfikowaæ sposób tworzenia formularza.C++Builder generuje kod automatycznie tworz¹cy formularz w chwili uruchomieniaaplikacji (za³adowania pliku.cpl do pamiêci).Poniewa¿ nie odpowiada to naszympotrzebom, musimy usun¹æ domyœlny kod i zast¹piæ go w³asnym, tworz¹cymformularz dopiero w chwili wywo³ania apletu.W tym celu otwórz plik Ÿród³owyProject1.cpp w edytorze kodu, znajdŸ definicjê funkcji DllEntryPoint() i usuñ zniej wywo³anie:Application->CreateForm(__classid(TForm2), &Form2);Nastêpnie wywo³aj okno eksploratora modu³Ã³w (mo¿na to zrobiæ za pomoc¹polecenia View|Forms lub naciœniêcia klawiszy Shift+F12), wybierz modu³AppletModule1 i kliknij OK.W oknie inspektora obiektów kliknij dwukrotnie wpolu zdarzenia OnActivate, tworz¹c w ten sposób funkcjê jego obs³ugi.Uzupe³nijj¹ nastêpuj¹cym kodem:void __fastcall TAppletModule1::AppletModuleActivate(TObject *Sender,int Data){// Utwórz formularz.if(!Form2)Form2 = new TForm2(this);// Wyœwietl formularz jako okno modalne i poczekaj// na jego zamkniêcie.Form2->ShowModal();// Usuñ formularz.delete Form2;}Wygl¹d okien IDE po zakoñczeniu projektowania pokazano na rysunku 6.9.Rysunek 6.9.Gotowy projekt apletuTo ju¿ prawie wszystko, zatem pora zapisaæ nasz projekt.Wybierz polecenie SaveAll z menu File i zapisz pliki projektu w wybranym przez siebie katalogu.W razie potrzeby mo¿na nakazaæ C++Builderowi automatyczne przemianowanieutworzonego pliku wynikowego i skopiowanie go do w³aœciwego katalogusystemowego.W tym celu wybierz okno eksploratora modu³Ã³w i kliknij ikonêmodu³u prawym przyciskiem myszy.Wyœwietli to menu kontekstowe widoczne narysunku 6.10.Zawiera ono trzy opcje: Install Control Panel Applet (zainstalujaplet), Uninstall Control Panel Applet (odinstaluj aplet) i Launch ControlPanel (uruchom Panel sterowania).Wybranie polecenia Install Control PanelApplet spowoduje skompilowanie kodu apletu i skopiowanie go do odpowiedniegokatalogu.Po wyœwietleniu komunikatu o sukcesie mo¿esz uruchomiæ Panelsterowania poleceniem Launch Control Panel, co powinno wyœwietliæ oknozawieraj¹ce ikonê naszego apletu.Jej dwukrotne klikniêcie wyœwietli formularzzdefiniowany przez nas wczeœniej.Do zakoñczenia dzia³ania apletu s³u¿yprzycisk Zamknij (zobacz rysunek 6.11).Rysunek 6.10.Menu kontekstowe eksploratora modu³Ã³w umo¿liwia zainstalowanielub odinstalowanie apletu oraz uruchomienie Panelu sterowaniaRysunek 6.11.Przyk³adowy aplet w dzia³aniuAplet mo¿na tak¿e uruchomiæ bez poœrednictwa Panelu sterowania, wydaj¹cpolecenie Uruchom z menu Start i wpisuj¹c w oknie Uruchamianie:rundll32 shell32.dll,Control_RunDLL project1.cpl @0Wartoœæ wpisana po znaku @ jest numerem apletu logicznego (okna dialogowego),który ma byæ wywo³any z za³adowanego pliku.cpl.Aplety numerowane s¹ od zera,zatem @0 oznacza pierwszy aplet.W naszym przypadku jest on zarazem jedynymapletem logicznym, tote¿ zapis @0 mo¿na pomin¹æ.Gdyby plik.cpl zawiera³ dwaaplety logiczne, do wywo³ania drugiego z nich nale¿a³oby u¿yæ polecenia:rundll32 shell32.dll,Control_RunDLL mycpl.cpl @1U¿yty tu mechanizm jest doœæ prosty – program rundll32 [ Pobierz caÅ‚ość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • listy-do-eda.opx.pl