用控件子类化实现拖放显示文件名编辑框时遇到的问题【基于对话框】
2012-05-09 11:52
363 查看
控件子类化的步骤:
为控件派生一个新类,在其中加上需要响应的消息函数。
为DLG类添加控件派生类的对象,并在OnInitDialog中调用XXX.SubClassDlgItem(IDC_XXX,this);
由于需要实现拖放文件功能,所以在EDIT控件初始化时需要调用下面这条语句
DragAcceptFiles(TRUE);
但是我发现把它添加在OnCreate中,它不会被运行的。原因是由资源编辑器添加的EDIT控件不能响应WM_CREATE。至于什么原因,还不是很清楚。
这时候可以把初始化语句添加在另外一个函数中:PreSubclassWindow这个函数将在子类化窗口时被调用,次序是在CWnd::Create或DDX_Control之后,这就是说,无论是动态的创建窗口实例还是使 用对话框模板创建,这个函数都将被调用。PreSubclassWindow在窗口子类化创建后和窗口被显示前被调用,换句话说,这是我们来做窗口初始化 的一个最好时机。
拖放编辑框的效果:
为控件派生一个新类,在其中加上需要响应的消息函数。
为DLG类添加控件派生类的对象,并在OnInitDialog中调用XXX.SubClassDlgItem(IDC_XXX,this);
由于需要实现拖放文件功能,所以在EDIT控件初始化时需要调用下面这条语句
DragAcceptFiles(TRUE);
但是我发现把它添加在OnCreate中,它不会被运行的。原因是由资源编辑器添加的EDIT控件不能响应WM_CREATE。至于什么原因,还不是很清楚。
这时候可以把初始化语句添加在另外一个函数中:PreSubclassWindow这个函数将在子类化窗口时被调用,次序是在CWnd::Create或DDX_Control之后,这就是说,无论是动态的创建窗口实例还是使 用对话框模板创建,这个函数都将被调用。PreSubclassWindow在窗口子类化创建后和窗口被显示前被调用,换句话说,这是我们来做窗口初始化 的一个最好时机。
拖放编辑框的效果:
相关文章推荐
- Visual Studio 2013 MFC基于对话框的程序中加入TeeChart控件后,编译时显示不能实例化抽象类的问题
- 添加控件对话框不显示的问题 ——rich edit 问题
- 基于DevExpress开发的GridView如何实现一列显示不同的控件类型
- 基于单个对话框工程中,CListBox控件上实现 选择/复制功能(不要写CListBox的派生类)
- 实现一个模拟CMD.exe命令编辑模式执行与显示的Delphi控件
- 基于C#的波形显示控件的实现
- MFC/VS 2010中对话框控件初始显示模糊,鼠标移动到上面才显示的问题
- MFC基于对话框的Media Player如何实现全屏显示功能?
- 基于mfc的对话框编程中,实现控件随对话框大小自动缩放以及通过滚动条实现控件移动功能
- 解决WinForm中ComboBox控件的“设置"DataSourse”属性后无法修改项集合”以及两个不相关联的ComboxBox控件实现数据列表显示不可实现的问题
- 移动开发学习第一发:基于百度地图开发地图显示时遇到的问题总结
- 解决ext对话框拖动时里头的控件会被蒙上,无法显示问题
- VC MFC 对话框 Picture控件 显示图像闪烁问题
- 11.29 电驴设置对话框形式的实现中遇到的问题
- 基于pcDuino的WiFi视频监控小车实现过程中遇到的问题及解决方法
- jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
- 基于对话框实现工具条提示显示
- Edit Control(编辑框控件)将光标移动到行尾,实现即时显示新内容
- Delphi中多线程用Synchronize实现VCL数据同步显示 解决在线程中操作控件出现问题
- spring boot实现上传图片并在页面上显示及遇到的问题小结