MFC高手请进

我用ShowWindow()函数来实现通过一个对话框来打开qq窗口,用FindWindow()来返回qq的窗口句柄;实现代码如下:void CQQopenDlg::OnButton1() //这个是对话框一个按钮的响应函数。{ // TODO: Add your control notification handler code here if(!::ShowWindow(::FindWindow(NULL,"QQ2011"),SW_SHOW)) MessageBox("显示qq窗口");}结果在第一次运行的时候是可以实现目的的,可是到了以后就一直打不开窗口了。而我改变了一下:void CQQopenDlg::OnButton1() { // TODO: Add your control notification handler code here if(!::ShowWindow(::FindWindow("TXGuiFoundation",NULL),SW_SHOW)) MessageBox("显示qq窗口");}"TXGuiFoundation"是qq窗口的类名还是不可以。而我又改变了一下void CQQopenDlg::OnButton1() { // TODO: Add your control notification handler code here if(!::ShowWindow(::FindWindow("shell_TrayWnd",NULL),SW_HIDE)) MessageBox("显示操作系统任务栏操作成功");}则是可以的。这是为啥!
2026年09月20日 20:18
有3个网友回答
网友(1):

应该是这样理解的
只有在隐藏的情况下,也就是主窗体不可见的时候调用才有效,
已经可见,在此调用,就会出现错误,想想,已经可见,再次调用这个函数意义就没了,
前两个应该可以调用成功,在窗体不可见的时候都会成功,
最后一个为什么成功:
因为它实际也就是隐藏主窗口,其实我觉得,得大气点,细节的考虑,必要的时候采用,
觉得你还是多抓紧时间学习其他吧!!

网友(2):

我用你的第一份代码
是可以使最小化的qq窗口显示出来,不存在你说的第一次第二次的问题
如果qq窗口停靠在边上隐藏到桌面外面是不能显示的.
//下面是改进后的,还是有点问题,不过可以show出来了
void CDlgTestDlg::OnBnClickedButton1()
{
HWND hWnd = ::FindWindow(NULL,L"QQ2011");
if(hWnd)
{
if (::IsWindowVisible(hWnd))//是否已经显示
{//如果已经显示了,移动窗口位置到200,200//坐标你可以自己调整
if(::SetWindowPos(hWnd, NULL, 200, 200, 0, 0, SWP_NOSIZE | SWP_SHOWWINDOW | SWP_NOZORDER))
{

MessageBox(L"显示qq窗口");
}
}
else
{//如果隐藏,把它show出来
if(::ShowWindow(hWnd, SW_SHOW))
{
MessageBox(L"显示qq窗口");
}
}
}
}

网友(3):

是打不开QQ窗口?还是弹不出你的对话框?
如果是后者,QQ窗口已经显示了,返回值为真,不会再调用messagebox