|
网站首页
|
JAVA文章
|
AppServers
|
Web开发
|
应用开发
|
资源下载
|
论坛
想学好编程,学好外语很重要 [enadd 2006年12月25日]
设为首页
加入收藏
联系站长
您现在的位置:
编程笔记网
>>
应用开发
>>
vc
>>
vc控件
>> 文章正文
动态子类化CComboBox以得到子控件EDIT及LISTBOX
热
荐
【字体:
小
大
】
动态子类化CComboBox以得到子控件EDIT及LISTBOX
作者:- 文章来源:- 点击数: 更新时间:2006-4-20
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"
#include "UseSuperCombox.h"
#include "SuperEdit.h"
// CSuperEdit
IMPLEMENT_DYNAMIC(CSuperEdit, CEdit)
CSuperEdit::CSuperEdit()
{
}
CSuperEdit::~CSuperEdit()
{
}
BEGIN_MESSAGE_MAP(CSuperEdit, CEdit)
ON_WM_CHAR()
END_MESSAGE_MAP()
// CSuperEdit 消息处理程序
void CSuperEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if ( (nChar < 48 || nChar > 57) && nChar != 45 && nChar != 43 )
{
AfxMessageBox( "you must type the number or the char '-' or the char '+'" );
return;
}
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
第三步 再新建一个MFC类,选择继承自CComboBox,取名叫CSuperComboBox。代码如下(注:以下代码原文见http://support.microsoft.com/default.aspx?scid=kb;en-us;Q174667):
² SuperComboBox.h
#pragma once
#include "SuperEdit.h"
class CSuperComboBox : public CComboBox
{
DECLARE_DYNAMIC(CSuperComboBox)
public:
CSuperEdit m_Edit;
public:
CSuperComboBox();
virtual ~CSuperComboBox();
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
afx_msg void OnDestroy();
};
² SuperComboBox.cpp
// SuperComboBox.cpp : 实现文件
//
#include "stdafx.h"
#include "UseSuperCombox.h"
#include "SuperComboBox.h"
// SuperComboBox
IMPLEMENT_DYNAMIC(CSuperComboBox, CComboBox)
CSuperComboBox::CSuperComboBox()
{
}
CSuperComboBox::~CSuperComboBox()
{
}
[1]
[2]
[3]
[4]
下一页
文章录入:enadd 责任编辑:enadd
上一篇文章:
子类化:增强Edit控件为日期输入控件
下一篇文章:
VC++之Button控件
【
发表评论
】【
加入收藏
】【
告诉好友
】【
打印此文
】【
关闭窗口
】
最新热点
最新推荐
相关文章
VC控件 TreeCtrl 与 ListCtr…
CListCtrl 使用演示的例子
VC通用控件编程之CList控件
VC++在应用程序中使用标准窗…
用ATL和MFC来创建ActiveX控件
动态控件的生成与响应
可设置颜色的静态控件、单选…
支持数据项查找功能的树控制…
VC通用控件编程之CImageList…
做一个可编辑的表格控件
网友评论:
(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
|
设为首页
|
加入收藏
|
联系站长
|
友情链接
|
版权申明
|
管理登录
|
Copyright ©2000 - 2005
Enadd
.com
备案序号:辽ICP备06005595号
QQ:1656107
站长:
enadd