ON_WM_SIZE,ON_WM_MOVE等消息会在OnInitDialog()前执行,控件未初始化就调用的话,指针指向会出错,导致报这个错误。
所以 提示 0xC0000005: 读取位置 0x00000020 时发生访问冲突后,首先检查这些消息中是否使用了未经初始化的控件。
如下:
OnMove中 GetDlgItem(IDC_STATIC_PIC)->GetWindowRect(&rt);获取控件坐标,这个时候如果窗口未初始化,
GetDlgItem(IDC_STATIC_PIC)获取不到控件指针,就会报这个错误;
解决方案很简单,先判断这个窗口指针是否有效,有效再去执行该控件相应的方法:
if(GetDlgItem(IDC_STATIC_PIC))
GetDlgItem(IDC_STATIC_PIC)->GetWindowRect(&rt);