Hogy kapom a handlet ?

Hogy kapom a handlet ?
2006-12-07T16:58:29+01:00
2006-12-09T19:27:45+01:00
2022-11-02T14:10:39+01:00
Alonso
Sziasztok !

Adott ez a link :

Microsoft Visual C++/MFC - Windows Controls: The Date Picker

Itt a CMonthCalCtrl *GetMonthCalCtrl() constl;

sornál a futtatáskor hogy adok a mutatónak értéket ?
Mutasd a teljes hozzászólást!
Habár nem ide szántad, de amit adtam, ott ír arról is, hogy a származtatás után nem mindeig jelenik meg az osztály a listában és akkor mit lehet csinálni. (Újra fordítani a CW fájlokat.)
Mutasd a teljes hozzászólást!

  • Ez egy függvény deklarációja, ami mutatót ad vissza. Tehát a visszaadott mutatót értékül adhatod egy mutatónak.

    CMonthCalCtrl *ptr;
    ptr = GetMonthCalCtrl(;
    Mutasd a teljes hozzászólást!
  • Köszi ! És mi céljavan ennek? Az objektum függvényeivel nem tudok minden problémát megoldani ?
    Mutasd a teljes hozzászólást!
  • De. De melyik objektum függvényeivel? Kell egy objektum, aminek a függvényeit hívni akarod.

    Ilyenkor ilyeneket írhatsz:

    ptr->GetRange(...)
    ptr->SetRange(...)
    ...

    Pointer nélkül:

    GetMonthCalCtrl()->GetRange(...)
    GetMonthCalCtrl()->SetRange(...)
    ...

    Ez utóbbi sokkal rosszabb.
    Mutasd a teljes hozzászólást!
  • Köszi. Még egy fontos, alapvető dolgot kellene tisztáznom.
    Csináltam a dátum cáltoztatásra egy eseménykezelőt, és oda tettem a breakpointot. Debuggoltam, és váltáskor oda ugrott a breakpointra az utasitás mutató. Ezek után rendeltem egy objektumot a Class Wizarddal a DateTime elemhez, és odatettem a breakpointot, de váltáskor megint csak a CDialogon lévő breakpointhoz ment az utasitás mutató. Miért nem az objektumhoz tartozó eseménykezelőhöz ?

    Mutasd a teljes hozzászólást!

  • void CDateDlg::OnDatetimechangeDatetimepicker1(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here m_OwnDateTime. *pResult = 0; } illetve void COwnDateTime::OnDatetimechangeDatetimepicker1(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here *pResult = 0; }

    Mindig a CDiaalognál elhelyezett breakpointon állt meg.
    Milyen előnye van annak, ha a dialogra a toolbarrol huzott DateTime controlnak saját objektumot adok a ClassWizarddal?
    És utobbi esetben,külön objektum esetén hogyan lehet elérni annak az eseménykezelőit (azaz nem a CDialog fogjon meg mindent) ?
    Mutasd a teljes hozzászólást!
  • Itt a CDate dialogot akartam irni, nem CDialogot. A CDate dialog a CDialogbol származtatott osztály,egyben a projekt neve.
    Mutasd a teljes hozzászólást!
  • Utánad csináltam addig a részig, amíg változót teszek a DTP-hez, aminek típusa CDateTimeCtrl. Ez a változó kétszer fordul elő a kódban. Egyszer a definícióban, egyszer a CProba2Dlg::DoDataExchange függvényben. Te hova tetted a breakpoint-ot? Szerintem egyik sem a jó hely, mert ez utóbbi nem csak dátum megváltozáskor fut le, az osztály definíció pedig nem futtatható kód.

    Bocs itt még nem olvastam a fentieket. (Egyszerre írtuk.)

    A te osztályod MFC, vagy Form class?
    A message map-ban a tiedre küldöd az eseményt?
    Mutasd a teljes hozzászólást!
  • A breakpointot előbb ugy tettem be, hogy még nem adtam objektumot a DateTimer elemnek, azaz csak az alap Date,
    DateDlg, stdafx .cpp ill .h állományo kvoltak.
    Ekkor az előbbi hozzászolásomban leirt helyen megállt a breakpointnál. Utána a ClassWizarddal az objectIDsnél kiválasztottam az IDveladott DateTime elememet,majd AddClass és New-t nyomtam. Itt pedig kiválasztottam a listából a CDateTimeCtrl objektumot. Ezzel generálódtak az uj fájljaim.
    Utána EventHandlerben kiválasztottam az ID-vel adott elememet, majd hozzáadtam a változás függvényt az uj, előbb generálódott fileba. Beraktam oda a breakpointot, de nem állt meg, hanem még az objektum hozzáadása előtti helyen állt meg, ahol korábban is.
    Mutasd a teljes hozzászólást!
  • A te osztályod MFC, vagy Form class? - itt mire gondolsz ? MFC Applikaciot csináltam a varázslóval a projekt generáláskor. Dialog alaput. Gondolom,akkor MFC class.
    Vagy a behozott DateTimerre gondolsz ? A toolbarrol huztam be.

    A message map-ban a tiedre küldöd az eseményt? Mindkettőre küldöm.
    Mutasd a teljes hozzászólást!
  • Ha az ID-re kattintasz és azt mondod, Add Class, akkor nem az id-hez ad osztályt, hanem csak a projekthez. Az add variable-hez kellene saját változót rendelni, ami nem Class, de csak egyet ajánl fel, ide fogom bevarázsolni a COwnDateTimeCtrl osztályt, ami örököl a CDateTimeCtrl.

    A Form-os kérdés hülyeség volt, rájöttem.

    Ilyet akarsz, nem?
    Mutasd a teljes hozzászólást!
  • Oké, a CDialogból származtatott, induláskor meglévő dialogus objektumba az AddVariableval valóban bekerül a

    CDateTimeCtrl m_OwnDateTime;

    elem. De ebben az esetben ki tudsz nyulni abból, hogy csak a Dialogusod objektumainak függvényeit használd a DateTime elem eseményeinek kezelésekor ?
    Valamint, mi értelme van kinyulni, és uj objektummal rendelkezni a DateTime elemhez ?
    Mutasd a teljes hozzászólást!
  • Megnéztem a www.codeproject.com-os példádat is, de még nem rágtam át magam rajta. Valszeg, olyat akarok, az elejére rápillantva mondom ezt.
    Mutasd a teljes hozzászólást!
  • Picit pihentetem most magam a témától, ha visszatérek, akkor elolvasom, ami a CodeProjectben van.
    Mutasd a teljes hozzászólást!
  • Fiuk, lányok, ebben segitsetek ! Hogy csinálom azt, hogy ha van egy ID-veladot toolbarrol, vagy Insert ActiveX controll lépéssel a dialogra rárakott elemem, akkor legyen külön osztálya, és ne csak a dielogon legyen rajta ?
    Mutasd a teljes hozzászólást!
  • boccs,előbb megnézem hosza linkjét,mert még nem néztem meg !!!!
    Mutasd a teljes hozzászólást!
  • hosza, nem erre gondolok, mert itt a CButtonbol származtat (az elejét olvastam el), és a CButton, mint objektum, amiből származtatni lehet, ott van a ClassWizardnál, az AddClass fülön belül. Én MSFlexGridből akarok származtatni, az nincs a listában.
    Mutasd a teljes hozzászólást!
  • Tévedés, rossztopicba irtam, nem ide akartam az utolso 3 hozzászóülásomat !
    Mutasd a teljes hozzászólást!
  • Habár nem ide szántad, de amit adtam, ott ír arról is, hogy a származtatás után nem mindeig jelenik meg az osztály a listában és akkor mit lehet csinálni. (Újra fordítani a CW fájlokat.)
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd