Пример #1
0
void CMDIClient::ClosePage(CTabItem *pItem)
{
	ATLASSERT(pItem);
	if (pItem->m_pCategory->GetWebData()->IsNoClose())
		return;

	if (m_TabCtrl.GetTabItems().size() == 1)
	{
		// 只剩一个,则关闭category
		CloseCategory(pItem->m_pCategory);
		return;
	}

	CTabItem *pNewItem = FS()->TabItem();
	if (pItem == pNewItem)
	{
		pNewItem = m_TabCtrl.GetLeftOrRight(pItem, true, false);
		ActivePage(pNewItem);
	}
	pItem->m_pCategory->m_TabItems.erase(pItem->m_pCategory->m_TabItems.begin() + pItem->GetIndex());
	pItem->m_pCategory->Redraw();
	m_TabCtrl.DeleteItem(pItem->GetIndex());
	bool isTrueClose = true;

	if(isIE6 && wcscmp(pItem->m_pCategory->GetWebData()->GetName() , L"支付宝") == 0)
			isTrueClose = false;
	if(isIE6 && pItem->m_pCategory->m_ShowInfo == L"支付宝")
			isTrueClose = false;

	pItem->GetChildFrame()->OptionalDestroy(0, isTrueClose);
}
Пример #2
0
void CMDIClient::ActiveCategory(CCategoryItem *pCateItem)
{
	if( !m_bSafe )
		return ;


	if (m_CateCtrl.GetCurrentSelection() != pCateItem)
	{
		m_TabCtrl.DeleteAllItems();
		for (size_t i = 0; i < pCateItem->m_TabItems.size(); i++)
			m_TabCtrl.InsertItem(i, pCateItem->m_TabItems[i]);
		m_CateCtrl.SelectItem(pCateItem);
		if (pCateItem->m_pSelectedItem)
			ActivePage(pCateItem->m_pSelectedItem);
		else if (!pCateItem->m_TabItems.empty())
			ActivePage(pCateItem->m_TabItems[0]);

		FS()->MainFrame()->RecalcClientSize(-1, -1);
	}
}
Пример #3
0
LRESULT CMDIClient::OnGetExistWebPage(UINT /* uMsg */, WPARAM wParam, LPARAM lParam)
{
	if( !m_bSafe )
		return NULL;

	CreateNewWebPageData *pNewPage = (CreateNewWebPageData*)lParam;
	
	if (pNewPage->lpszURL != URL_NO_NAVIGATE || pNewPage->dwSize == 0)
		return NULL;

	std::tstring strURL = (LPCTSTR)((BYTE*)pNewPage + sizeof(CreateNewWebPageData));

	HWND hReturnChildFrame = NULL;
	CCategoryItem *pCate = NULL;

	if(pNewPage->bGetBill == false)
		pCate = m_CateCtrl.FindExistItem(strURL.c_str());
	else
	{
		pCate = m_CateCtrl.FindExistItem(strURL.c_str() , 1);
		if(pCate != NULL)
		{
			CTabItem* pTabItem = pCate->m_TabItems[0];
			return (LRESULT)pTabItem->GetChildFrame()->m_hWnd;
		}
	
	}
	if (pCate == NULL)
		return NULL;

	for (size_t i = 0; i < pCate->m_TabItems.size(); ++i)
	{
		CTabItem* pTabItem = pCate->m_TabItems[i];
		if (_tcsicmp(pTabItem->GetURLText(), strURL.c_str()) == 0)
		{
			ActivePage(pTabItem);
			return (LRESULT)pTabItem->GetChildFrame()->m_hWnd;
		}
	}

	return NULL;
}
Пример #4
0
LRESULT CPageContainerWnd::OnActivePage(WPARAM wParam, LPARAM lParam)
{
	TRACE("激活页面%d\n", wParam);

	int nPageIndex = wParam;
	int size = m_vPages.size();

	// 前一个页面休眠
	InactivePage();

	if (m_vPages[nPageIndex].m_pPageWnd == NULL)
	{
		OpenPage(nPageIndex);
	}
	else
	{
		ActivePage(nPageIndex);
	}


	return 0;
}
Пример #5
0
// 创建一个新的页面标签页
LRESULT CMDIClient::OnCreateNewWebPage(UINT /* uMsg */, WPARAM wParam, LPARAM lParam)
{
	if( !m_bSafe )
		return NULL;

#ifndef SINGLE_PROCESS
	CBankLoader::GetInstance()->Safeguard();
#endif


	CRecordProgram::GetInstance()->RecordDebugInfo(MY_PRO_NAME, MY_COMMON_PROCESS, L"创建新的页面");

	CreateNewWebPageData *pNewPage = (CreateNewWebPageData*)lParam;

	std::tstring strURL = _T("about:blank");
	std::tstring strAdditionalInfo;
	if (IS_VALID_URL(pNewPage->lpszURL))
	{
		if (pNewPage->dwSize > 0)			// >0表示url的指针只是一个flag,不是真实地址,需要转换
			strURL = (LPCTSTR)((BYTE*)pNewPage + sizeof(CreateNewWebPageData));
		else
			strURL = pNewPage->lpszURL;
	}
	else if (pNewPage->lpszURL == URL_NO_NAVIGATE)		// 点击链接打开新页面,此时不去navigate url,只是显示出来
	{
		if (pNewPage->dwSize > 0)
			strURL = (LPCTSTR)((BYTE*)pNewPage + sizeof(CreateNewWebPageData));
		else
			strURL = _T(" ");
	}
	else if (pNewPage->lpszURL == URL_WITH_REFERER)
		strURL = (LPCTSTR)((BYTE*)pNewPage + sizeof(CreateNewWebPageData));
	else if (pNewPage->lpszURL == URL_WITH_POSTDATA)
	{
		strURL = (LPCTSTR)((BYTE*)pNewPage + sizeof(CreateNewWebPageData));
		size_t nPos = strURL.find('\n');
		if (nPos != std::wstring::npos)
		{
			strAdditionalInfo = strURL.substr(nPos + 1);
			strURL = strURL.substr(0, nPos);
		}
	}

	//std::wstring strDomain = ExtractTopDomain(strURL.c_str());
	const CWebsiteData *pData;
	// 当创建导入账单页面时,独自进行处理,在导入账单页进行,防止新开Tab页去独立显示
	if(pNewPage->bGetBill == false)
		pData = CURLList::GetInstance()->GetData(L"", strURL.c_str());
	else
		pData = CURLList::GetInstance()->GetData(L"getbill", strURL.c_str());

	if (pData == NULL)
	{
		if (_tcsnicmp(strURL.c_str(), _T("http"), 4) == 0)
		{
			//::ShellExecute(NULL, _T("open"), strURL.c_str(), strURL.c_str(), NULL, SW_SHOW);
			CListManager::NavigateWebPage(strURL.c_str());
			
			CRecordProgram::GetInstance()->RecordCommonInfo(MY_PRO_NAME, MY_COMMON_PROCESS, L"NavigateWebPage创建新页面");
			CRecordProgram::GetInstance()->RecordDebugInfo(MY_PRO_NAME, MY_COMMON_PROCESS, strURL.c_str());
			return 0;
		}
		else
		{
			//MessageBox(strURL.c_str(), _T("配置文件错误"), MB_OK);
			return 0;
		}
	}

	std::tstring strChildFrameUrl;
	CTabItem *pCreateFromItem = NULL;
	if (::IsWindow(pNewPage->hCreateFromChildFrame))
	{
		CChildFrame *pChildFrame = (CChildFrame*)::GetWindowLongPtr(pNewPage->hCreateFromChildFrame, GWLP_USERDATA);
		//ATLASSERT(!::IsBadReadPtr(pChildFrame, sizeof(CChildFrame)));
		if (pChildFrame && !::IsBadReadPtr(pChildFrame, sizeof(CChildFrame)))
		{
			pCreateFromItem = pChildFrame->GetItem();
			strChildFrameUrl = pCreateFromItem->GetURLText();
		}
	}

	HWND hReturnChildFrame = NULL;

	// 记住这里进行分类建立窗口的功能
	CTabItem *pItem = new CTabItem(pNewPage->bNoClose);
	CCategoryItem *pCate = m_CateCtrl.FindOrCreateItem(strURL == _T("about:blank") ? strChildFrameUrl.c_str() : strURL.c_str(), pCreateFromItem,  pNewPage->bGetBill, pNewPage->BillFlag);//记账页强制创建新页面
	pCate->m_TabItems.push_back(pItem);
	pItem->m_pCategory = pCate;

	DWORD dwProcessID = 0;
	if (pCreateFromItem)
		::GetWindowThreadProcessId(pCreateFromItem->GetAxControl(), &dwProcessID);
	CChildFrame *pChild = new CChildFrame(FS(), m_hWnd, strURL.c_str(), pItem, pNewPage->lpszURL == URL_NO_NAVIGATE, false, dwProcessID, strChildFrameUrl);

	if (m_CateCtrl.GetCurrentSelection() == pCate)
		m_TabCtrl.InsertItem(m_TabCtrl.GetTabItems().size(), pItem);

	if (pNewPage->bShowImmediately || m_TabCtrl.GetCurrentSelection() == NULL)
		ActivePage(pItem);

	hReturnChildFrame = pChild->m_hWnd;

	return (LRESULT)hReturnChildFrame;
}