Frame_GetWindow(::GetDesktopWindow(), GW_CHILD)

本文介绍了一个使用MFC的示例,展示了如何检查一个MFC框架窗口或视图是否有效,并通过遍历桌面窗口来查找特定窗口的实例。这涉及到使用Windows API函数如IsWindow和GetWindow。
void CMainFrame::OnFrameIsWindow() 
{
	// TODO: Add your command handler code here
	// 
	HWND hWnd=this->GetSafeHwnd();
	if(::IsWindow(hWnd)) //估计Frame会被认为属于Window,而View不会被认为属于Window.
	{
		MessageBox("yes");
	} 
	else
	{
		MessageBox("no");
	}
	 
	//看一看遍历得到不?
	// 寻找先前实例的主窗口
	HWND hWndPrevious = ::GetWindow(::GetDesktopWindow(), GW_CHILD);
	while (::IsWindow(hWndPrevious))
	{
		
		if (hWndPrevious==hWnd)
		{
			MessageBox("get it !");
				return ;
		}
		
		// 继续寻找下一个窗口
		hWndPrevious = ::GetWindow(hWndPrevious, GW_HWNDNEXT);
	}
	MessageBox("can't get it !");
	//看一看遍历得到不?end
}
void CIsWindowView::OnViewIsWindow() 
{
	// TODO: Add your command handler code here
	// 
	HWND hWnd=this->GetSafeHwnd();
	if(::IsWindow(hWnd)) //估计Frame会被认为属于Window,而View不会被认为属于Window.
	{
		MessageBox("yes");
	} 
	else
	{
		MessageBox("no");
	}

	//看一看遍历得到不?
	// 寻找先前实例的主窗口
	HWND hWndPrevious = ::GetWindow(::GetDesktopWindow(), GW_CHILD);
	while (::IsWindow(hWndPrevious))
	{
		
		if (hWndPrevious==hWnd)
		{
			MessageBox("get it !");
			return ;
		}
		
		// 继续寻找下一个窗口
		hWndPrevious = ::GetWindow(hWndPrevious, GW_HWNDNEXT);
     }
	MessageBox("can't get it !");
	//看一看遍历得到不?end
}


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值