ďťż

9 (5)

Lemur zaprasza

Lekcja
9 - Kurs Visual C++ by SLASH







Dziś przed
Wami najtrudniejsza lekcja jak do tej pory - może nie poznamy dużo nowych
funkcji, ale sprawa jest naprawdę ciężka - ja sam do dziś mam problemy z
tym, ale cóż - to czego się dzisiaj nauczmy będzie nam potrzebne w przyszłości.
Otóż dziś zajmiemy się własnymi oknami dialogowymi. Mam nadzieję, że
wiesz co to jest okno dialogowe... a jeśli nie to się nie przejmuj - takie
okno dialogowe to zazwyczaj małe okienko wyświetlone przez pewien program w
celu podania do niego jakichś parametrów. Tak np. okienko Otwórz, Zapisz to
okna dialogowe. My stworzymy dziś sami okienko i przekażemy parametry z niego
do gównego okna programu. Tak więc zaczynamy:

Stwórz
projekt MFC i nazwij go Okienko. Jak zwykle usuwamy wszystkie obiekty z formy i
wstawiamy tam duże pole Static - nadajmy mu identyfikator IDC_ZWROT. Stwórzmy
dla niego zmienną klasy CString - m_zwrot. Na formie musimy jeszcze dodać
przycisk wywołujący nasze okienko - dodaj go więc - identyfikator zostaw taki
jak jest - zmień tylko  etykietę (Caption) na Pokaż.


Pierwsza
forma załatwiona - teraz musimy stworzyć drugą. Aby to zrobić w obszarze
roboczym (już nie przypominam gdzie to jest !) odnajdź katalog Dialog. Teraz
kliknij na nim prawym klawiszem myszki i z menu wybierz Insert Dialog. OK -
teraz Twoim oczom ukazała się 2 forma. Nie usuwaj z niej żadnych obiektów -
skoro to ma być okienko to musi posiadać przyciski OK i Cancel. Na tej formie
umieść teraz textbox-a oraz checkBox-a. Zmień ID textboxa na IDC_TEXTPOLE, a
CheckBox-a na IDC_WYBOR oraz Etykietę na Wybór.


Teraz
musimy stworzyć zmienne - w tym celu wybieramy ClassWizard-a. Ale co to ?
Wyskoczyło jakieś okienko ! Tutaj VC++ wykrył, że nasze obiekty leżą na
innej formie i proponuje nam stworzenie nowej klasy - a więc klikamy na OK.
Teraz wyskoczy drugie okno (dialogowe !). Jako nazwę klasy wpisujemy:
CWiadomoscDlg. Upewniamy się jeszcze czy klasą bazową jest CDialog i klikamy
na OK. Teraz już możemy dodać zmienne - dla IDC_TEXTPOLE dajemy zmienną o
nazwie m_poleedit, a dla IDC_WYBOR - m_wybor. Możemy już zamknąć
ClassWizarda klikając na OK.


Przed
zrobieniem czegokolwiek musimy poinformować nasz program o istnieniu nowego
okna. Pamiętasz jak na poprzedniej lekcji informowaliśmy kompilator o nowej
funkcji ? Teraz zrobimy identycznie ! Tyle tylko, że tera informujemy o nowym
oknie. Tak więc w obszarze roboczym przechodzimy do zakładki Files, potem do
folderu Source Files i otwieramy plik OkienkoDlg.h. Prawdopodobnie znaleźliśmy
się już przy dyrektywach #include. UWAGA ! W tym wypadku nie dopiszemy nowej
dyrektywy na końcu tylko nad #include OkienkoDlg.h .


Dlaczego
tak musimy zrobić ! Otóż w naszym głównym programie będziemy stosować
zmienne które znajdują się w tym małym okienku. Tak więc kompilator
sprawdzając poprawność najpierw otworzy duże okno - znajdzie
niezadeklarowane zmienne (bo one znajdują się w małym okienku) i zwróci błąd.
Jeśli to zrobimy tak jak napisałem to kompilator najpierw sprawdzi małe
okienko, potem duże (ale już w tym momencie wie, że jakieś inne okienko te
zmienne stworzyło).


Tak więc
nasze dyrektywy powinny wyglądać tak:


// OkienkoDlg.cpp : implementation file

//



#include "stdafx.h"

#include "Okienko.h"

#include "WiadomoscDlg.h"    //    
<- Nowe !!!!!!!!!

#include "OkienkoDlg.h"



#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif



/////////////////////////////////////////////////////////////////////////////

// CAboutDlg dialog used for App About


I w ten
oto sposób program już wie, że jakieś tam okienko istnieje. Dla każdego
obiektu tworzyliśmy ClassWizardem zmienne - niestety dla okienka jest to niemożliwe
- zmienną musimy stworzyć ręcznie. W obszarze roboczym przechodzimy do zakłądki
ClassView - rozwijamy listę, teraz kliknij prawym klawiszem myszki na
COkienkoDlg i z powstałego menu wybierz Add Member Variable - czyli dodaj
zmienną. Jako typ wpisz po prostu nazwę klasy czyli CWiadomoscDlg, a zmienną
nazwij okienko.


Teraz
przechodzimy do głównej formy - tam do przycisku Pokaż dodajemy zdarzenie
kliknięcia i następujący kod:


CString zaz;

CString pole;

if (okienko.DoModal( ) == IDOK)

{



if (okienko.m_wybor == FALSE)

{

zaz = "nie był zaznaczony";

}

else

{

zaz = "był zaznaczony";

}



pole = okienko.m_poleedit;



m_zwrot.Format("W pole wpisałeś: \n\n%s \n\ni CheckBox %s",pole, zaz);

UpdateData(FALSE);

}


okienko.DoModal( ) ma za zadanie wyświetlić okienko - my użyliśmy tego
wraz z if do sprawdzenia czy wybrałeś OK. Potem sprawdzamy czy w okienku
ChcecBox był zaznaczony i tworzymy odpowiednie odpowiedzi. Potem kopiujemy
zawartość TextBoxa do zmiennej pole. A tu Ciekawe formatowanie - dostregłeś
pewnie \n  - są to sekwencje ucieczki - a przełącznik \n przenosi nas do
następnej linii. Oto krótki przykładzik:


m_zwrot.Format("Dziś uczę się C++ z kursu SLASH-a. Ciekawe jak
wyjdzie mi ten przykład");


Ta funkcja w pole static wisze coś takiego:


Dziś uczę się C++ z kursu SLASH-a. Ciekawe jak wyjdzie mi ten przykład


A teraz z sekwencją ucieczki \n:


m_zwrot.Format("Dziś uczę się C++ z kursu SLASH-a. \nCiekawe jak
wyjdzie mi ten przykład");


Spowoduje to wyświetlenie czegoś takiego:


Dziś uczę się C++ z kursu SLASH-a.

Ciekawe jak wyjdzie mi ten przykład


Mogą Cię trochę zmylić łączenia ze stringiem - np. coś takiego \nc 
-  nie jest to żadna sekwencja \nc - tylko \n i zaraz po tym (bez spacji)
literka c.


U mnie programik wygląda tak:



To jest małe okienko:



A to duże:



Jak widzicie programy robię na żywo - więc kod
jest dobry - jeśli coś
nie wyszło tzn, że coś spartoliłeś - kompilator zawsze zwraca komunikaty błędów
- pewnie zapomniałeś gdzieś ; albo przekręciłeś literki...


Dziś odwaliliśmy kawał dobrej roboty - na następnej lekcji zajmiemy się
pętlami...



Pamiętaj
! Jeśli masz jakikolwiek problem ze zrozumieniem tego kursu to napisz do mnie -
na każdego maila odpisuję chętnie. Także wszelkie opinie, zażalenia itp.
kieruj na mój adres - chcę wiedzieć czy ten kurs Wam się podoba czy też nie


Adres -

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • teen-mushing.xlx.pl
  • Wątki
    Powered by wordpress | Theme: simpletex | © Lemur zaprasza