回 帖 发 新 帖 刷新版面

主题:能帮我解释下这个代码的作用和具体功能吗?

我刚刚学C++ 老师叫我们做一程序来当作考试。就找了个俄罗斯放快的程序 但我有很多地方都看不明白。请高人请教!
////////////////////////////////////////////////////////////////////////////////
//
//    Class        : CadvWnd
//  Author        : Andreas Leitner (aleitner@usa.net)
//  Description    : A CWnd derived class that is able to redraw itself flicker free
//
////////////////////////////////////////////////////////////////////////////////

#ifndef __advWnd_H_
#define __advWnd_H_


// Forward Declarations
class CadvWnd;


// Combinable defines for Background mode
#define BM_DEF_WND_COL 1
#define BM_CUST_COL 2

class AFX_EXT_CLASS CadvWnd : public CWnd
{
    DECLARE_DYNCREATE(CadvWnd)


// Default Constructor & destructor
public:
    CadvWnd();
    virtual ~CadvWnd();

// Window Creation and Maintaince
    BOOL Create(const RECT& rect, CWnd* parent, UINT nID, CCreateContext* pCC = 0, 
                   DWORD style = WS_CHILD | WS_BORDER | WS_TABSTOP | WS_VISIBLE, DWORD dwExStyle = /*WS_EX_CLIENTEDGE*/0);
    BOOL SubclassDlgItem(UINT nID, CWnd* parent); // use in Dialog/FormView 
                            static void  RegisterClass();
    static LRESULT CALLBACK DummyWndProc(HWND, UINT, WPARAM, LPARAM);
    virtual WNDPROC*  GetSuperWndProcAddr();

    virtual BOOL CreateChildren();


// ClassWizard complient virtual overrides
    //{{AFX_VIRTUAL(CadvWnd)
    //}}AFX_VIRTUAL



// ClassWizard complient message map functions
protected:
    //{{AFX_MSG(CadvWnd)
    afx_msg void OnPaint();
    afx_msg void OnWinIniChange(LPCTSTR lpszSection);
    afx_msg void OnSize(UINT nType, int cx, int cy);
    afx_msg void OnPaletteChanged(CWnd* pFocusWnd);
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()



// CObject Debug functions overrides
    #ifdef _DEBUG
    virtual void AssertValid() const;
    virtual void Dump(CDumpContext& dc) const;
    #endif // _DEBUG



// Attributes
public:


protected:
    // if true, it will update with a tmp bitmap
    BOOL     m_bFlickerFree;
    BOOL     m_bUpdateContents;
    CBitmap* m_pbmpContents; // to get a faster update if flickerfree is on

    int m_iBackgroundMode;  // See BM defines 
    COLORREF m_colBackground;

// Operations
public:
    // (Operation description)
    virtual void InternalRedrawFG(CDC* pDC, CRect rcPaint);  // Overwrite this function
    virtual void InternalRedrawBG(CDC* pDC, CRect rcPaint);
    void ReCreateBitmap();
    void SetContentsChanged(BOOL yes = TRUE);
    BOOL IsContentsChanged();

    const int GetBackgroundMode();
    void SetBackgroundMode(COLORREF Color, int Mode = BM_CUST_COL); // To set the std mode just set col black and change the mode value
    COLORREF GetBackgroundColor();

    BOOL IsFlickerFree();
    void SetFlickerFree(BOOL bFlickerFree);
};
///////////////////////////////////////////////////////////////////////////

#endif  // __advWnd_H_

回复列表 (共1个回复)

沙发

这是一个主窗口类啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册