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

📄 collectordlg.cpp

📁 1.MyIE开源工程协议 MyIE开源工程遵循GNU通用公共许可证GPL(GNU General Public License)开发,任何人都可以永久免费安装使用,在你下载和使用MyIE源代码前,请
💻 CPP
📖 第 1 页 / 共 2 页
字号:

	}catch(...){}

    return TRUE;
}

//#pragma optimize( "s", off)

int CCollectorDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	SetIcon(LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_SAVE)),FALSE);
	return 0;
}

BOOL CCollectorDlg::OnInitDialog() 
{
#ifdef _WRITE_LNG_FILE_
	_WriteDlgString(this,"DialogCollector");
	this->OnCancel();
	return TRUE;
#endif
	LOADDLG("DialogCollector");
	CDialog::OnInitDialog();

	m_txt.SetLimitText(MAX_COLLECTOR);
	m_output.SetLimitText(MAX_COLLECTOR);
	m_script.SetLimitText(MAX_COLLECTOR);
	if (!m_ToolBar.CreateEx(this))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}
	// set up toolbar properties
	CImageList img;
	img.Create(16, 16, ILC_COLORDDB|ILC_MASK, 8, 1);
	HBITMAP hbmp = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_COLLECTOR_TOOL));
	ImageList_AddMasked(img.GetSafeHandle(), hbmp, RGB(255,0,255));
	DeleteObject(hbmp);
	m_ToolBar.GetToolBarCtrl().SetImageList(&img);
	img.Detach();
	//
	m_ToolBar.SetButtons(NULL, 12);
	m_ToolBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT| TBSTYLE_TOOLTIPS );
	m_ToolBar.ModifyStyleEx(0, WS_EX_TOOLWINDOW);
	m_ToolBar.SetBarStyle(m_ToolBar.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED);
	// set up each toolbar button
	CString str;

	LOADSTR(str ,ID_COLLECTOR_TXT);
	m_ToolBar.SetButtonInfo(0, ID_COLLECTOR_TXT, TBSTYLE_BUTTON, 0);
	m_ToolBar.GetToolBarCtrl().GetToolTips()->UpdateTipText(str, &m_ToolBar, ID_COLLECTOR_TXT);

	LOADSTR(str ,ID_COLLECTOR_OUTPUT);
	m_ToolBar.SetButtonInfo(1, ID_COLLECTOR_OUTPUT, TBSTYLE_BUTTON, 1);
	m_ToolBar.GetToolBarCtrl().GetToolTips()->UpdateTipText(str, &m_ToolBar, ID_COLLECTOR_OUTPUT);

	LOADSTR(str ,ID_COLLECTOR_SCRIPT);
	m_ToolBar.SetButtonInfo(2, ID_COLLECTOR_SCRIPT, TBSTYLE_BUTTON, 2);
	m_ToolBar.GetToolBarCtrl().GetToolTips()->UpdateTipText(str, &m_ToolBar, ID_COLLECTOR_SCRIPT);

	m_ToolBar.SetButtonInfo(3, 0, TBSTYLE_SEP, 0);

	LOADSTR(str ,ID_COLLECTOR_SAVE);
	m_ToolBar.SetButtonInfo(4, ID_COLLECTOR_SAVE, TBSTYLE_BUTTON, 4);
	m_ToolBar.GetToolBarCtrl().GetToolTips()->UpdateTipText(str, &m_ToolBar, ID_COLLECTOR_SAVE);

	LOADSTR(str ,ID_COLLECTOR_CLEAR);
	m_ToolBar.SetButtonInfo(5, ID_COLLECTOR_CLEAR, TBSTYLE_BUTTON, 3);
	m_ToolBar.GetToolBarCtrl().GetToolTips()->UpdateTipText(str, &m_ToolBar, ID_COLLECTOR_CLEAR);

	m_ToolBar.SetButtonInfo(6, 0, TBSTYLE_SEP, 0);

	LOADSTR(str ,ID_COLLECTOR_TRANS);
	m_ToolBar.SetButtonInfo(7, ID_COLLECTOR_TRANS, TBSTYLE_BUTTON, 5);
	m_ToolBar.GetToolBarCtrl().GetToolTips()->UpdateTipText(str, &m_ToolBar, ID_COLLECTOR_TRANS);

	m_ToolBar.SetButtonInfo(8, 0, TBSTYLE_SEP, 0);

	LOADSTR(str ,ID_RUN_SCRIPT);
	m_ToolBar.SetButtonInfo(9, ID_RUN_SCRIPT, TBSTYLE_BUTTON, 6);
	m_ToolBar.GetToolBarCtrl().GetToolTips()->UpdateTipText(str, &m_ToolBar, ID_RUN_SCRIPT);

	LOADSTR(str ,ID_OPEN_SELECTED_TEXT);
	m_ToolBar.SetButtonInfo(10, ID_OPEN_SELECTED_TEXT, TBSTYLE_BUTTON, 7);
	m_ToolBar.GetToolBarCtrl().GetToolTips()->UpdateTipText(str, &m_ToolBar, ID_OPEN_SELECTED_TEXT);

	LOADSTR(str ,ID_OPEN_CURSOR_LINE);
	m_ToolBar.SetButtonInfo(11, ID_OPEN_CURSOR_LINE, TBSTYLE_BUTTON, 8);
	m_ToolBar.GetToolBarCtrl().GetToolTips()->UpdateTipText(str, &m_ToolBar, ID_OPEN_CURSOR_LINE);

	m_nOldMode = 255;

	if (pmf->m_nCollectorTrans<255)
		CollectorTrans(pmf->m_nCollectorTrans);

	m_edit = 0;
	OnCollectorTxt();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CCollectorDlg::OnCollectorMode()
{
	if (pmf->m_nCollectorTrans>=255)
		return;
	if (m_nOldMode < 255)
		CollectorTrans(255);
	else
		CollectorTrans(pmf->m_nCollectorTrans);
}

void CCollectorDlg::CollectorSetTrans(int mode)
{
	if (!this->GetSafeHwnd())
		return;
	if (!CollectorTrans(mode))
		CollectorTrans(mode);//if not success, try again
}

int CCollectorDlg::CollectorTrans(int mode)
{
	BOOL bRet = FALSE;
	SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
	HINSTANCE hInst = LoadLibrary("User32.DLL"); 
	if(hInst) 
	{ 
		typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD); 
		MYFUNC fun = NULL;
		fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
		if(fun)
		{
			bRet = fun(this->GetSafeHwnd(),0, mode, 2); 
			m_nOldMode = mode;
		}
		FreeLibrary(hInst); 
	}
	return bRet;
}

void CCollectorDlg::OnCollectorClean()
{
	if(MSGBOX(IDS_CLEAN_COLLECTOR, MB_YESNO|MB_ICONQUESTION)==IDYES)
	{
		m_edit->SetWindowText("");
		if (m_edit==&m_output)
		{
			pmf->m_nPopFiltered = 0;
			//pmf->UpdatePopFiltered();
		}
	}
}

void CCollectorDlg::CleanOutputCollector()
{
	m_output.SetWindowText("");
}

void CCollectorDlg::OnCollectorSave()
{
	CString txt;
	m_edit->GetWindowText(txt);
	if(txt.IsEmpty())
		return;
	//CFileDialog dlg(0);
	CString str;
	LOADSTR(str ,IDS_TYPE_COLLECTOR);
 	CFileDialog dlg(FALSE, "txt", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, str);
	if (dlg.DoModal()==IDOK)
	{
		CFile f;
		if(f.Open(dlg.GetPathName(), CFile::modeCreate|CFile::modeWrite|CFile::shareDenyNone))
		{
			f.Write((void*)(LPCSTR)txt, txt.GetLength());
			f.Close();
		}
	}
}

void CCollectorDlg::OnCollectorTxt()
{
	if (m_edit!=&m_txt)
	{
		m_output.ShowWindow(SW_HIDE);
		m_script.ShowWindow(SW_HIDE);
		m_txt.ShowWindow(SW_SHOW);
		m_ToolBar.GetToolBarCtrl().CheckButton(ID_COLLECTOR_TXT, 1);
		m_ToolBar.GetToolBarCtrl().CheckButton(ID_COLLECTOR_OUTPUT, 0);
		m_ToolBar.GetToolBarCtrl().CheckButton(ID_COLLECTOR_SCRIPT, 0);
		m_edit = &m_txt;
		m_edit->SetFocus();
	}
}

void CCollectorDlg::OnCollectorOutput()
{
	if (m_edit!=&m_output)
	{
		m_txt.ShowWindow(SW_HIDE);
		m_script.ShowWindow(SW_HIDE);
		m_output.ShowWindow(SW_SHOW);
		m_ToolBar.GetToolBarCtrl().CheckButton(ID_COLLECTOR_TXT, 0);
		m_ToolBar.GetToolBarCtrl().CheckButton(ID_COLLECTOR_OUTPUT, 1);
		m_ToolBar.GetToolBarCtrl().CheckButton(ID_COLLECTOR_SCRIPT, 0);
		m_edit = &m_output;
		if (IsWindowVisible())//if not visible, not rob the focus from page
			m_edit->SetFocus();
	}
}

void CCollectorDlg::OnCollectorScript()
{
	if (m_edit!=&m_script)
	{
		m_output.ShowWindow(SW_HIDE);
		m_txt.ShowWindow(SW_HIDE);
		m_script.ShowWindow(SW_SHOW);
		m_ToolBar.GetToolBarCtrl().CheckButton(ID_COLLECTOR_TXT, 0);
		m_ToolBar.GetToolBarCtrl().CheckButton(ID_COLLECTOR_OUTPUT, 0);
		m_ToolBar.GetToolBarCtrl().CheckButton(ID_COLLECTOR_SCRIPT, 1);
		m_edit = &m_script;
		m_edit->SetFocus();
	}
}

void CCollectorDlg::OnRunScript()
{
	// TODO: Add your message handler code here and/or call default
	int nStart, nEnd;

	m_script.GetSel(nStart,nEnd);
	if (nStart>=nEnd)
	{
		MSGBOX(IDS_NOT_SELECT_SCRIPT);
		return;
	}
	if (nStart>=0 && nEnd>=0)
	{
		CString strText, strCode;
		m_script.GetWindowText(strText);
		strCode = strText.Mid(nStart,nEnd-nStart);
		if (strCode.GetLength())
			pmf->RunScript(strCode);
	}
}

void CCollectorDlg::OnOpenSelectedText()
{
	// TODO: Add your message handler code here and/or call default
	int nStart, nEnd;

	m_edit->GetSel(nStart,nEnd);
	if (nStart>=nEnd)
	{
		MSGBOX(IDS_NOT_SELECT_TEXT);
		return;
	}
	if (nStart>=0 && nEnd>=0)
	{
		CString strText, strCode;
		m_edit->GetWindowText(strText);
		strCode = strText.Mid(nStart,nEnd-nStart);
		if (strCode.GetLength())
		{
			strCode.TrimLeft();strCode.TrimRight();
			if (!IS_URL(strCode))
				MSGBOX(IDS_NOT_VALID_URL);
			else
				pmf->NewChildWindow(1,2,strCode);
		}
	}
}

#define MAX_LINE_LENGTH	1030
void CCollectorDlg::OnOpenCursorLine()
{
	// TODO: Add your message handler code here and/or call default
	try{
	int nStart, nEnd, nCaret;
	m_edit->GetSel(nStart,nEnd);

	int row = m_edit->LineFromChar(nStart);
	nStart = m_edit->LineIndex(row);
	nCaret = nEnd - nStart;
	//
	char	strLine[MAX_LINE_LENGTH+1];
	int		nLineLength;
	nLineLength = m_edit->GetLine(row,strLine,MAX_LINE_LENGTH);
	strLine[nLineLength] = 0;
	if (strLine[nLineLength-1] == '\r')
		strLine[nLineLength-1] = 0;
	else if (strLine[nLineLength-2] == '\r')
		strLine[nLineLength-2] = 0;
	//
	CString strCode;
	strCode.Empty();
	char *p1 = strstr(strLine," => ");
	char *p2 = strstr(strLine," <= ");
	if (!p1)
		strCode = strLine;
	else if (!p2)
		strCode = p1 + 4;//move after " => "
	else
	{
		if (strLine + nCaret > p2)
			strCode = p2 + 4;//move after " <= "
		else
		{
			*p2 = 0;
			strCode = p1 + 4;//move after " => "
		}
	}
	//
	strCode.TrimLeft();strCode.TrimRight();
	if (!IS_URL(strCode))
		MSGBOX(IDS_NOT_VALID_URL);
	else
		pmf->NewChildWindow(1,2,strCode);

	}catch(...){}
}

BOOL CCollectorDlg::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	if ( pMsg->message == WM_KEYDOWN )
	{ 
		if (PRESS_CTRL)
		{
			if (pMsg->wParam == 'A' )
			{
				m_edit->SetSel(0,-1);
				return TRUE;
			}
			if (pMsg->wParam == 'S' )
			{
				OnCollectorSave();
				return TRUE;
			}
		}
	}
	if ( pMsg->message == WM_LBUTTONDBLCLK )
	{
		if (pMsg->hwnd == m_output.m_hWnd)
		{
			OnOpenCursorLine();
			return TRUE;
		}
	}
	return CDialog::PreTranslateMessage(pMsg);
}

void CCollectorDlg::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	
	CDialog::OnLButtonDblClk(nFlags, point);
}

⌨️ 快捷键说明

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