组合框的使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)编译运行

相关文档
最新文档