DDX和建立控件

翻译|其它|编辑:郝浩|2005-06-09 09:31:00.000|阅读 1430 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>


DDX和建立控件

问:我想在一个子窗口中建立一个OnCreate()映象(比如滚动条,按钮等),我发现快速的方法是从相应的类中继承一个新的类,继承OnCreate()函数.但当我建立一个数字数据交换(DDX) 控件时(因为我不想为这个控件调Create函数)却不能调用OnCreate()函数,那么我该怎么做呢?


答:1)看一下MFC的源代码就知道了:DDX_Control(IDC_FOO, m_wndFoo)返回值类似于 m_wndFoo.SubclassWindow(GetDlgItem(IDC_FOO)).所以在你开始使用消息映象时, Win系统已经调用过::CreateWindow(...)了(事实上你也不能在这使用子类)看看虚函数PreSubclassWindow()是否符合你的要求,如果该函数也不能满足你需要的话, 定义一个自定义窗口类(是WNDCLASS,而不是CWnd),放置一个自定义控件在这个对话框资源类中,这样就 应该能实现你所要求的了


2)当一个控件放置在对话框中时,WIN将在对话框模板中建立,窗口建立完毕之后,相应的 MFC控件已经完成,这就是为什么Create永远不能被调用.在窗口显示在屏幕之前要得到一个消息,你必须在MFC类中继承一个类,改写PreSubclassWindow,它将在主窗口显示之前,必须的工作过完成之前调用.

void CMyButton::PreSubclassWindow()
{
// TODO ........

Cbutton::PreSubclassWindow();
}
 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP