Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Probleme beim Verstehen des Codes

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
03.09.2005, 12:34 Uhr
catcharlie



Kann mir jemand helfen?

Ich habe mir das Programm CXImage gezogen. Das ist ein OpenSource-Projekt, an
dem ich mich mal versuchen möchte. Dazu muss ich erstmal den Quellcode verstehen.
Kann mir jemand Stück für Stück folgenden Quellcode erklären (am besten zeilenweise):

------------------------------------------------------------------------------------

C++:
#if !defined(AFX_DLGMIX_H__51F87317_7FCC_4396_8D88_1CFB0ACEEF90__INCLUDED_)
#define AFX_DLGMIX_H__51F87317_7FCC_4396_8D88_1CFB0ACEEF90__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif

#include "xTargetButton.h"

class CDemoDoc;
class DlgMix : public CDialog
{
public:
    CDemoDoc* pDocSrc;
    CDemoDoc* pDocDst;
    int OpType;

    DlgMix(CWnd* pParent = NULL);  
    //{{AFX_DATA(DlgMix)
    enum { IDD = IDD_MIX };
    CStatic    m_picture;
    IcTargetButton    m_preview;
    IcTargetButton    m_ok;
    IcTargetButton    m_canc;
    CComboBox    m_cbSrc;
    CComboBox    m_cbOpType;
    CComboBox    m_cbDst;
    int        m_xoffset;
    int        m_yoffset;
    BOOL    m_mixalpha;
    //}}AFX_DATA


    //{{AFX_VIRTUAL(DlgMix)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);  
    //}}AFX_VIRTUAL

protected:

    HBITMAP m_bitmap;
    IcImage m_imageSrc,m_imageDst;
    void SetThumbs(IcImage* pSrc, IcImage* pDst);
    float m_ratio;
    void SetMix();

    //{{AFX_MSG(DlgMix)
    virtual BOOL OnInitDialog();
    afx_msg void OnButton1();
    afx_msg void OnDestroy();
    afx_msg void OnSelchangeDst();
    afx_msg void OnSelchangeSrc();
    afx_msg void OnSelchangeOp();
    virtual void OnOK();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}

#endif


------------------------------------------------------------------------------------

Bestimmte Sachen verstehe ich ja. Mir ist klar, dass man mit define neue Konstanten definiert,
oder das name(x,y) eine Funktion ist, wo in Klammern Parameter stehen können. class ist
Klasse. Durch die Wahl des Namens bekomme ich sicher auch raus, was die jeweilige Funktion macht.
Trotzdem habe ich Probleme bei verstehen des Codes. Was ist z.B. afx_msg? Warum werden die Zeilen
in AFX_MSG nicht ignoriert? Es stehen dort doch //, was eigentlich einen Kommentar bezeichnet.
Also im großen und ganzen brauch ich alles erklärt.

Wäre nett, wenn mir das mal jemand erklären kann!

Danke schon im Voraus!
cat charlie
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.09.2005, 14:53 Uhr
imhotep
followed the white rabbit



C++:
/*Test ob das schon definiert, wenn nicht wird es neu definiert
der ganze Ausdruck ist in diese if-Bediengung gefasst*/

#if !defined(AFX_DLGMIX_H__51F87317_7FCC_4396_8D88_1CFB0ACEEF90__INCLUDED_)
#define AFX_DLGMIX_H__51F87317_7FCC_4396_8D88_1CFB0ACEEF90__INCLUDED_ //Alles was jetzt kommt wird unter dieser Bezeichung später eingesetzt
//an statt dies alles nochmal zu schreiben, reicht es dann diese Bezeichnung einzusetzen

#if _MSC_VER > 1000
#pragma once
#endif

#include "xTargetButton.h"

//Klassedefinitionen
class CDemoDoc;
class DlgMix : public CDialog //Klasse DigMix ist von CDialog abgeleitet
{
//öffentliche(siehe Objektorientierung) Funktionen und Variablen
public:
    //Variablen
    CDemoDoc* pDocSrc;
    CDemoDoc* pDocDst;
    int OpType;
    
    //wahrscheinlich Elemante eines Dialogfensters
    DlgMix(CWnd* pParent = NULL);  
    //{{AFX_DATA(DlgMix)
    enum { IDD = IDD_MIX };
    CStatic    m_picture;
    IcTargetButton    m_preview;
    IcTargetButton    m_ok;
    IcTargetButton    m_canc;
    CComboBox    m_cbSrc;
    CComboBox    m_cbOpType;
    CComboBox    m_cbDst;
    int        m_xoffset;
    int        m_yoffset;
    BOOL    m_mixalpha;
    //}}AFX_DATA

//geschütze(siehe Objektorientierung) Funktionen und Klassen
    //{{AFX_VIRTUAL(DlgMix)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);  
    //}}AFX_VIRTUAL

protected:

    HBITMAP m_bitmap;
    IcImage m_imageSrc,m_imageDst;
    void SetThumbs(IcImage* pSrc, IcImage* pDst);
    float m_ratio;
    void SetMix();

    //{{AFX_MSG(DlgMix)
    virtual BOOL OnInitDialog();
    afx_msg void OnButton1();
    afx_msg void OnDestroy();
    afx_msg void OnSelchangeDst();
    afx_msg void OnSelchangeSrc();
    afx_msg void OnSelchangeOp();
    virtual void OnOK();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}

#endif //Ende der if-Bedienung



Vielleicht solltest du erst mal eigene Projekte machen, bevor du dich an andere wagst.
Vorallem solltest du dich mit Objektorientierung und selbstdefierten Dateitypen vertraut machen.

afx_msg ist ein selbstdefinierter Datentyp.

Dieser Post wurde am 03.09.2005 um 14:55 Uhr von imhotep editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.09.2005, 16:14 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


afx_msg ist gar nix


C++:
// Type modifier for message handlers
#ifndef afx_msg
#define afx_msg         // intentional placeholder
#endif



Ansonsten passt das obige eher ins MFC forum, das hat wenig mit ANSI zu tun.



achja


C++:
//{{AFX_MSG(...



ist nur für den Visual Studio Wizard da, damit er weiß wo was steht, der 2003er benötigt die nicht mehr, der schreibt einfach alles neue "unten dran"
--
class God : public ChuckNorris { };

Dieser Post wurde am 03.09.2005 um 16:16 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: