mfc Combox扩展类
来源:互联网 发布:应用程序是软件么 编辑:程序博客网 时间:2024/05/03 00:12
这是我在网上寻找的一个combox扩展类,并加以改进,实现combox自绘,允许改变其样式,及是否可编辑属性,及设置文本内容等。
使用例子:
vector<CComboBoxTest*> m_vecAddComboxControl;//下拉框记录列表
afx_msg void OnMyCombox(UINT nId);
void OnEditMyCombox(UINT nId);
CWnd* CreateDynControl(int nCtrlType,CString strCaption,
LONG nStartX, LONG nStartY,LONG nWidth,
LONG nHeight, int nStyle, const CString &sFontType = "textfont");
void CreateOneTimeChoiceCard(LONG nStartX, LONG nStartY, int nManyTime, int nDance);
CKTLXStudentAnswerView::~CKTLXStudentAnswerView()
{
for (unsigned int i = 0; i < m_vecAddComboxControl.size(); i++)
{
delete m_vecAddComboxControl[i];
}
m_vecAddComboxControl.clear();
}
BEGIN_MESSAGE_MAP(CKTLXStudentAnswerView, CFormView)
ON_CONTROL_RANGE(CBN_SELCHANGE , IDC_MYCOMBOX_ANSWER , IDC_MYCOMBOX_ANSWER + 999 ,OnMyCombox)
ON_CONTROL_RANGE(CBN_EDITCHANGE , IDC_MYCOMBOX_ANSWER , IDC_MYCOMBOX_ANSWER + 999 ,OnEditMyCombox)
END_MESSAGE_MAP()
/******************************************************************
* 函数介绍:创建动态控件方法
* 输入参数:
* 输出参数:
* 返回值 :
*******************************************************************/
CWnd* CKTLXStudentAnswerView::CreateDynControl(int nCtrlType,CString strCaption,
LONG nStartX, LONG nStartY,LONG nWidth,
LONG nHeight, int nStyle, const CString &sFontType)
{
CWnd* lpCwnd = NULL;
CRect rct = CRect(nStartX,nStartY,nStartX+nWidth,nStartY+nHeight);
if (CTRLT_BUTTON == nCtrlType )
{
CButtonST *p_Button = new CButtonST();
ASSERT_VALID(p_Button);
if( !p_Button->Create( strCaption, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON |BS_BITMAP| nStyle, rct, this, IDC_MYBUTTON_ANSWER+m_ButtonCount ) )
{
return NULL;
}
lpCwnd = (CWnd*)p_Button;
m_vecAddButtonControl.push_back(p_Button);
m_ButtonCount++;
}
else if (CTRL_PIC_STC == nCtrlType)
{
CPictureCtrl *p_Static = new CPictureCtrl();
ASSERT_VALID(p_Static);
if( !p_Static->Create( strCaption, WS_VISIBLE | SS_LEFT | nStyle, rct, this, IDC_MYSTATIC1_ANSWER+m_PicStaticCount ) )
{
return NULL;
}
// p_Static->SetFont(&m_myFont);
lpCwnd = (CWnd*)p_Static;
m_vecAddPicStaticControl.push_back(p_Static);
m_PicStaticCount++;
}
else if (CTRL_STATIC == nCtrlType)
{
CStatic *p_Static = new CStatic();
ASSERT_VALID(p_Static);
if( !p_Static->Create( strCaption, WS_CHILD | WS_VISIBLE | SS_LEFT | nStyle, rct, this, IDC_MYSTATIC2_ANSWER+m_StaticCount ) )
{
return NULL;
}
if (0 == sFontType.CompareNoCase("titlefont"))
{
p_Static->SetFont(&m_titlefont);
}
if (0 == sFontType.CompareNoCase("textfont"))
{
p_Static->SetFont(&m_textfont);
}
lpCwnd = (CWnd*)p_Static;
m_vecAddStaticControl.push_back(p_Static);
m_StaticCount++;
}
else if (CTRL_EDIT == nCtrlType)
{
CEditWithButton *p_Edit = new CEditWithButton();
ASSERT_VALID(p_Edit);
if( !p_Edit->Create( WS_CHILD |WS_VISIBLE | ES_LEFT |ES_WANTRETURN | ES_MULTILINE | ES_AUTOVSCROLL |nStyle, rct, this, IDC_MYEDIT_ANSWER+m_EditCount ) )
{
return NULL;
}
p_Edit->SetWindowText(strCaption);
lpCwnd = (CWnd*)p_Edit;
m_vecAddEditControl.push_back(p_Edit);
m_EditCount++;
}
else if (CTRL_COMBOX == nCtrlType)
{
CComboBoxTest *p_Combox = new CComboBoxTest();
ASSERT_VALID(p_Combox);
if( !p_Combox->Create( WS_CHILD | WS_VISIBLE | nStyle, rct, this, IDC_MYCOMBOX_ANSWER+m_ComboxCount ) )
{
return NULL;
}
p_Combox->AddString(strCaption);
p_Combox->SetCurSel(0);
lpCwnd = (CWnd*)p_Combox;
m_vecAddComboxControl.push_back(p_Combox);
m_ComboxCount++;
}
return lpCwnd;
}
/******************************************************************
* 函数介绍:添加一次选择题
* 输入参数:
* 输出参数:
* 返回值 :
*******************************************************************/
void CKTLXStudentAnswerView::CreateOneTimeChoiceCard(LONG nStartX, LONG nStartY, int nManyTime, int nDance)
{
............
CreateDynControl(CTRL_COMBOX, "", nStartX + 50 + 6*nDance, nStartY+2, 60, 42,CBS_DROPDOWNLIST); //50 + 7*nDance
/*for (int i = 1; i <= 20; i++)
{
CString sTemp;
sTemp.Format("%d", i);
m_vecAddComboxControl[m_nQusNum - 1]->AddString(sTemp);
}*/
m_vecAddComboxControl[m_ComboxCount - 1]->SetComboBitmap(IDB_BMP_COMBOX_LEFT, IDB_BMP_COMBOX_RIGHET, IDB_BMP_COMBOX_CENTER);
m_vecAddComboxControl[m_ComboxCount - 1]->SetHighlightColor(RGB(0,191,243),RGB(255,255,255),RGB(0,0,0));
m_vecAddComboxControl[m_ComboxCount - 1]->SetNormalPositionColor(RGB(255,255,255),RGB(0,0,0));
..........
}
扩展类下载地址:http://download.csdn.net/detail/leighton_52/6727603
- mfc Combox扩展类
- Combox 扩展
- MFC---Combox用法简介
- MFC COMBOX使用
- MFC-ComBox控件用法
- MFC COMBOX 使用
- combox的四种扩展
- Ext Combox模糊匹配扩展
- MFC ComBox组合控件框
- MFC ComBox组合控件框
- MFC——ComBox用法大全
- MFC——ComBox用法大全
- MFC combox控件内容无法显示
- MFC——ComBox用法小结
- MFC——ComBox用法大全
- MFC——ComBox用法大全
- MFC——ComBox用法大全
- MFC——ComBox用法大全 .
- android的四种activity加载模式(launchMode)
- 从Win32程序中的主函数中获取命令行参数
- SJTU->SE->ICS->LAB9 Tiny Shell
- Java面向对象的三大特征——多态
- 冲啊!抢红米了
- mfc Combox扩展类
- 北京东方时尚学车日志
- Spring AMQP 实现客户端发送消息
- ios 简单工厂模式
- cocos2dx学习---修改文件夹读取权限
- LINUX学习线路
- 国家软件著作权申请心得
- 脚本先后执行顺序
- ASP.NET MVC中@Html.DropDownListFor使用方法