之前很长时间内用的都是MFC,后来VC的多线程与内存泄露让我焦头烂额,牵扯东西太多,于是乎,转战qt了。
编程过程中,不可避免要操作外部窗口,MFC中操作窗口用的都是CWND::fromHandle();
qt中操作外部窗口与CWND对应的是QWindow类。
HWND hwndLogin=FindWindow(NULL,L"登录");
QWidget* widgetLogin=QWidget::find((WId)hwndLogin);
QWindow* windowLogin=QWindow::fromWinId((WId)hwndLogin);
windowLogin->showFullScreen();
用上面的语句即可将相应句柄对应的窗口最大化显示。当然有不足的地方,比如调用title显示不了窗口的标题的,调用show方法,有时候不能把窗口提到顶层,取决于窗口状态,如果窗口是最小化的,show会将窗口提到最前面,否则没有变化的。。。。我还一度以为方法不好使。。。还是有坑啊。
另外,如果单纯想实现某些窗口的最大化、最小化、放在最前面,可以用API函数,原生态的,既快捷又安全。
::SetForegroundWindow(hwndSilver);
可以将窗口提到最上面。
用QWidget会报错,提示对应句柄的QWidget为空,但是用QWindow是可以的。
使用的是Qt 5.2版本,编译器是minGw。
关于这个知识点 就这样啦。。。
积极主动的人有更多的机会 :)