MFC 继承

用SDK的Win32 API编写各种Windows应用程序,有其共同的规律:首先是编写WinMain函数,编写处理消息和事件的窗口过程WndProc,在WinMain里头注册窗口(Register Window),创建窗口,然后开始应用程序的消息循环。

MFC应用程序也不例外,因为MFC是一个建立在SDK API基础上的编程框架。对程序员来说所不同的是:一般情况下,MFC框架自动完成了Windows登记、创建等工作。


CObject是MFC的根类,绝大多数MFC类是其派生的,包括CCmdTarget。CObject 实现了一些重要的特性,包括动态类信息、动态创建、对象序列化、对程序调试的支持,等等。所有从CObject派生的类都将具备或者可以具备CObject所拥有的特性。CCmdTarget通过封装一些属性和方法,提供了消息处理的架构。MFC中,任何可以处理消息的类都从CCmdTarget派生。

CObject -> CCmdTarget -> CWmd/CWimApp/CDocTemplate/CDocument/CView/CFrameWnd.

CWmd派生CEdit

CEdit类的结构很复杂,定义如下::

class CEdit : public CWnd
{
	// DECLARE_DYNAMIC virtual OK - CWnd already has DECLARE_DYNAMIC
	DECLARE_DYNAMIC(CEdit)
 
// Constructors定义构造函数
public:
	CEdit();
	BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
 
// Attributes定义成员函数
	BOOL CanUndo() const;
	int GetLineCount() const;
	BOOL GetModify() const;
	void SetModify(BOOL bModified = TRUE);
	void GetRect(LPRECT lpRect) const;
	DWORD GetSel() const;
	void GetSel(int& nStartChar, int& nEndChar) const;
	HLOCAL GetHandle() const;
	void SetHandle(HLOCAL hBuffer);
	void SetMargins(UINT nLeft, UINT nRight);
	DWORD GetMargins() const;
	void SetLimitText(UINT nMax);
	UINT GetLimitText() const;
	CPoint PosFromChar(UINT nChar) const;
	int CharFromPos(CPoint pt) const;
 
	// NOTE: first word in lpszBuffer must contain the size of the buffer!
	// NOTE: may not return null character
	int GetLine(_In_ int nIndex, _Out_ LPTSTR lpszBuffer) const;
	// NOTE: may not return null character
	int GetLine(_In_ int nIndex, _Out_writes_to_(nMaxLength, returnLPTSTR lpszBuffer, _In_ int nMaxLength) const;
 
	AFX_ANSI_DEPRECATED BOOL SetCueBanner(_In_z_ LPCWSTR lpszText, _In_ BOOL fDrawIfFocused = FALSE);
	AFX_ANSI_DEPRECATED BOOL GetCueBanner(_Out_writes_z_(cchText) LPWSTR lpszText, _In_ int cchText) const;
 
#if defined(UNICODE)
	CString GetCueBanner() const;
 
	BOOL ShowBalloonTip(_In_z_ LPCWSTR lpszTitle, _In_z_ LPCWSTR lpszText, _In_ INT ttiIcon = TTI_NONE);
	BOOL ShowBalloonTip(_In_ PEDITBALLOONTIP pEditBalloonTip);
	BOOL HideBalloonTip();
#endif  // (UNICODE)
 
#if defined(UNICODE)
	// REVIEW: Sets the characters in the edit control that are highlighted.
	void SetHighlight(_In_ int ichStart, _In_ int ichEnd);
 
	// REVIEW: Retrieves the characters in the edit control that are highlighted.
	BOOL GetHighlight(_Out_ int* pichStart, _Out_ int* pichEnd) const;
#endif  // defined(UNICODE)
 
// Operations
	void EmptyUndoBuffer();
	BOOL FmtLines(BOOL bAddEOL);
 
	void LimitText(int nChars = 0);
	int LineFromChar(int nIndex = -1) const;
	int LineIndex(int nLine = -1) const;
	int LineLength(int nLine = -1) const;
	void LineScroll(int nLines, int nChars = 0);
	void ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo = FALSE);
	void SetPasswordChar(TCHAR ch);
	void SetRect(LPCRECT lpRect);
	void SetRectNP(LPCRECT lpRect);
	void SetSel(DWORD dwSelection, BOOL bNoScroll = FALSE);
	void SetSel(int nStartChar, int nEndChar, BOOL bNoScroll = FALSE);
	BOOL SetTabStops(int nTabStops, LPINT rgTabStops);
	void SetTabStops();
	BOOL SetTabStops(const int& cxEachStop);    // takes an 'int'
 
	// Clipboard operations
	BOOL Undo();
	void Clear();
	void Copy();
	void Cut();
	void Paste();
 
	BOOL SetReadOnly(BOOL bReadOnly = TRUE);
	int GetFirstVisibleLine() const;
	TCHAR GetPasswordChar() const;
 
// Implementation
public:
	// virtual OK here - ~CWnd already virtual
	virtual ~CEdit();  //虚拟析构函数
};

注明:WORD :16位无符号数,LONG :32位有符号数

         DWORD :32位无符号数  LPTSTR :指向字符串的32位指针

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MFC是Microsoft Foundation Classes的缩写,是一套用于开发Windows应用程序的库。继承CListCtrl是指在MFC应用程序中创建一个,该从CListCtrl派生而来,以实现自定义的列表控件功能。 继承CListCtrl的好处是可以通过重写基的方法来实现自己的列表控件行为,从而满足特定的需求。通过继承CListCtrl,可以添加自定义的列和行,并对列表的显示和交互行为进行定制。 派生可以重写CListCtrl提供的方法,如OnDraw和OnCustomDraw,来实现自己的绘制和定制绘制行为。也可以重写OnLButtonDown和OnLButtonDblClk等事件函数,来处理特定的鼠标操作。 此外,继承CListCtrl还可以添加自定义的成员变量和成员函数,以支持特定的功能。例如,可以添加成员变量来保存列表数据,并通过自定义的成员函数来更新和获取数据。 同时,继承CListCtrl还可以重写一些虚函数,如OnKeyDown和OnContextMenu,在特定的事件发生时处理相关的操作。这可以使得列表控件更加灵活和可扩展。 总之,通过继承CListCtrl,开发者可以根据具体需求对列表控件进行定制,并实现自定义的行为和功能。这种继承方式可以方便地重用MFC提供的基础功能,同时也能够满足特定的应用程序需求。 ### 回答2: MFC(Microsoft Foundation Classes)是微软公司开发的一组用于简化Windows应用程序开发的库。继承CListCtrl是指在MFC中自定义一个,使其从CListCtrl派生而来,以便于实现特定的功能或提供自定义的界面。 通过继承CListCtrl,我们可以重写一些函数以定制列表控件的行为。例如,可以重写OnKeyDown函数来处理键盘按键事件,重写OnLButtonDown函数来处理鼠标左键点击事件。这样我们就可以根据具体的需求来实现一些自定义的操作,比如特定的快捷键功能,或者对列表项的点击事件进行一些特殊处理等等。 此外,继承CListCtrl还可以通过重写DrawItem函数来实现自定义的绘制,例如修改列表项的背景色、文本颜色以及图标等。还可以重写OnCustomDraw函数来实现更加灵活的绘制功能,例如根据某些条件来动态改变列表项的外观。 继承CListCtrl同时也可以扩展一些新的功能。我们可以在自定义的中添加一些新的成员函数和数据成员,来实现一些额外的操作。比如添加一个排序函数,根据某列的值对列表中的项进行排序,或者添加一个筛选函数,根据某些条件来过滤显示的列表项等等。 总之,通过继承CListCtrl,我们可以更加灵活地定制和扩展列表控件,以满足特殊的需求,并提供更好的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值