在修改MFC对话框控件之前,它应该收到什么消息?

在修改MFC对话框控件之前,它应该收到什么消息?,mfc,Mfc,我有一个自定义MFC对话框CMyDialog,使用资源编辑器添加了一个类型为CMyControl的自定义控件-该对话框有一个控件的成员变量,并设置了DDX 控件正在接收绘制消息,并且具有自定义的绘制处理程序。但是我希望在控件中具有与OnInitDialog等效的功能,这样它可以在创建时安全地进行一些初始化-将代码放入构造函数会导致问题。 我尝试为WM\U CREATE、WM\U NCCREATE消息添加处理程序,并将覆盖添加到CWnd::CREATE。。。但这些都没有开火 我应该注意什么,才能知

我有一个自定义MFC对话框CMyDialog,使用资源编辑器添加了一个类型为CMyControl的自定义控件-该对话框有一个控件的成员变量,并设置了DDX

控件正在接收绘制消息,并且具有自定义的绘制处理程序。但是我希望在控件中具有与OnInitDialog等效的功能,这样它可以在创建时安全地进行一些初始化-将代码放入构造函数会导致问题。
我尝试为WM\U CREATE、WM\U NCCREATE消息添加处理程序,并将覆盖添加到CWnd::CREATE。。。但这些都没有开火


我应该注意什么,才能知道编辑内容是安全的?

重写CWnd::Create有什么问题?您应该能够做到这一点,然后首先调用父方法(CWnd::Create()),然后执行您的工作。但在这种情况下,您必须自己创建控件

您还可以覆盖PreSubclassWindow


无论如何,多了解一点信息或一些代码会很好地理解您的问题。

对话框控件在创建子类后会附加到MFC对象。当
WM_CREATE
被发送时,控件尚未附加到对象,并且您没有收到消息。当控件被子类化时,您可以重写
PreSubclassWindow
,以执行所需的初始化。这将在MFC处理
WM_INITDIALOG
期间调用

  • 检查您的messagemap是否设置正确,是否确实包含WM_CREATE
  • 检查OnCreate函数签名是否正确声明
  • 在OnCreate中使用ASSERT而不是断点
    (可能它正在到达那里,但跳过了断点)
  • 尝试使用全新的应用程序隔离问题,如果问题仍然存在,则发布代码

  • 您可能还需要遵循以下一些操作。

    通过重写从不调用Create。