Pisanie na zamówienie Pisanie programów na zamówienie, stron www itp. Kilka programów do sciągnięcia Artykuły na tematy programowania Strona główna

Dialog predefiniowany


Często w różnych programach występuje zakładka, przycisk służące do wybrania pliku, koloru, czy czcionki. Pewnie zauważyliśmy, że większość tych dialogów jest taka sama. Właśnie są to dialogi predefiniowane. Dzięki niemu możemy odebrać np. rodzaj czcionki wybranej przez użytkownika naszego programu wywołując standardowy dialog. Opisze tutaj wymienione dialogi służące do wybrania koloru, czcionki, pliku.
Mamy do dyspozycji klasy:
CColorDialog- operacje związane z wyborem koloru
CFileDialog - operacje związane z zapisywaniem i odczytywaniem
CFontDialog - operacje związane z wyborem czcionki




CColorDialog


Najpierw tworzymy obiekt klasy CColorDialog:
Przykład:
CColorDialog mydlg;

Następnie wywołujemy funkcję DoModal() na rzecz tego obiektu
Przykład:
CColorDialog mydlg;
mydlg.DoModal();

Jeżeli funkcja DoModal() zwróci IDOK możemy odebrać kolor wybrany przez użytkownika dzięki funkcji GetColor().
Przykład:
CColorDialog mydlg; //tworze obiekt .....
if(mydlg.DoModal()==IDOK)
//wywołujemy DoModal()
{
COLORREF kolor=mydlg.GetColor();
//pobieram kolor wybrany
//.............//
//.............//
}



CFileDialog


Konstruktor klasy CFileDialog wygląda następująco:

CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL);

Ważniejsze pola:
BOpenFileDialog - jeżeli zmienna ma wartość TRUE to wywoływany jest dialog do otwierania pliku, a w przeciwnym wypadku wywołany zostanie dialog do zapisu.
LpszFileName - szukany plik(np. autoexec.bat) lub grupa plików (np. *.txt)
LpszFilter - korzystając z tej funkcji możemy także filtrować pokazywane pliki. Można także utworzyć kilka reguł filtrowania. Rozszerzenia i opis pokazywany jest w dolnym polu combo.

Inne pola będziemy wypełniać defaultowymi wartościami.

Przykład utworzenia obiektu klasy CFileDialog:
char sz[] = "Wszystkie Pliki |*.*| Pliki tekstowe |*.txt|"; 

tworzę filtr. Tworzona jest tu tablica znakowa najpierw wpisujemy opis pola czyli np. pliki, następnie wpisujemy znak "|" i po nim wpisujemy filtr np. "*.*", zakańczamy znakiem "|". Powyżej utworzyliśmy 2 filtry pierwszy to wszystkie pliki drugi to pliki tekstowe.


CFileDialog mydlg(true,NULL,"*.*",OFN_HIDEREADONLY|
OFN_OVERWRITEPROMPT,sz,NULL);

Następnie wywołujemy funkcję DoModal na rzecz mydlg.
Przykład:
mydlg.DoModal();

Jeżeli funkcja zwróci nam IDOK to możemy pobrać informacje dotyczące wyboru korzystając z następujących funkcji wywoływanych na rzecz obiektu dialogu:
CString GetPathName( ) - funkcja zwraca pełną ścieżkę do wybranego piku
CString GetFileName( ) - funkcja zwraca nazwę pliku z rozszerzeniem
CString GetFileExt( ) - funkcja zwraca rozszerzenie wybranego pliku
CString GetFileTitle( ) - funkcja zwraca nazwę wybranego pliku bez rozszerzenia
Funkcji tych jest o wiele więcej ale myślę że na początek wystarczy.

Przykład odebrania ścieżki wybranego pliku:

char sz[] = "Wszystkie Pliki |*.*| Pliki tekstowe |*.txt|"; //tworzę filtr

CFileDialog mydlg(true,NULL,"*.*",OFN_HIDEREADONLY|
OFN_OVERWRITEPROMPT,sz,NULL);
// tworze obiekt CFileDialog

if(mydlg.DoModal()==IDOK) //wywołuję DoModal i sprawdzam czy zakończyło się ok
{
CString scie=mydlg.GetPathName();
//pobieram ścieżkę do pliku
//........//
//.........//
}



CFontDialog


Najpierw tworzymy obiekt klasy CFontDialog:
Przykład:
CFontDialog myfont;

Następnie wywołujemy funkcję DoModal() na rzecz tego obiektu
Przykład:
CFontDialog myfont;
myfont.DoModal();

Jeżeli funkcja DoModal() zwróci nam IDOK to możemy pobrać informacje dotyczące wyboru korzystając z następujących funkcji wywoływanych na rzecz obiektu dialogu:
CString GetFaceName( ) - funkcja zwraca nazwę wybranej czcionki
CString GetStyleName( ) - funkcja zwraca styl czcionki
int GetSize( ) - funkcja zwraca wielkość czcionki w punktach
COLORREF GetColor( ) - funkcja zwraca kolor czcionki
Itd....
Jak poprzednio funkcji tych jest więcej ale myślę że te wystarczą na początek jak ktoś będzie potrzebował więcej odsyłam do pomocy visuala.

Przykład odebrania nazwy wybranej czcionki:
CFontDialog myfont; //tworze obiekt CFontDialog
if(myfont.DoModal()==IDOK)
//wywołuje DoModal i sprawdzam czy naciśnięto ok
{
CString nazwa=myfont.GetFaceName();
//pobieram nazwę czcionki wybranej
//.......//
//..........//
}


Autorem tekstu jest: Tomasz Urbaniak

Strona główna | Artykuły na temat programowania | Programy do ściągnięcia | Pisanie programów na zamówienie
Eurohaft - haft komputerowy