我有一个自定义MFC对话框 CMyDialog ,使用资源编辑器添加了类型为 CMyControl 的自定义控件 - 该对话框具有控件的成员变量并具有DDX建立。
控件正在接收绘制消息,并具有自定义的绘制处理程序。但是我希望在控件中具有等效的OnInitDialog,因此它可以在创建时安全地进行一些初始化 - 将代码放入构造函数会导致问题。
我尝试为WM_CREATE,WM_NCCREATE消息添加处理程序,并为CWnd :: Create添加覆盖...但这些都没有触发。
我应该注意什么,知道编辑内容是否安全?
答案 0 :(得分:4)
对话框控件在创建后在子类化时附加到MFC对象。发送WM_CREATE
时,控件尚未附加到您的对象,并且您没有收到该消息。您可以覆盖PreSubclassWindow
以在控件进行子类化时执行所需的初始化。这将在MFC处理WM_INITDIALOG
期间调用。
答案 1 :(得分:0)
覆盖CWnd :: Create有什么问题?你应该能够做到这一点,然后首先调用父方法(CWnd :: Create()),然后做你的东西。但在这种情况下,您必须自己创建控件。
您还可以覆盖 PreSubclassWindow 。
无论如何,更多信息或一些代码可以很好地理解你的问题。
答案 2 :(得分:0)
您可能还想关注一些these tutorials。