⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 addfilterdlg.h

📁 一个管理ie的软件
💻 H
字号:
// AddFilterDlg.h : interface of the CAddFilterDlg class
//
/////////////////////////////////////////////////////////////////////////////

#ifndef __AddFilterDlg_h__
#define __AddFilterDlg_h__

class CAddFilterDlg : public CDialogImpl<CAddFilterDlg>
{
public:
	enum { IDD = IDD_ADD_FILTER };

	CString			m_sTitle;
	CString			m_sUrl;
	BOOL			m_bTitleFilter;
	BOOL			m_bAddToExclusions;
	BOOL			m_bExclusionsOnly;
	BOOL			m_bShowPopupList;

	CButton			m_btnFilterType1;//Title
	CButton			m_btnFilterType2;//URL
	CButton			m_btnAddToExclusions;
	CListViewCtrl	m_listPopup;

	CDlgItemResizer m_Resizer;

	BEGIN_MSG_MAP(CAddFilterDlg)
		MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
		MESSAGE_HANDLER(WM_SIZE, OnSize)
		COMMAND_HANDLER(IDC_FILTER_TYPE1, BN_CLICKED, OnClickedType1)
		COMMAND_HANDLER(IDC_FILTER_TYPE2, BN_CLICKED, OnClickedType2)
		NOTIFY_HANDLER(IDC_POPUP_LIST, NM_CLICK , OnClickedPopupList)
		COMMAND_ID_HANDLER(IDOK, OnOK)
		COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
	END_MSG_MAP()

	LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
	{
		//add controls to resize manager
		m_Resizer.Add(m_hWnd, IDOK, RESIZE_LOCKBOTTOM);
		m_Resizer.Add(m_hWnd, IDCANCEL, RESIZE_LOCKBOTTOM);

		// initial controls
		SetDlgItemText(IDC_POPUP_TITLE, m_sTitle);
		SetDlgItemText(IDC_POPUP_URL, m_sUrl);

		m_btnFilterType1.Attach(GetDlgItem(IDC_FILTER_TYPE1));
		m_btnFilterType2.Attach(GetDlgItem(IDC_FILTER_TYPE2));
		m_btnAddToExclusions.Attach(GetDlgItem(IDC_ADD_TO_EXCLUSIONS));

		if (m_sTitle.GetLength() == 0 && m_sUrl.GetLength() > 0)
		{
			m_btnFilterType2.SetCheck(1);
			::EnableWindow(GetDlgItem(IDC_POPUP_TITLE), FALSE);
		}
		else
		{
			m_btnFilterType1.SetCheck(1);
			::EnableWindow(GetDlgItem(IDC_POPUP_URL), FALSE);
		}
		m_btnAddToExclusions.SetCheck(m_bAddToExclusions ? 1 : 0);

		if (m_bExclusionsOnly)
		{
			m_btnAddToExclusions.EnableWindow(FALSE);
		}

		m_listPopup.Attach(GetDlgItem(IDC_POPUP_LIST));

		DWORD dwStyle;
		dwStyle = m_listPopup.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE);
		dwStyle |= LVS_EX_FULLROWSELECT | LVS_EX_LABELTIP;
		m_listPopup.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (LPARAM)dwStyle);
		
		if (!m_bShowPopupList)
		{
			CRect rectDlg;
			CRect rectStatic;
			CRect rectOkButton;

			::GetWindowRect(m_hWnd, &rectDlg);
			::GetWindowRect(GetDlgItem(IDC_STATIC_POPUP), &rectStatic);
			::GetWindowRect(GetDlgItem(IDOK), &rectOkButton);
			rectDlg.bottom -= rectOkButton.top - rectStatic.top;
			::SetWindowPos(m_hWnd, HWND_TOP, 
				rectDlg.left, rectDlg.top,
				rectDlg.right - rectDlg.left, 
				rectDlg.bottom - rectDlg.top, SWP_SHOWWINDOW);

			m_listPopup.EnableWindow(FALSE);
			m_listPopup.ShowWindow(SW_HIDE);
			::ShowWindow(GetDlgItem(IDC_STATIC_POPUP), SW_HIDE);
		}
		else
		{
			// set column header
			CString sHeaderTitle;
			LV_COLUMN lvc;
			lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;

			sHeaderTitle.LoadString(IDS_LOG_TITLE);
			lvc.iSubItem = 0;
			lvc.pszText = sHeaderTitle.LockBuffer();
			lvc.cx = 160;
			lvc.fmt = LVCFMT_LEFT;
			m_listPopup.InsertColumn(0, &lvc);
			sHeaderTitle.UnlockBuffer();

			sHeaderTitle.LoadString(IDS_LOG_URL);
			lvc.iSubItem = 1;
			lvc.pszText = sHeaderTitle.LockBuffer();
			lvc.cx = 220;
			lvc.fmt = LVCFMT_LEFT;
			m_listPopup.InsertColumn(1, &lvc);
			sHeaderTitle.UnlockBuffer();

			//fill list
			USES_CONVERSION;
			HRESULT hr;
			SHDocVw::IShellWindowsPtr pShellWindows;
			CComQIPtr<IWebBrowser2, &IID_IWebBrowser2> pBrowser;
			CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2> pDocument;
			IDispatch* pDisp = NULL;

			if (pShellWindows.CreateInstance(__uuidof(SHDocVw::ShellWindows)) == S_OK)
			{
				long lCount = pShellWindows->GetCount();
				long j = 0;
				int nIndex;
				BSTR bstrTitle = NULL;
				BSTR bstrUrl = NULL;
				HWND hBrowserWnd;
				TCHAR szClassName[MAX_PATH];

				for (long i=0; i<lCount; i++)
				{
					_variant_t va(i, VT_I4);
					pShellWindows->raw_Item(va, &pDisp);

					if (!pDisp)
					{
						continue;
					}

					pBrowser = pDisp;
					pDisp->Release();
					if (!pBrowser)
					{
						continue;
					}

					pBrowser->get_HWND((long*)&hBrowserWnd); 
					GetClassName(hBrowserWnd, szClassName, MAX_PATH);
					if (_tcscmp(szClassName, _T("ExploreWClass")) == 0)
					{
						continue;
					}

					pBrowser->get_LocationURL(&bstrUrl);

					hr = pBrowser->get_Document(&pDisp);
					if (SUCCEEDED(hr) && pDisp != NULL)
					{
						pDocument = pDisp;
						pDisp->Release();
						if (pDocument)
						{
							pDocument->get_title(&bstrTitle);
						}

						LV_ITEM	lvi;
						lvi.mask = LVIF_TEXT;
						lvi.iItem = j;
						lvi.iSubItem = 0;
						lvi.pszText = W2T(bstrTitle);
						nIndex = m_listPopup.InsertItem(&lvi);
						m_listPopup.SetItemText(nIndex, 1, W2T(bstrUrl));
						j++;
					}

					if (bstrTitle)
					{
						SysFreeString(bstrTitle);
					}
					if (bstrUrl)
					{
						SysFreeString(bstrUrl);
					}
				}
			}
		}

		::SetFocus(GetDlgItem(IDC_POPUP_TITLE));
		CenterWindow(GetParent());
		return FALSE;
	}

	LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
	{
		m_Resizer.Resize(m_hWnd);
		return 0;
	}

	LRESULT OnClickedType1(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
	{
		m_btnFilterType2.SetCheck(0);
		::EnableWindow(GetDlgItem(IDC_POPUP_TITLE), TRUE);
		::EnableWindow(GetDlgItem(IDC_POPUP_URL), FALSE);
		return 0;
	}

	LRESULT OnClickedType2(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
	{
		m_btnFilterType1.SetCheck(0);
		::EnableWindow(GetDlgItem(IDC_POPUP_TITLE), FALSE);
		::EnableWindow(GetDlgItem(IDC_POPUP_URL), TRUE);
		return 0;
	}

	LRESULT OnClickedPopupList(int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
	{
		LPNMITEMACTIVATE lpnmitem = (LPNMITEMACTIVATE)pnmh;

		CString sTitle;
		LPTSTR pTitle;
		CString sUrl;
		LPTSTR pUrl;

		pTitle = sTitle.GetBuffer(MAX_PATH);
		m_listPopup.GetItemText(lpnmitem->iItem, 0, pTitle, MAX_PATH);
		sTitle.ReleaseBuffer();

		pUrl = sUrl.GetBuffer(MAX_PATH);
		m_listPopup.GetItemText(lpnmitem->iItem, 1, pUrl, MAX_PATH);
		sUrl.ReleaseBuffer();

		SetDlgItemText(IDC_POPUP_TITLE, sTitle);
		SetDlgItemText(IDC_POPUP_URL, sUrl);
		return 0;
	}

	LRESULT OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
	{
		CString sText;
		LPTSTR pText = sText.GetBuffer(MAX_PATH);
		m_bTitleFilter = m_btnFilterType1.GetCheck();
		if (m_bTitleFilter)
		{
			GetDlgItemText(IDC_POPUP_TITLE, pText, MAX_PATH);
		}
		else
		{
			GetDlgItemText(IDC_POPUP_URL, pText, MAX_PATH);
		}

		sText.ReleaseBuffer();
//		sText.TrimLeft();
//		sText.TrimRight();
		if (sText.GetLength() == 0)
		{
			CString sErrorMsg;
			sErrorMsg.LoadString(IDS_INVALID_INPUT);
			MessageBox(sErrorMsg, NULL, MB_OK | MB_ICONERROR);
			return 0;
		}

		if (m_bTitleFilter)
		{
			m_sTitle = sText;
		}
		else
		{
			m_sUrl = sText;
		}

		m_bAddToExclusions = m_btnAddToExclusions.GetCheck();

		EndDialog(IDOK);
		return 0;
	}

	LRESULT OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
	{
		EndDialog(IDCANCEL);
		return 0;
	}
};


#endif //__AddFilterDlg_h__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -