1 / 14

Pranešimų ciklo architektūra

Pranešimų ciklo architektūra. WinMain. Programuojant Windows aplinkoje yra tam tikrų skirtumų. Pavyzdžiui, nėra main() funkcijos. Bet vietoj jos yra funkcija _tWinMain() ! Ji apibrėžiama antraštiniame faile <tchar.h> taip:. Parametrai.

collin
Télécharger la présentation

Pranešimų ciklo architektūra

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Pranešimų ciklo architektūra

  2. WinMain • Programuojant Windows aplinkoje yra tam tikrų skirtumų. Pavyzdžiui, nėra main() funkcijos. Bet vietoj jos yra funkcija _tWinMain() ! • Ji apibrėžiama antraštiniame faile <tchar.h> taip:

  3. Parametrai • hThisInstance – dabartinės programos identifikatorius • hPrevInstance – anksčiau veikusios tos pačios programos versijos identifikatorius. Vis dėlto, NT tipo sistemose jis yra NULL • lpszArgument – argc ir argv kintamųjų atitikmuo (nevektorinis) • iCmdShow – nurodo ar programos grafinė sąsaja turi būti rodoma iš karto ar programa turi veikti suskleistu (minimized) režimu.

  4. Atliekami darbai • Užregistuoti klases, naudojamas programos • Sukurti prgramos naudojamus Langus • Paleisti pranešimų ciklą

  5. Langų klasių registravimas Kiekviena grafinė detalė yra “langas”. Tai reiškia, kad turi egzistuoti “Lango klasė” su didelėmis pasirinkimo galimybėmis. Taigi: • Užpildome WNDCLASS duomenų objekto laukus • Perduodame WNDCLASS objektą RegisterClass funkcijai

  6. WNDCLASSEX Egzistuoja išplėstinė (extended) procedūros WNDCLASS versija – WNDCLASSEX, kurią reikia perduoti funkcijai RegisterClassEx. Užregistravus klasę galime sėkmingai panaikinti WNDCLASS struktūrą, nes jos daugiau nebereikės.

  7. Kuriant langus Langus galima sukurti su funkcijomis CreateWindow arba CreateWindowEx. Šios funkcijos grąžina HWND objektą. Šis objektas, norint, kad langas būtų nupieštas ekrane, perduodamas funkcijai ShowWindow.

  8. Pranešimų ciklas • Sukūrus langą toliau jis bendraus su sistema pranešimų (messages) pagalba. T.y. Sistema siųs pranešimą langui ir langas siųs pranešimą atgal. • Pranešimai siunčiami MSG duomenų tipo forma. Šis objektas perduodamas funkcijai GetMessage(), kuri skaito pranešimą iš pranešimų eilės arba laukia naujo pranešimo. Nuskaitytas pranešimas siunčiamas funkcijai TranslateMessage (paprastoms užduotims) ir DispatchMessage (apdorojimui).

  9. Lango procedūra • Šia procedūrą galima vadinti kaip norint, bet jos prototipas būtų toks: • LRESULT – daugybinis 32 bitų rezultatats • fwnd – lango identifikatorius • msg – pranešimas • xPARAM – pranešimo parametrai

  10. Pavyzdys • WM_KEYDOWN – msg pranešimas, kad nuspaustas klaviatūros klavišas. Tuomet: • WPARAM saugos klavišo reikšmę, pavyzdžiui, raidę “A” • LPARAM saugos komandinių klavišų reikšmes, t.y. ar nuspausti klavišai CTRL, ALT, SHIFT ir ar nėra aktyvuota pasikartojimo funkcija.

  11. Makrokomandos • Yra apibrėžtos keletas makrokomandų naudojamų darbui su parametrais: • LOWORD(x) – grąžina pirmuosius 16 iš 32 bitų • HIWORD(x) – grąžina sekančius 16 iš 32 bitų • LOBYTE(x) – grąžina pirmuosius 8 iš 16 bitus • HIBYTE(x) – grąžina sekančius 8 iš 16 bitus Pavyzdžiui, jei reikia 2 baito iš wParam lauko: HIBYTE(LOWORD(wParam));

  12. Pranešimai • WM_CREATE – sukurti langą • WM_PAINT – perpiešti langą • WM_COMMAND – vartotojo veiksmas • WM_CLOSE – pagal nutylėjimą, ši komanda perduodama procedūrai DefWindowProc, kuri generuoja komandą WM_DESTROY

More Related