LRESULT CTuotuoCategoryCtrl::OnGetToolTipInfo(LPNMHDR pnmh)
{
	LPNMSTTDISPINFO pnmdsp = (LPNMSTTDISPINFO)pnmh;
	pnmdsp->dwFlags = STTDSPF_TEXT;
	if (pnmdsp->pdwIndex >= 1 && pnmdsp->pdwIndex <= 5)
		pnmdsp->szText = _T("");
	else if (pnmdsp->pdwIndex)
	{
		HWND hChildFrame = (HWND)pnmdsp->pdwIndex;
		if (::IsWindow(hChildFrame))
		{
			CChildFrame *pChild = (CChildFrame*)::GetWindowLongPtr(hChildFrame, GWLP_USERDATA);
			if (pChild)
			{
				if (pChild->GetItem()->m_pCategory->m_pWebData == START_PAGE_WEBSITE_DATA)
					pnmdsp->szText = _T("我的首页");
				else if (pChild->GetItem()->m_pCategory->m_pWebData)
					pnmdsp->szText = pChild->GetItem()->GetText();
				else
					pnmdsp->szText = _T("");
			}
			else
				pnmdsp->szText = _T("");
		}
		else
			pnmdsp->szText = _T("");
	}
	else
		pnmdsp->szText = _T("");

	return 0;
}
예제 #2
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;
}