GetDlgItem所获取的窗口CWnd*并非一定是全局的。
① 若控件绑定了变量,那么通过GetDlgItem所获取的CWnd*是全局的。对该CWnd*进行保存,随时都可以正确调用
② 若控件没有绑定变量,仅仅只有一个ID,那么通过GetDlgItem所获取的CWnd*仅在当前函数体内有效。函数体结束时,该CWnd*会被释放。所以,如果对CWnd*进行了保存,当在其他函数内调用时就会触发ASSERT,因为指针已经被释放了
本文详细解释了在MFC中使用GetDlgItem函数时应注意的问题:当控件绑定了变量时,通过此函数获取的CWnd*指针是全局有效的;而未绑定变量仅通过ID标识的控件,其获取的CWnd*指针仅在当前函数作用域内有效。不当的使用会导致内存访问错误。
GetDlgItem所获取的窗口CWnd*并非一定是全局的。
① 若控件绑定了变量,那么通过GetDlgItem所获取的CWnd*是全局的。对该CWnd*进行保存,随时都可以正确调用
② 若控件没有绑定变量,仅仅只有一个ID,那么通过GetDlgItem所获取的CWnd*仅在当前函数体内有效。函数体结束时,该CWnd*会被释放。所以,如果对CWnd*进行了保存,当在其他函数内调用时就会触发ASSERT,因为指针已经被释放了

被折叠的 条评论
为什么被折叠?