要在程序中创建新设计的控件,显然不能用自动创建的办法,因为对话框模板对新控件的特性一无所知.程序可以用手工方法创建控件,在调用派生类的Create函数时,派生类会调用基类的Create函数创建控件.用Create函数创建控件是一件比较麻烦的工作,程序需要为函数指定一大堆的控件风格以及控件的坐标和ID.特别是控件的坐标,没有经验的程序员很难确切地安排控件的位置和大小,往往需要反复调整.利用MFC的CWnd::SubclassDlgItem提供的动态连接功能,可以避免Create函数的许多麻烦,该函数大大简化了在对话框中创建派生控件的过程.

  大家知道,在用手工方法创建控件时,先要构建一个控件对象,然后再用Create函数在屏幕上创建控件窗口,也就是说,控件的创建工作是由控件对象完成的.动态连接的思路则不同,SubclassDlgItem可以把对话框中已有的控件与某个窗口对象动态连接起来,该窗口对象将接管控件的消息处理,从而使控件具有新的特性.SubclassDlgItem函数的声明为

BOOL SubclassDlgItem( UINT nID, CWnd* pParent );

 

  参数nID是控件的ID,pParent是指向父窗口的指针.若连接成功则函数返回TRUE,否则返回FALSE.

  综上所述,要在程序中使用派生控件,应该按下面两步进行:

在对话框模板中放置好基类控件.

在对话框类中嵌入派生控件类的对象.

在OnInitDialog中调用SubclassDlgItem将派生类的控件对象与对话框中的基类控件相连接,则这个基类控件变成了派生控件.

 

  例如,如果要在对话框中使用新设计的编辑框控件,应先在对话框模板中的合适位置放置一个普通的编辑框,然后,在OnInitDialog函数中按下面的方式调用SubclassDlgItem即可:

BOOL CMyDialog::OnInitDialog()

{

CDialog::OnInitDialog();

m_MyEdit.SubclassDlgItem(IDC_MYEDIT, this);

return TRUE;

}

转载于:https://www.cnblogs.com/tianlangshu/archive/2011/03/20/1989517.html

MFC控件的SubclassDlgItem相关推荐

  1. MFC控件编程之复选框单选框分组框

    MFC控件编程之复选框单选框分组框 一丶分组框 分组框 英文叫做 GroubBox 添加了分组框主要就是分组.好看.不重点介绍 二丶单选框 英文: Raido Button 单选框需要注意的事项 1. ...

  2. VS2010中如何实现自定义MFC控件

    本文简要讲解在VS2010中怎样实现自定义MFC控件的知识,以下是分步骤说明. 一.自定义一个空白控件  1.先创建一个MFC工程 NEW Project-->MFC-->MFC Appl ...

  3. MFC控件编程之组合框跟列表框

    MFC控件编程之组合框跟列表框 一丶简介 如果要使用组合框跟列表框.那么就要知道.组合框列表框是最核心的东西就是索引. 索引是从0开始的. 二丶组合框列表框常用的方法 AddString(字符串) 添 ...

  4. MFC 控件PictureControl 清除显示

    MFC 控件PictureControl 清除显示 方法一: GetDlgItem(IDC_STATIC_CAPTURE_PIC)->ShowWindow(FALSE); GetDlgItem( ...

  5. MFC程序调用Windwos CMD命令打印图片 MFC 控件显示层次调整,即(叠放次序)和绘制遮挡置于底层顶层灰色

    MFC打印 打电话 ShellExecute 从您的计划中 print 操作 (特好用) ShellExecute(NULL,"print","c:\\test.png& ...

  6. MFC控件使用说明书

    VC++控件工具箱: 2 按钮(Button):用来接收用户的命令,应用程序在接收到用户命令后,通常需要进行一些后台工作.按钮可以响应单击或双击动作,在按钮接收到鼠标动作后,向其父窗口发送相应的控件通 ...

  7. 面向过程中模拟出面向对象,用c语言模拟出MFC控件,消息循环,“设计用户界面”

    大家好,今天给大家分享"怎样用c模拟出MFC控件 简单模拟出消息循环,按钮控件",面向过程中模拟出面向对象. 编程思路 首先用绘图库EasyX绘制窗口,窗口中绘制按钮,把按钮对象化 ...

  8. 常用MFC控件基础使用(Edit Button Check Combo Tree 显示位图 控件大小自适应、线程、右键菜单、控件调整移动、MFC背景)

    常用MFC控件基础使用 1.Edit Control 2.Button控件 3.Check控件 4.Combo Box 5.Tree 控件 5.快捷键设置 6 显示缓冲区位图 7 窗口自适应大小 8 ...

  9. MFC控件随窗口大小变化原理及实现

    本文主要针对MFC的dialog,实现控件随窗口大小变化. 原理:首先获取dialog的初始大小,当窗口发送变动时,调用OnSize事件和方法,计算缩放比例,然后对界面中的所有控件进行缩放和布局. 实 ...

最新文章

  1. 码农的祖宗是个妹子?!信不信由你!
  2. Seam开发环境中的中文乱码问题
  3. Go 语言编程 — gorm ORM 框架
  4. 区块链预言机(2)预言机概念
  5. com.xxl.rpc.util.XxlRpcException: java.lang.IllegalStateException: failed to create a child event lo
  6. 【职场】看一位前端工程师如何上班摸鱼
  7. 使用vscode删除markdown空行
  8. struct linger
  9. Windows下的函数
  10. elasticsearch 部署
  11. 研究人员:Intel 的 VISA 漏洞可访问计算机中所有数据
  12. 《软件测试》实验一:测试入门
  13. 海康设备添加到萤石云
  14. Unity 实时显示FPS——移动端测试神器
  15. 访问网络计算机提示0 80070035,Win7局域网连接提示0x80070035错误的解决攻略
  16. NTFS权限和文件详解
  17. N个鸡蛋放进M个篮子问题
  18. QT-通用的软件界面框架,好看且实用
  19. 怎么注册公司邮箱?公司邮箱注册流程介绍
  20. 京东上传图片到JD API接口

热门文章

  1. 第十七届全国大学生完全车模组竞速赛方案 - 草案
  2. 允许自行设计赛道之后,参赛同学都想到了什么呢?
  3. 画蛇添足:四条管脚的电位器
  4. TM1810-3, TM1810-2 LED恒流驱动IC
  5. 智能车竞赛相关的教高司公函:公函[2005]201号文、教高司[2005]13号
  6. mmap映射大于4g的文件_iOS文件内存映射——MMAP
  7. 慧鱼机器人编程语言的特点_慧鱼机器人课程设计报告.doc
  8. arduino与java,Arduino具有与Java和C语言类似的IDE集成开发环境和图形化编程环境
  9. java action的头文件注释_有没有java大神,帮我详细注释下面的代码,action里面复制来的...
  10. matlab 冒号操作符