我正在尝试更新我的应用程序以使用RichEdit 2.0;它永远使用1.0。根据Microsoft文档,我将AfxInitRichEdit()更改为AfxInitRichEdit2(),并将资源文件中的类从RICHEDIT更改为RichEdit20A(这对于此应用程序是正确的)。资源文件中只有一个richedit。
当我尝试对包含此richedit的窗口执行任何操作时,应用程序失败。对话框创建在:: CreateDialogIndirect()内部失败,虽然我在CRichEditCtrl :: Create中放置了断点,并且在我从它派生的类中,但这些断点不会跳闸。
出于沮丧,我尝试再次调用AfxInitRichEdit()并调用AfxInitRichEdit2()。该应用程序有效!我放入的断点做了 - 但仅限于我动态创建的控件,而不是资源文件中的控件。当我运行Active Window Spy时,我发现从资源文件创建的richedit以某种方式有一类RICHEDIT,即使我明确地说RichEdit20A,但动态的RichEdit20A是按预期的。
_RICHEDIT_VER是0x210,我正在使用Visual Studio 2013。
我无法弄清楚为什么CreateDialogIndirect()正在进行RICHEDIT控制 - 或者试图制作一个并且失败,如果我不调用AfxInitRichEdit() - 而不是RichEdit20A,尽管有明确的指示相反的。有什么想法吗?
答案 0 :(得分:3)
使用更改构建发布版本,然后再次构建调试版本,解决了这个问题。