Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
C/C++
Učime se Win API - 22.
winapi_logo
6. června 2002, 00.00 | V tomto pokračování si ukážeme něco málo ze základů práce se soubory. Naučíme
se použít standardní dialog pro otevření souboru a dále si ukážeme ten
nejjednodušší způsob načtení textu ze souboru do nějakého editačního prvku.
V tomto pokračování si ukážeme něco málo ze základů práce se soubory. Naučíme se použít standardní dialog pro otevření souboru a dále si ukážeme ten nejjednodušší způsob načtení souboru (textu) například do víceřádkového editačního pole. Výsledek dnešního ukázkového příkladu vidíte na obrázku:
K vyvolání standardního systémového dialogu pro otevření (nebo uložení) souboru složí funkce GetOpenFileName:
|
Jak je vidět, veškeré parametry funkce jsou ve struktuře OPENFILENAME:
|
Prozatím se nebudeme zabývat podrobnějším vysvětlením všech prvků této struktury. Nejlépe si ukázat jednoduchý příklad. Důležité je pamatovat na "vynulování" struktury před plněním jednotlivých prvků, abychom ty které nás nezajímají, mohli ignorovat a měli jistotu, že jsou "nulové". Dále je nutné runě naplnit prvek lStructSize na velikost struktury (pomocí sizeof). Nyní již k příkladu. V dnešní ukázce je aplikace založená na dialogu se 2 edit-boxy, z nichž do jednoho vypíšeme plný název vybraného souboru, do druhého (víceřádkového) pak obsah tohoto (textového) souboru. Dialog otevření souboru vyvoláme na talčítko "Vybrat soubor" (IDC_OPEN_FILE). Pro vybrání souboru si vytvoříme následující funkci:
|
Pokud uživatel stiskne tlačítko "OK", funkce zkopíruje plný název vybraného souboru do parametru lpFile.
Nyní tedy máme jméno souboru a můžeme přistoupit k jeho otevření a načtení. Pro otevření (nebo vytvoření nového) souboru se používá funkce CreateFile:
|
Podrobněji se k této funkci a jejím možnostem vrátíme později, zde si ukážeme ten nejjednodušší způsob použití pro otevření existujícího souboru. Funkce vrátí handle otevřeného souboru nebo v případě neúspěchu hodnotu INVALID_HANDLE_VALUE. Podívejme se nyní na celou vlastní funkci, která načte zadaný soubor a jeho obsah nastaví jako text okna zadaného jako parametr:
|
Jak je zřejmé, celý obsah souboru načítáme v jednom čtení. Musíme tedy nejprve zjistit velikost souboru pomocí funkce GetFileSize. Buffer si naalokujeme na tuto velikost plus jeden byte navíc pro uložení nulového znaku ukončujícího řetězec, neboť k tomuto bufferu budeme přistupovat jako k céčkovskému řetězci, použijeme ho jako parametr funkce SetWindowText. Pro alokaci bufferu by samozřejmě bylo možné použít standardní céčkovské funkce malloc/free. Na tomto příkladě jsem ale také ukázal jednoduchý způsob alokace paměti pomocí Win32 funkcí, konkrétně HeapAlloc/HeapFree. Vlastní načtení souboru pak provádíme funkcí ReadFile:
|
Tato funkce nám vrátí logickou hodnotu indikující úspěch načtení a současně naplní parametr lpNumberOfBytesRead počtem skutečně načtených bytů, který může být menší než počet bytů požadovaných, pokud například narazíme na konec souboru.
Zde je ke stažení doprovodný projekt win_api_22.zip (17 kB).
Obsah seriálu (více o seriálu):
- Učíme se Win API - motivační úvod
- Učíme se WinAPI - Začínáme
- Učíme se WinAPI - 3.
- Učíme se Win API - 4.
- Učíme se Win API - 5.
- Učíme se Win API - 6.
- Učíme se Win API - 7.
- Učíme se Win API - 8
- Učíme se Win API - 9.
- Učíme se Win API - 10.
- Učíme se Win API - 11.
- Učíme se Win API - 12.
- Učíme se Win API - 13.
- Učíme se Win API - 14.
- Učíme se Win API - 15.
- Učíme se Win API - 16.
- Učíme se Win API - 17.
- Učime se Win API - 18.
- Učime se Win API - 19.
- Učime se Win API - 20.
- Učime se Win API - 21.
- Učime se Win API - 22.
- Učime se Win API - 23.
- Učime se Win API - 24.
- Učíme se Win API - 25.
- Učíme se Win API - 26.
- Učíme se Win API - 27.
- Učíme se Win API - 28.
- Učíme se Win API - uživatelsky kreslený ListBox
- Učíme se Win API - uživatelsky kreslený ListBox II
- Dialog výběru složky a naplnění ListBoxu soubory
- Vyhledávání souborů - zjištění obsahu složky
- Pracujeme s ComboBoxem ve WinAPI
- Pracujeme s ComboBoxem II.
- Rozšířený prvek ComboBoxEx
- Ovládací prvek TrackBar
- Ovládací prvek Progress Bar
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007