动态子类化CComboBox以得到子控件EDIT及LISTBOX
Joise.LI写于2004-4-6
ComboBox是比较常用的一个控件,有三种样式:CBS_SIMPLE(简单),CBS_DROPDOWN(下拉),CBS_DROPDOWNLIST(下拉列表),其中下拉列表样式是不允许输入的,简单样式是永远都显示下拉框的。
ComboBox是由一个ListBox和一个Edit框组合而成。本文将以限制只能输入电话号码为例介绍子类化过程得到Edit框(类似的可以得到ListBox)。
电话号码只能有数字和“-”和“+”组成,经查ASCII表,知道对应的ASCII值为48-57及45和43共12个值。
好,闲话暂停,开始子类化之旅。
第一步 先建立一个MFC应用程序工程,取名叫UseSuperCombox(这里表示一下SORRY,因为顺手多写了一个X,呵呵)。
第二步 新建一个MFC类,选择继承自CEdit,取名叫CSuperEdit,这个类是用来替换ComboBox中的Edit框的。代码如下:
² SuperEdit.h:
class CSuperEdit : public CEdit
{
DECLARE_DYNAMIC(CSuperEdit)
public:
CSuperEdit();
virtual ~CSuperEdit();
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
};
² SuperEdit.cpp:
// SuperEdit.cpp : 实现文件
//
#include "stdafx.h"