1. feladat. Szabóné Nacsa Rozália

Hasonló dokumentumok
Eseményvezérelt alkalmazások

ADATBÁZISKEZELÉS KÖZVETLEN ELÉRÉSSEL II...2

SDI ALKALMAZÁS I. Workspace / ResourceView / Toolbar / IDR_MAINFRAME. Workspace / ResourceView / Menu / IDR_MAINFRAME

Adatbázis-kezelés ActiveX vezérl kkel 2.rész

Adatbázis-kezelés ODBC driverrel

Adatbázis-kezelés API hívásokkal. Adatbázis-kezelés ODBC-vel. Adatbázis-kezelés SQL parancsokkal. Adatbázis-kezelés ODBC-vel.

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Adatbázis-kezelés ActiveX vezérl kkel

Adatbázis-kezelés ODBC-vel

Elemi alkalmazások fejlesztése III

Java Programozás 5. Gy: Java alapok. Adatkezelő 1.rész

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

Szabóné Nacsa Rozália. Feladat. Készítsünk el egy üres FormView alapú alkalmazást és építsünk köré egy súgó környezetet.

Széchenyi István Egyetem

Szoftvertechnológia alapjai Java előadások

BASH SCRIPT SHELL JEGYZETEK

Szoftvertervezés és -fejlesztés I.

Programozás II. ATM példa Dr. Iványi Péter

Objektumorientált programozás C# nyelven

A feladat lényege egy felhasználói típusnak a zsák típusnak a megvalósítása.

infix kifejezés a+b ab+ +ab postfix kifejezés prefix kifejezés a+b ab+ +ab a+b ab+ +ab Készítette: Szabóné Nacsa Rozália

SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelés ActiveX vezérlıkkel - 1

Alap számológép alkalmazás

Programozási technológia

C#, OOP. Osztályok tervezése C#-ban

Maximum kiválasztás tömbben

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

Java Programozás 1. Gy: Java alapok. Ismétlés ++

A lista eleme. mutató rész. adat rész. Listaelem létrehozása. Node Deklarálás. Létrehozás. Az elemet nekünk kell bef zni a listába

OOP. #6 (VMT és DMT) v :33:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

Felhasználói útmutató ügyfélkapuhoz

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Osztály és objektum fogalma

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

3. Az országos mérés-értékelés eredményei, évenként feltüntetve

Swing GUI készítése NetBeans IDE segítségével

Java Programozás 8. Gy: Java alapok. Adatkezelő 4.rész

C#---Access adatbáziskezelési gyakorlat

Pénzügyi algoritmusok

Elemi alkalmazások fejlesztése III. A Qt assistant elindítása. Ajánlott ir odalom. A Qt assistant nyitó ablaka

Bevezetés a programozásba I.

Adatbázisok webalkalmazásokban

Java Programozás 7. Gy: Java alapok. Adatkezelő 3.rész

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Delphi programozás III.

Java programozási nyelv 6. rész Java a gyakorlatban

ReszlAd fájl, kitöltési útmutató:

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

munkafüzet open eseményéhez

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

3. Osztályok II. Programozás II

Hogyan használja az OROS online pótalkatrész jegyzéket?

Objektumorientált programozás C# nyelven III.

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

A Java nyelv. Dialógus ablakok. Elek Tibor

1. Írjunk programot mely beolvas két egész számot és kinyomtatja az összegüket.

Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése

3D-s technológiák a játékfejlesztésben UDK bevezetés

Az SQL adatbázisnyelv: DML

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

M-Fájlok létrehozása MATLAB-ban

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

AWK programozás, minták, vezérlési szerkezetek

LabVIEW példák és bemutatók KÉSZÍTETTE: DR. FÜVESI VIKTOR

Számítógépes grafika

Informatika terméktervezőknek

WS-Pro WPX38 MD+ PROGRAMOZÓI KÓDOK ÖSSZESÍTÉSE

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

BME MOGI Gépészeti informatika 8.

SQLTools in 5 steps ver. 0.1

1. Alapok. #!/bin/bash

7. Előadás. Makrók alkalmazása. Salamon Júlia. Előadás I. éves mérnök hallgatók számára

AWK programozás, minták, vezérlési szerkezetek

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

/* Az iter függvény meghívása és a visszatérő érték átadása a gyok változóba */ gyok = iter( n, a, e ) ;

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

Adatbázis rendszerek SQL nyomkövetés

ZH mintapélda. Feladat. Felület

HVK Adminisztrátori használati útmutató

A számok kiírása is alapvetően karakterek kiírásán alapul, azonban figyelembe kell venni, hogy a számjegyeket, mint karaktereket kell kiírni.

Madarassy László, mérnök, BME - Mobil Innovációs Központ. lmadarassy@mik.bme.hu

Programozás C++ -ban 2007/7

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

4. Laborgyakorlat. A fájlokról ezeket az adatokat, a fájlrendszer tárolja. Számunkra az 1, 3, 4. oszlopok lesznek az érdekesek.

A C# programozási nyelv alapjai

Üdvözöljük a Learnship rendszerében

értékel függvény: rátermettségi függvény (tness function)

Grafikus felhasználói felület (GUI) létrehozása A GUI jelentése Egy egyszerű GUI mintaalkalmazás létrehozása

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

BME MOGI Gépészeti informatika 4.

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Bevezetés a programozásba 2

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

ÉRZÉKELŐK ÉS BEAVATKOZÓK I. GY1.1 SENSACT0 PÉLDAPROGRAM

Sorosítás (szerializáció) és helyreállítás. 1. Bináris sorosítás és helyreállítás Szükséges névterek Attribútumok. 1.3.

Átírás:

1. feladat Készítsünk programot kisdiákoknak összeadás gyakorlására. Legyenek az operandusok 0-10 véletlen számok. Az = jel utáni szövegdobozban a kisdiáknak kell begépelni a megoldást. Az Értékelés gomb lenyomása után a program ellen rizze a megoldás helyességét. A Következ gomb lenyomásával a program adjon új feladatot. Szabóné Nacsa Rozália nacsa@inf.elte.hu 1

IDC_OP1_EDIT A szürkével jelölt elemekkel az el z el adás anyagában foglalkoztunk. IDC_OP2_EDIT IDC_EREDMENY_EDIT ID: IDC_ERTEKELES_BUTTON Változó: nincs Üzenet: BN_CLICKED Metódus: OnErtekelesButton(); ID:IDC_KOVETKEZO_BUTTON Változó: nincs Üzenet: BN_CLICKED Metódus: OnKovetkezoButton(); ID: IDC_UZENET Változó: m_uzenet Üzenet: nincs Metódus: nincs Vezérl k változók - üzenetek Fejlesszük/módosítsuk tovább az el z óra Szamol alkalmazását. 2

Számol gomb törlése Töröljük le a Számol gombot a dialógusablakról Vezérl törlése 1. Eseménykezel törlése az osztályvarázsló nyilvántartásából. 2. Eseménykezel törlése a programból szövegszerkesztéssel. 3. Párbeszédelem törlése a párbeszédpanelr l A fenti lépéseket ebben a sorrendben kell végrehajtani!!! 3

1. Eseménykezel törlése a nyilvántartásból 1 2 3 5 4 6 Nincs aktív eseménykezel 4

Az osztályban már nem szerepel az OnSzamolButton(); A programkódból nekünk kell törölni a metódust!!! szövegszerkesztés 2. Eseménykezel törlése a programból szövegszerkesztéssel Csak a nyilvántartásból kivett kódrészeket töröljük. 5

3. Párbeszédelem törlése a párbeszédpanelr l DELETE Az operandusok legyenek véletlenszámok CSzamolDlg::CSzamolDlg(CWnd* pparent /*=NULL*/) : CDialog(CSzamolDlg::IDD, pparent) m_op1 = rand()*10/rand_max; m_op2 = rand()*10/rand_max; m_eredmeny=0; Részlet! 6

Tegyük fel az Értékelés gombot! Tegyük fel az üzenetet tartalmazó Text box-ot! 7

Tegyük fel a Következ gombot. Rendeljünk változót az üzenethez! 1 2 3 5 4 6 7 8 8

1 2 3 6 4 5 OnErtekelesButton(); Osztályvarázslóval (!) készítsük el az Értékelés gomb üres eseménykezel jét. void CSzamolDlg::OnErtekelesButton() // TODO: Add your control notification handler code here Töltsük ki az OnErtekelesButton() üres metódusát. SzamolDlg.cpp UpdateData(); //Feltöltés a vezérl kb l. if(m_eredmeny = = m_op1 + m_op2) m_uzenet = "Helyes"; else m_uzenet = "Hibás!"; UpdateData(FALSE); //Kiírás a vezérl kbe Ne feledkezzünk meg a vezérl és a változók közötti ADATCSERÉR L!! 9

1 2 3 6 4 5 OnKovetkezoButton(); Az osztályvarázslóval készítsük el a Következ gomb üres eseménykezel jét. Töltsük ki az OnKovetkezoButton() üres metódusát. SzamolDlg.cpp void CSzamolDlg::OnKovetkezoButton() // TODO: Add your control notification handler code here m_uzenet = ; m_op1 = rand()*10/rand_max; m_op2 = rand()*10/rand_max; m_eredmeny=0; UpdateData(FALSE); Ne feledkezzünk meg a vezérl és a változók közötti ADATCSERÉR L!! 10

Fordítás - Futtatás! 2. feladat - folytatás Készítsük listát a megoldott számolásokról. A listában jelöljük meg a helyes/hibás megoldásokat. 11

Szedjük le az üzenet komponenst és tegyünk fel egy list box vezérl elemet. IDC_LISTBOX Ne legyen rendezett a lista 1 2 3 5 4 6 7 8! Rendeljünk változót a listához 12

Metódus megkeresése az MSDN-ben Keressünk a CListBox osztályban egy olyan metódust, amely használható a lista b vítésére! 13

Az Értékelés gomb lenyomásakor b vítsük a listát. ID: IDC_LISTBOX Változó: CListBox m_listbox Üzenet: nincs Metódus: nincs ListBox b vítése: CListBox m_listbox; m_listbox.addstring(. ); SzamolDlg.cpp String el készítése void CSzamolDlg::OnErtekelesButton() // TODO: Add your control notification handler code here UpdateData(); //m_eredmeny feltöltése a vezérl b l. CString st; st.format("%d + %d = %d",m_op1,m_op2,m_eredmeny); if(m_eredmeny == m_op1 + m_op2) st = st + " Helyes"; else st = st + " Hibás"; m_listbox.addstring(st); //String hozzácsatolása a listához UpdateData(FALSE); //Kiírás a vezérl be String hozzácsatolása 14

Fordítás - Futtatás! 3. Feladat Történjen meg az értékelés a Következ gomb lenyomásakor Vonjuk össze a két gomb feladatát. 15

1 4 2 3 5 6 Szedjük ki az Értékelés gomb üzenetkezel jét az osztályvarázsló nyilvántartásából. void CSzamolDlg::OnErtekelesButton() // TODO: Add your control notification handler code here UpdateData(); //m_eredmeny feltöltése a vezérl b l. CString st; st.format("%d + %d = %d",m_op1,m_op2,m_eredmeny); if(m_eredmeny == m_op1 + m_op2) st = st + " Helyes"; else st = st + " Hibás"; m_listbox.addstring(st); //String hozzácsatolása a listához UpdateData(FALSE); //Kiírás a vezérl be void CSzamolDlg::OnKovetkezoButton() // TODO: Add your control notification handler code here m_uzenet = ; m_op1 = rand()*10/rand_max; m_op2 = rand()*10/rand_max; m_eredmeny=0; UpdateData(FALSE); Az Értékelés kódját átmásoljuk az OnKovetkezoButton() metódusba,majd töröljük az OnErtekelesButton() metódust. 16

Végül töröljük az Értékelés gombot. Fordítás - Futtatás! 17

4. feladat - folytatás Ne lehessen átírni az operandusokat. Ne lehessen az operandusokat megváltoztatni. 18

Ne lehessen az Op1vezérl t megváltoztatni. Object ID: IDC_OP1_EDIT Message: EN_CHANGE Metódus: OnChangeOp1Edit() IDC_OP1_EDIT Készítsük el az IDC_OP1_EDIT vezérl EN_CHANGE üzenetét kezel üres metódusát. 1 2 3 5 4 19

Módosítsuk az üzenetkezel metódust a feladat szerint. Object ID: IDC_OP1_EDIT Message: EN_CHANGE Metódus: OnChangeOp1Edit() SzamolDlg.cpp void CSzamolDlg::OnChangeOp1Edit() // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() // function and call CRichEditCtrl().SetEventMask() // with the ENM_CHANGE flag ORed into the mask. // TODO: Add your control notification handler code here UpdateData(FALSE); // Visszairja a változó értékét a vezérl be Saját metódus bevezetése CSzamolDlg::CSzamolDlg(CWnd* pparent /*=NULL*/) : CDialog(CSzamolDlg::IDD, pparent) m_op1 = rand()*10/rand_max; m_op2 = rand()*10/rand_max; m_eredmeny=0; void CSzamolDlg::OnKovetkezoButton() m_uzenet = ; CreateNextTask(); m_op1 = rand()*10/rand_max; m_op2 = rand()*10/rand_max; m_eredmeny=0; UpdateData(FALSE); 20

ClassWizardBar Kézzel beírjuk a szükséges kódot. m_op1 = rand()*10/rand_max; m_op2 = rand()*10/rand_max; m_eredmeny=0; 21

Fordítás - Futtatás! 5. feladat - folytatás Tegyük lehet vé mind a négy alapm velet gyakorlását. + - * : 22

Választás Tegyünk fel egy Radio gombot 23

Properties Csoport formázása, igazítása Tegyük fel mind a négy m veletet és formázgassuk meg. 24

Layout menü Foglaljuk csoportba a m veleteket Ezzel csak bekereteztük a négy elemet. Látványelem 25

Group properties Group Group Csoport els eleme Csoport utolsó eleme utáni elem A properties -ben tudjuk beállítani a Group kapcsolót. Közös változó, közös metódus m_melyikmuvelet OnOsszeadOption(); OnKivonOption(); OnSzorozOption(); OnChangeMuveletOption(); OnOsztOption(); 26

Rendeljünk közös változót a csoporthoz! m_melyikmuvelet 0 1 2 3 összeadás kivonás szorzás osztás Group IDC_OSSZADAS_EDIT m_melyikmuvelet Group m_melyikmuvelet 0 1 2 3 összeadás kivonás szorzás osztás 27

View/Resource Symbols 0 1 2 3 m_melyikmuvelet Name IDC_OSSZEAD_BUTTON IDC_KIVON_BUTTON IDC_SZOROZ_BUTTON IDC_OSZT_BUTTON Value 1011 1012 1013 1014 (group) Ha több vezérl t együttesen szeretnénk kezelni, akkor az azonosítójuknak szorosan növekv sorrendben kell lennie. Adjuk meg a változó attribútumát! 1 2 3 5 4 Figyeljük meg, hogy a csoport els eleméhez rendeltük a változót! 6 28

Rendeljünk változót a m veletjelhez! IDC_STATIC_MUVELET Vezérl CString m_muveletjel; Változó SzamolDlg.h Az m_muvelet[4] vektor class CSzamolDlg : public CDialog // Construction public: CString m_muvelet[4]; SzamolDlg.cpp CSzamolDlg::CSzamolDlg(CWnd* pparent /*=NULL*/) : CDialog(CSzamolDlg::IDD, pparent) CreateNextTask(); m_muvelet[0]="+"; m_muvelet[1]="-"; m_muvelet[2]="*"; m_muvelet[3]=":"; Ezt nekünk kell begépelni. m_hicon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 29

Kezd értékek módosítása: m_melyikmuvelet, m_muveletjel CSzamolDlg::CSzamolDlg(CWnd* pparent /*=NULL*/) : CDialog(CSzamolDlg::IDD, pparent) //AFX_DATA_INIT(CSzamolDlg) m_melyikmuvelet = -1; m_muveletjel = _T(""); //AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 CreateNextTask(); Nincs semmi kiválasztva m_melyikmuvelet = 0; m_muveletjel = + ; m_hicon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); CreateNextTask() módosítása void CSzamolDlg::CreateNextTask() m_op1 = rand()*10/rand_max; m_op2 = rand()*10/rand_max; switch(m_melyikmuvelet) case 1: // kivonás m_op1 = m_op1 + m_op2; break; case 3: // Osztás while(m_op1==0) m_op1 = rand()*10/rand_max; while(m_op2==0) m_op2 = rand()*10/rand_max; m_op1 = m_op1*m_op2; break; m_eredmeny = 0; 30

Több esemény együttes kezelése void CSzamolDlg::OnOsszeadOption() UpdateData(); m_muveletjel = m_muvelet[m_melyikmuvelet]; CreateNextTask(); UpdateData(FALSE); void CSzamolDlg::OnKivonOption() UpdateData(); m_muveletjel = m_muvelet[m_melyikmuvelet]; CreateNextTask(); UpdateData(FALSE); void CSzamolDlg::OnSzorozOption() UpdateData(); m_muveletjel = m_muvelet[m_melyikmuvelet]; CreateNextTask(); UpdateData(FALSE); void CSzamolDlg::OnOsztOption() UpdateData(); m_muveletjel = m_muvelet[m_melyikmuvelet]; CreateNextTask(); UpdateData(FALSE); afx_msg void CSzamolDlg::OnChangeMuveletOption() UpdateData(); m_muveletjel = m_muvelet[m_melyikmuvelet]; CreateNextTask(); UpdateData(FALSE); Az eseménykezel k lel helyei // Generated message map functions //AFX_MSG(CSzamolDlg) afx_msg void OnVegeButton(); afx_msg void OnKovetkezoButton(); afx_msg void OnChangeOp2Edit(); afx_msg void OnChangeOp1Edit(); //AFX_MSG Saját eseménykezel DECLARE_MESSAGE_MAP() k helye SzamolDlg.h Itt mondjuk meg, hogy milyen eseménykezel ink vannak. BEGIN_MESSAGE_MAP(CSzamolDlg, CDialog) //AFX_MSG_MAP(CSzamolDlg) SzamolDlg.cpp ON_BN_CLICKED(IDC_VEGE_BUTTON, OnVegeButton) ON_BN_CLICKED(IDC_KOVETKEZO_BUTTON, OnKovetkezoButton) ON_EN_CHANGE(IDC_OP2_EDIT, OnChangeOp2Edit) ON_EN_CHANGE(IDC_OP1_EDIT, OnChangeOp1Edit) //AFX_MSG_MAP Saját eseménykezel k helye END_MESSAGE_MAP() Itt kapcsoljuk össze az eseményt és a megfelel eseménykezel t. 31

ON_BN_CLICKED ON_CONTROL_RANGE ON_BN_CLICKED ON_BN_CLICKED ON_BN_CLICKED ON_BN_CLICKED (IDC_OSSZEAD_OPTION, OnOsszeadOption) (IDC_KIVON_OPTION, OnKivonOption) (IDC_SZOROZ_OPTION, OnSzorozOption) (IDC_OSZT_OPTION, OnOsztOption) ON_CONTROL_RANGE ( BN_CLICKED, IDC_OSSZEAD_OPTION, IDC_OSZT_OPTION, OnChangeMuveletOption ) Négy esemény Vezérl : IDC_OSSZEAD_OPTION - tól IDC_OSZT_OPTION - ig Esemény: BN_CLICKED Eseménykezel : OnChangeMuveletOption() Több esemény összefogása - kódolás // Generated message map functions //AFX_MSG(CSzamolDlg) afx_msg void OnChangeOp1Edit(); afx_msg void OnChangeOp2Edit(); //AFX_MSG afx_msg void OnChangeMuveletOption(UINT nid); DECLARE_MESSAGE_MAP() SzamolDlg.h 1 BEGIN_MESSAGE_MAP(CSzamolDlg, CDialog) SzamolDlg.cpp //AFX_MSG_MAP(CSzamolDlg) //AFX_MSG_MAP ON_CONTROL_RANGE(BN_CLICKED, IDC_OSSZEAD_OPTION, IDC_OSZT_OPTION, OnChangeMuveletOption) END_MESSAGE_MAP() 2 afx_msg void OnChangeMuveletOption(UINT nid) UpdateData(); m_muveletjel = m_muvelet[m_melyikmuvelet]; CreateNextTask(); UpdateData(FALSE); SzamolDlg.cpp 3 32

Fordítás - Futtatás! 6. feladat - folytatás A dialógusablak címsora változzon a m veletekkel együtt. M veletváltásnál figyelmeztessen hangjelzés az új m veletre. 33

// Construction public: CString m_muvelet[4]; CString m_cim[4]; CSzamolDlg(CWnd* pparent = NULL); // standard constructor SzamolDlg.h 1 CSzamolDlg::CSzamolDlg(CWnd* pparent /*=NULL*/) : CDialog(CSzamolDlg::IDD, pparent) m_cim[0]="összadás gyakorlása"; m_cim[1]="kivonás gyakorlása"; m_cim[2]="szorzás gyakorlása"; m_cim[3]="osztás gyakorlása"; SzamolDlg.cpp 2 afx_msg void CSzamolDlg::OnChangeMuveletOption(UINT nid) SzamolDlg.cpp UpdateData(); m_muveletjel = m_muvelet[m_melyikmuvelet]; 3 CreateNextTask(); UpdateData(FALSE); AfxGetMainWnd()->SetWindowText("Számolási gyakorlatok - " + m_cim[m_melyikmuvelet]); Hang: Winmm.lib könyvtár csatolása 34

Hang effektus meghívása #include "Szamol.h" #include "SzamolDlg.h" #include "mmsystem.h" SzamolDlg.cpp afx_msg void CSzamolDlg::OnChangeMuveletOption(UINT nid) SzamolDlg.cpp UpdateData(); m_muveletjel = m_muvelet[m_melyikmuvelet]; CreateNextTask(); UpdateData(FALSE); AfxGetMainWnd()->SetWindowText("Számolási gyakorlatok - " + m_cim[m_melyikmuvelet]); sndplaysound("ding.wav",snd_async); 35

7. feladat - folytatás Készítsünk számjegy gombokat az eredmény bevitelére. Itt is legyen egy Következ gomb. 36

0 számjegy Properties Tegyük fel az összes számjegygombot és a kis Köv gombot. Control ID IDC_DIGIT_0 Group igen Style Push like Member int m_melyikdigit; IDC_DIGIT_1 nem Push like nincs IDC_DIGIT_9 nem Push like nincs 37

Kov gomb Properties ID: IDC_KOV_BUTTON Esemény: BN_CLICKED Változó: nincs Eseménykezel : OnKovetkezoButton(); Esemény dupla gombbal - kódolás // Generated message map functions //AFX_MSG(CSzamolDlg) afx_msg void OnVegeButton(); afx_msg void OnKovetkezoButton(); afx_msg void OnChangeOp1Edit(); afx_msg void OnChangeOp2Edit(); //AFX_MSG afx_msg void OnChangeMuveletOption(UINT nid); DECLARE_MESSAGE_MAP() SzamolDlg.h Már létezik az az eseménykezel, amit a Köv gombhoz fogunk rendelni. BEGIN_MESSAGE_MAP(CSzamolDlg, CDialog) //AFX_MSG_MAP(CSzamolDlg) SzamolDlg.cpp ON_BN_CLICKED(IDC_VEGE_BUTTON, OnVegeButton) ON_BN_CLICKED(IDC_KOVETKEZO_BUTTON, OnKovetkezoButton) //AFX_MSG_MAP ON_CONTROL_RANGE(BN_CLICKED, IDC_OSSZEAD_OPTION, IDC_OSZT_OPTION, OnChangeMuveletOption) Csak az összerendelést kell megadni. ON_BN_CLICKED(IDC_KOV_BUTTON, OnKovetkezoButton) END_MESSAGE_MAP() 38

Ellen rizzük, hogy a számjegyek ID-je szorosan növekv sorrendben van-e. View/Resource Symbols... A számjegyeket CSOPORTOSAN szeretnénk kezelni. Ha szükséges, módosítsuk. Számjegygombok együttes kezelése Properties: Group ID: IDC_DIGIT_0 (Group) Esemény: BN_CLICKED Változó: m_melyikdigit Eseménykezel : OnDigitClicked(); Nem generált metódus Properties: Group 39

Számjegy gombok összefogása - kódolás // Generated message map functions //AFX_MSG(CSzamolDlg) afx_msg void OnChangeOp2Edit(); //AFX_MSG afx_msg void OnChangeMuveletOption(UINT nid); afx_msg void OnDigitClicked(UINT nid); DECLARE_MESSAGE_MAP() 1 SzamolDlg.h BEGIN_MESSAGE_MAP(CSzamolDlg, CDialog) //AFX_MSG_MAP(CSzamolDlg) //AFX_MSG_MAP ON_CONTROL_RANGE(BN_CLICKED, IDC_OSSZEAD_OPTION, IDC_OSZT_OPTION, OnChangeMuveletOption) ON_BN_CLICKED(IDC_KOV_BUTTON, OnKovetkezoButton) ON_CONTROL_RANGE(BN_CLICKED, IDC_DIGIT_0, IDC_DIGIT_9, OnDigitClicked) END_MESSAGE_MAP() afx_msg void CSzamolDlg::OnDigitClicked(UINT nid) UpdateData(); // Beolvas a vezérl kb l if (m_melyikdigit!= -1) m_eredmeny = m_eredmeny * 10 + m_melyikdigit; m_melyikdigit = -1; UpdateData(FALSE); 2 SzamolDlg.cpp SzamolDlg.cpp 3 40