gpt4 book ai didi

C++ MFC - 代码执行失败而不在 CDialog::OnSize 事件 (GetWindowRect) 上引发运行时错误

转载 作者:行者123 更新时间:2023-11-30 04:04:36 24 4
gpt4 key购买 nike

我正在尝试访问 CDialog::OnSize 事件处理程序中的控件大小属性。代码编译并运行,但似乎在 GetWindowRect 处失败。没有抛出我可以看到的运行时错误,但是包含和跟随 GetWindowRect 调用的代码静默无法运行。

我已经在发布和 Debug模式下运行,断点位于适当的位置(未命中 GetWindowRect)。我还使用了修改 GetWindowRect 之后的一些成员变量的代码作为附加测试,我也可以看到它没有运行。

virtual void CMainFormDialog::OnSize(UINT nType, int cx, int cy) 
{
....

auto pOutputEdit = (CEdit*) GetDlgItem(CE_OutputEdit);

CRect pOutputEditRect;

// No code is executed following this statement...

pOutputEdit->GetWindowRect(&pOutputEditRect);

....
}

我在这里尝试访问我的 CEdit 控件的属性的方式有问题吗?为什么它会无提示地失败?

谢谢。

最佳答案

OnSize 可能作为对话框创建的一部分被调用,此时 CE_OutputEdit 可能尚未创建。 CE_OutputEdit 是作为 OnInitDialog 的一部分创建和绑定(bind)的。检查 GetDlgItem 的返回值,只有当它返回非 NULL 时才执行您需要做的任何事情。

如果需要,请在调用 CDialog::OnInitDialog 并完成其他必要的初始化后使用设置为 true 的变量。然后在 OnSize 中使用此变量来确定您是否应该进行处理。不管怎样,您仍然应该检查 GetDlgItem

的返回值

关于C++ MFC - 代码执行失败而不在 CDialog::OnSize 事件 (GetWindowRect) 上引发运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23675914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com