c++ MFC -在CDialog::OnSize事件(GetWindowRect)上没有抛出运行时错误的代码执行失败
C++ MFC - code execution failure without throwing runtime error on CDialog::OnSize event (GetWindowRect)
我正在尝试访问CDialog::OnSize事件处理程序中的控制大小属性。代码编译并运行,但似乎在GetWindowRect失败。我没有看到任何运行时错误被抛出,但是包括GetWindowRect调用在内和之后的代码静默地运行失败。
我在发布和调试模式下运行,在适当的位置有断点(没有击中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);
....
}
是有什么问题的方式,我试图访问我的信用控制的属性在这里,为什么它无声地失败?
谢谢。
OnSize可能作为对话框创建的一部分被调用,此时CE_OutputEdit
可能尚未创建。CE_OutputEdit
作为OnInitDialog
的一部分被创建和绑定。检查GetDlgItem的返回值,只有当它返回非NULL时才执行你需要做的事情。
如果需要,在调用CDialog::OnInitDialog
并完成其他必要的初始化后使用设置为true的变量。然后在OnSize
中使用这个变量来确定是否应该进行处理。无论如何,您仍然应该检查GetDlgItem
相关文章:
- 删除指向指针的指针是运行时错误吗
- c++中的指针和运行时错误
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 在同一模拟中使用静脉和静脉_ inet内容时出现运行时错误
- 对单向链表进行排序时出现运行时错误
- 为什么此代码存在运行时错误?
- 你能解释一下什么运行时错误是如何解决它的吗?
- 为什么会出现 gettnig 运行时错误:加载类型为"_Bit_type"(stl_bvector.h) 的空指针?
- 为什么程序在 c++ 中迭代 emtpy 向量时会抛出运行时错误
- 运行时错误:引用绑定到类型为"int"的空指针
- 为什么当 vector 为空时会显示运行时错误?
- C++运行时错误与快速排序算法抛出堆栈转储错误
- 运行时错误:矢量下标超出范围:正在检查空集
- 分配给gslice_array会导致运行时错误
- cout 新创建的对象引发运行时错误
- 通过Linux命令行执行时,可执行文件运行正常 - 调用C System()命令时运行时错误
- 为什么我的程序在执行代码时出现运行时错误
- 运行时错误 -f1.exe 不存在或不是可执行文件
- c++ MFC -在CDialog::OnSize事件(GetWindowRect)上没有抛出运行时错误的代码执行失败
- 运行时错误-函数执行失败后的代码-c++