`CDialog::SetWindowPos` 崩溃

发布于 2024-10-24 21:58:02 字数 204 浏览 2 评论 0原文

如果我在如下构造的对话框上调用 CDialog::SetWindow:CDialog *tmp=new CDialog(IDD_TEST, theParent);,那么它就会崩溃。如果我调用,CDialog *tmp=new CDialog(); tmp->Create(IDD_TEST, theParent);,那么就不会。怎么会?

If I call CDialog::SetWindow on a dialog constructed as follows: CDialog *tmp=new CDialog(IDD_TEST, theParent);, then it crashes. If I call, CDialog *tmp=new CDialog(); tmp->Create(IDD_TEST, theParent);, then it doesn't. How come?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

逆光下的微笑 2024-10-31 21:58:02

MFC 在这方面有点有趣。创建 C++ 对象并不会创建相应的窗口;这是一个两步过程。您的第二个示例完全按照 Microsoft 的预期方式执行,创建 C++ 类,然后创建它应该控制的窗口。如果您尝试在窗口存在之前调用窗口控制函数,则会发生不好的事情。

MFC is kind of funny that way. Creating a C++ object doesn't create a corresponding window; it's a two step process. Your second example does it exactly the way Microsoft intended, creating the C++ class and then creating the window it's supposed to control. If you try to call a window controlling function before the window exists, bad things will happen.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文