SetWindowPos无法置顶指定窗体.

路过路人乙 2014-09-04 10:51:19
源码如下:
btn1->Enabled = false;
btn2->Enabled = false;
btn2->Caption = "切换中...";
HANDLE hWindow = FindWindow(NULL,sSxtName.c_str()); //这里是摄像头程序的名字
if( hWindow == NULL )
{
SetLayeredWindowAttributes(Handle,clBlue,125,LWA_ALPHA);
Sleep(2000);
btn2->Caption = "切换至摄像头";
btn1->Enabled = true;
btn2->Enabled = true;
SetWindowPos(Handle, HWND_TOPMOST,Left,Top,Width,Height,0);
return;
}
else //找到了窗体,并执行了下列语句.已下过断点确认.
{
SetWindowPos( hWindow, HWND_TOPMOST, 0, 0, 0, 0,SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE);
SetWindowPos(hWindow, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);

}
Sleep(2000);
btn2->Caption = "切换至摄像头";
btn1->Enabled = true;
btn2->Enabled = true;
SetWindowPos(Handle, HWND_TOPMOST,Left,Top,Width,Height,0);


本来是毫无问题的..只是这摄像头程序更新后,这个切换窗体的工具就不好使了.执行了SetWindowPos也无法切换..

但是有个很奇怪的现象: 我用任务管理器将摄像头程序前置.然后再使用切换工具切换摄像头就可以了.....怎么破解最开始摄像头自动锁定的状态...
...全文
300 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
我不懂电脑 2014-09-04
  • 打赏
  • 举报
回复
恭喜你解决了问题
路过路人乙 2014-09-04
  • 打赏
  • 举报
回复
终于找到一个函数..BingWindowToTop,起到一个激活窗体作用...来人领分后就结贴..
路过路人乙 2014-09-04
  • 打赏
  • 举报
回复
又试了下..不需要用任务管理器.直接手动点击下摄像头的监控界面,让其置前..然后再使用切换工具就可以用了.. 这摄像头最开始的锁定状态到底是什么情况.

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧