4.2对话框和常用控件解析.pptVIP

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4.2对话框和常用控件解析

4.3常用控件 4.3.4组合框 组合框的风格及类型 4.3常用控件 组合框常见操作 组合框的操作大致分为两类,一类是对组合框中的列表框进行操作,另一类是对组合框中的编辑框进行操作。这些操作都可以调用CComboBox成员函数来实现。 组合框的通知消息 绘图时还需要下列一些技巧: 需要更新或重新绘制窗口的外观时,应用程序就会发送WM_PAINT消息。用ClassWizard在对话框中映射WM_PAINT消息的目的是执行绘图代码。 防止用系统默认的颜色向对话框进行重复绘制,须调用UpdateWindow函数。UpdateWindow是CWnd的无参数的成员函数,目的是绕过系统的消息列队,直接发送或停止发送WM_PAINT消息。窗口没有需要更新的区域时,就停止发送。绘制完图形时,没有WM_PAINT消息的发送,系统不会用默认的颜色对窗口进行重复绘制。 如果对话框中的任何部分变为无效时,对话框的OnPaint函数都会自动调用。可以通过调用Invalidate函数来通知系统此时的窗口状态已变为无效,强制系统调用WM_PAINT消息函数OnPaint重新绘制。 4.3常用控件 [例Ex_Ctrls4] 根据用户从组合框中选择的填充样式,在对话框中绘制一个矩形区域,如图。 (1)打开前面创建的基于对话框应用程序程序项目Ex_CommCtrls。 (2)向应用程序中添加一个对话框资源IDD_COMBO,标题定为“使用组合框”,用ClassWizard为此对话框类定义为CComboDlg。 (3) 删除原来的Cancel按钮,用编辑器为对话框添加控件。 4.3常用控件 (4)打开ClassWizard的Member Variables标签,为组合框IDC_PATTERN增加成员变量m_Pattern,其类型为Control类的CComboBox 。 (5)为CComboDlg类添加一个int类型的成员变量m_nDrawPattern。 (6)切换到ClassWizard的Messsage Maps标签页,为组合框IDC_PATTERN添加CBN_SELCHANGE(组合框中的当前选项发生改变)的消息映射,并增加下列代码: void CComboDlg::OnSelchangePattern() { int nIndex = m_Pattern.GetCurSel();// 获得当前选项的索引 if (nIndex != CB_ERR) { m_nDrawPattern = m_Pattern.GetItemData(nIndex); // 获得与当前选项相关联的数据 Invalidate(); // 强制系统调用OnPaint函数重新绘制 } } 4.3常用控件 (7)用ClassWizard为对话框添加WM_PAINT的消息映射,并增加下列代码: void CComboDlg::OnPaint() { CPaintDC dc(this); // device context for painting(绘图所必须的设备环境) 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); // 恢复设备环境原来的画刷设置 } 4.3常用控件 (8)用ClassWizard为对话框添加WM_INITDIALOG的消息映射,增加代码: BOOL CComboDlg::OnInitDialog() { CDialog::OnInitDialog(); CString str[6] = {水平线,竖直线,向下斜线,向上斜线,十字线,交叉线}; int nIndex; for (int i=0;

文档评论(0)

4477704 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档