组合框的使用
- 格式:doc
- 大小:31.00 KB
- 文档页数:2
实验组合框的使用
完成如图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)编译运行。