组合框的使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验组合框的使用
完成如图1所示的组合框:
图1
(1)创建一个对话框工程IDD_COMBO_DIALOG,标题为“使用组合框”。
(2)参看上图的控件布局,用编辑器为对话框添加如下所示的一些控件。
控件 ID号标题属性
静态文本 IDC_DRAW 默认 Static edge,其余默认静态文本默认填充样式默认
组合框 IDC_PATTERN ---- 默认
按钮 IDOK 退出 Default button,其余默认(3)打开ClassWizard的Member Variables标签,为组合框IDC_PATTERN增加成员变量m_Pattern,其类型为Control类的CComboBox。
(4)添加int类型的成员变量m_nDrawPattern。
(5)切换到ClassWizard的Message Maps标签页,为组合框IDC_PATTERN 在CComboDlg类中添加CBN_SELCHANGE(组合框中的当前选项发生改变)的消息映射,并增加下列代码:
int nIndex=m_Pattern.GetCurSel();//获得当前选项的索引
if(nIndex!=CB_ERR)
{ m_nDrawPattern=m_Pattern.GetItemData(nIndex);
//获得与当前选项相关联的数据
Invalidate();//强制系统调用OnPaint函数重新绘制
}
(6)用ClassWizard在CComboDlg类添加WM_PAINT的消息映射,并加代码:CWnd *pWnd=GetDlgItem(IDC_DRAW);//获得控件IDC_DRAW的窗口指针
pWnd->UpdateWindow();//避免系统自动重绘
CDC *pDC=pWnd->GetDC();//获得所需要的绘图设备环境
CBrush drawBrush;//定义一个画刷
drawBrush.CreateHatchBrush(m_nDrawPattern,RGB(0,0,0));//创建画刷CBrush *pOldBrush=pDC->SelectObject(&drawBrush);
//将画刷选入当前设备环境中
CRect rcClient;//定义一个CRect变量
pWnd->GetClientRect(rcClient);//获得窗口客户区大小
pDC->Rectangle(rcClient);//用当前画刷绘制一个矩形区域
pDC->SelectObject(pOldBrush);//恢复设备环境原来的画刷设置
(7)在CComboDlg类中的OnInitDialog中添加代码:
//CDialog::OnInitDialog();
CString str[6]={"水平线","竖直线","向下斜线","向上斜线", "十字线","交叉线"};
int nIndex;
for(int i=0;i<6;i++)
{ nIndex=m_Pattern.AddString(str[i]);
m_Pattern.SetItemData(nIndex,i);
}
m_Pattern.SetCurSel(0);
m_nDrawPattern=0;
(8)编译运行