关于vc findwindow问题

来源:百度知道 编辑:UC知道 时间:2024/09/21 05:41:04
我使用VC6.0编程,代码如下:
if(m_time==600)
{
//最小化窗口
CWnd* pWnd=CWnd::FindWindow(NULL,"War3");
pWnd->SendMessage(WM_SYSCOMMAND,SC_MINIMIZE,0);
MessageBox(_T("您设定的游戏时间还剩10分钟,请保存、关闭游戏!"),_T("时间提示"),MB_ICONEXCLAMATION);
}
编译时没有问题,为啥运行时魔兽刚最小化,系统就提示exe 遇到问题需要关闭。
怎么解决?谢谢

if(m_time==600)
{
//最小化窗口
CWnd* pWnd=CWnd::FindWindow(NULL,"War3");
if(pWnd != NULL)//加入这句话
{
pWnd->SendMessage(WM_SYSCOMMAND,SC_MINIMIZE,0);
MessageBox(_T("您设定的游戏时间还剩10分钟,请保存、关闭游戏!"),_T("时间提示"),MB_ICONEXCLAMATION);
}
}

注释掉MessageBox一行试试

CWnd* pWnd=CWnd::FindWindow(NULL,"War3");
这句之后你检查一些pWnd这个指针是否为空, 你确定魔兽的窗口名是"War3", 不确定的话用Spy++看下.
我的估计是CWnd::FindWindow(NULL,"War3") 函数执行失败, 返回了NULL, 导致下面那句出现了异常.