您的位置:首页 > 其它

用控件子类化实现拖放显示文件名编辑框时遇到的问题【基于对话框】

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在窗口子类化创建后和窗口被显示前被调用,换句话说,这是我们来做窗口初始化 的一个最好时机。

拖放编辑框的效果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐