主界面弹出提示框后,它变成不可操作的,状态会有什么变化?有什么函数能判断出来么?我要用代码操作一个程序的界面,在最后完成时,会有一个MessageBox弹出来提示成功,我用下面的代码把提示框关闭 while (true)
{
hChild = ::GetLastActivePopup(hWnd);//hWnd是主界面句柄
hChild = ::GetWindow(hChild, GW_CHILD);//获取“确定”按钮的句柄
::GetClassName(hChild, pszText, sizeof(pszText));
if (NULL == hChild || strcmpi(pszText, "button") != 0)
{
Sleep(100);
continue;
}
::SendMessage(hChild, WM_LBUTTONDOWN, NULL, NULL);
::SendMessage(hChild, WM_LBUTTONUP, NULL, NULL);
break;
}
现在的问题是,偶尔会有几次不弹出MessageBox的情况,这种情况下如何不让程序继续在这死循环?想了一下,可以限制循环次数,但觉得这样不太好,看能不能通过判断主界面的状态来跳出循环,或者其它方法也可。
{
hChild = ::GetLastActivePopup(hWnd);//hWnd是主界面句柄
hChild = ::GetWindow(hChild, GW_CHILD);//获取“确定”按钮的句柄
::GetClassName(hChild, pszText, sizeof(pszText));
if (NULL == hChild || strcmpi(pszText, "button") != 0)
{
Sleep(100);
continue;
}
::SendMessage(hChild, WM_LBUTTONDOWN, NULL, NULL);
::SendMessage(hChild, WM_LBUTTONUP, NULL, NULL);
break;
}
现在的问题是,偶尔会有几次不弹出MessageBox的情况,这种情况下如何不让程序继续在这死循环?想了一下,可以限制循环次数,但觉得这样不太好,看能不能通过判断主界面的状态来跳出循环,或者其它方法也可。
解决方案 »
- 如何实现图像分割
- PROGRESS如何使用
- 如何设置对话框启动时文本框自动获得输入焦点
- 大哥,大姐们,我是菜鸟想学VC++可以推荐几本书自学吗?
- 哪有installshield for vc60啊,各位前辈提个醒了:)
- 编写在浏览器中不弹出警告的ActiveX控件
- 拆分字段,在线给分!
- 求教:server端 怎么能实时地通知activex,让其响应?
- Visual Studio .Net 2003 中VC工程组件导入,导出问题
- 当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数.这段函数就是回调函数。
- 大家进来给我一抉择凡是进来的均会给分
- hook WM_CTLCOLOR 消息后如何在dll中处理?
::SendMessage(...)
换成
::SendMessageTimeOut(...)
如果我没理解错误的话,负责弹出对话框的主窗口也是楼主写的代码,那怎么会需要这么复杂的方式来解决问题?
楼主的目的是要弹出对话框的同时主窗口也能有个某种状态上的值的变化、以便于执行你需要的代码对吧?
直接弄个bool变量,当弹出MessageBox的时候变量改值,然后在可循环的函数里比如onpaint之类用if(true == 变量){……}
这样不就OK了么?