📄 filterdlg.cpp
字号:
// FilterDlg.cpp : implementation file
//
#include "stdafx.h"
#include "StraceGui.h"
#include "StraceGuiDoc.h"
#include "ListCtrlEx.h"
#include "ListVwEx.h"
#include "ProcFilterDlg.h"
#include "StraceGuiView.h"
#include "FilterDlg.h"
#include "..\sys\strace.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFilterDlg dialog
STRACE_FILTER filter;
CStraceGuiView *m_StraceView;
CFilterDlg::CFilterDlg(void *v,CWnd* pParent /*=NULL*/)
: CDialog(CFilterDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CFilterDlg)
//}}AFX_DATA_INIT
m_StraceView = (CStraceGuiView *)v;
}
void CFilterDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFilterDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFilterDlg, CDialog)
//{{AFX_MSG_MAP(CFilterDlg)
ON_BN_CLICKED(IDCLEARFUNC, OnClearfunc)
ON_BN_CLICKED(IDPROCESS, OnProcessFilter)
ON_BN_CLICKED(IDC_IDCUSTOM,OnSelectCustomID)
ON_BN_CLICKED(IDRESET, OnReset)
ON_BN_CLICKED(IDCLEARPROC, OnClearproc)
ON_BN_CLICKED(IDCLEARTHRD, OnClearthrd)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFilterDlg message handlers
BOOL CFilterDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetDlgItemText(IDC_FUNC1,filter.FuncName1);
SetDlgItemText(IDC_FUNC2,filter.FuncName2);
SetDlgItemText(IDC_FUNC3,filter.FuncName3);
SetDlgItemText(IDC_PROC1,filter.ProcName1);
SetDlgItemText(IDC_PROC2,filter.ProcName2);
if(filter.Thrd1)
SetDlgItemInt(IDC_THRDID1,filter.Thrd1);
else SetDlgItemText(IDC_THRDID1,NULL);
if(filter.Thrd2)
SetDlgItemInt(IDC_THRDID2,filter.Thrd2);
else SetDlgItemText(IDC_THRDID2,NULL);
if(filter.Thrd3)
SetDlgItemInt(IDC_THRDID3,filter.Thrd3);
else SetDlgItemText(IDC_THRDID3,NULL);
if(filter.CallFrom==CALLFROMALL)
{
SendDlgItemMessage(IDC_CALLALL,BM_SETCHECK,(WPARAM)BST_CHECKED,0);
SendDlgItemMessage(IDC_CALLKERNEL,BM_SETCHECK,(WPARAM)BST_UNCHECKED,0);
SendDlgItemMessage(IDC_CALLUSER,BM_SETCHECK,(WPARAM)BST_UNCHECKED,0);
}
else if(filter.CallFrom==CALLFROMKERNEL)
{
SendDlgItemMessage(IDC_CALLKERNEL,BM_SETCHECK,(WPARAM)BST_CHECKED,0);
SendDlgItemMessage(IDC_CALLUSER,BM_SETCHECK,(WPARAM)BST_UNCHECKED,0);
SendDlgItemMessage(IDC_CALLALL,BM_SETCHECK,(WPARAM)BST_UNCHECKED,0);
}
else
{
SendDlgItemMessage(IDC_CALLUSER,BM_SETCHECK,(WPARAM)BST_CHECKED,0);
SendDlgItemMessage(IDC_CALLKERNEL,BM_SETCHECK,(WPARAM)BST_UNCHECKED,0);
SendDlgItemMessage(IDC_CALLALL,BM_SETCHECK,(WPARAM)BST_UNCHECKED,0);
}
if(filter.ServiceIDFrom==SERVICEIDFROM&&filter.ServiceIDTo==SERVICEIDTO)
{
SendDlgItemMessage(IDC_IDALL,BM_SETCHECK,(WPARAM)BST_CHECKED,0);
SendDlgItemMessage(IDC_IDWIN32K,BM_SETCHECK,(WPARAM)BST_UNCHECKED,0);
SendDlgItemMessage(IDC_IDNTOSKRNL,BM_SETCHECK,(WPARAM)BST_UNCHECKED,0);
SendDlgItemMessage(IDC_IDCUSTOM,BM_SETCHECK,(WPARAM)BST_UNCHECKED,0);
}
else if(filter.ServiceIDFrom==SERVICEIDKERNELFROM&&filter.ServiceIDTo==SERVICEIDKERNELTO)
{
SendDlgItemMessage(IDC_IDNTOSKRNL,BM_SETCHECK,(WPARAM)BST_CHECKED,0);
SendDlgItemMessage(IDC_IDWIN32K,BM_SETCHECK,(WPARAM)BST_UNCHECKED,0);
SendDlgItemMessage(IDC_IDALL,BM_SETCHECK,(WPARAM)BST_UNCHECKED,0);
SendDlgItemMessage(IDC_IDCUSTOM,BM_SETCHECK,(WPARAM)BST_UNCHECKED,0);
}
else if(filter.ServiceIDFrom==SERVICEIDUSERFROM&&filter.ServiceIDTo==SERVICEIDUSERTO)
{
SendDlgItemMessage(IDC_IDWIN32K,BM_SETCHECK,(WPARAM)BST_CHECKED,0);
SendDlgItemMessage(IDC_IDNTOSKRNL,BM_SETCHECK,(WPARAM)BST_UNCHECKED,0);
SendDlgItemMessage(IDC_IDALL,BM_SETCHECK,(WPARAM)BST_UNCHECKED,0);
SendDlgItemMessage(IDC_IDCUSTOM,BM_SETCHECK,(WPARAM)BST_UNCHECKED,0);
}
else{
SendDlgItemMessage(IDC_IDCUSTOM,BM_SETCHECK,(WPARAM)BST_CHECKED,0);
SendDlgItemMessage(IDC_IDWIN32K,BM_SETCHECK,(WPARAM)BST_UNCHECKED,0);
SendDlgItemMessage(IDC_IDALL,BM_SETCHECK,(WPARAM)BST_UNCHECKED,0);
SendDlgItemMessage(IDC_IDNTOSKRNL,BM_SETCHECK,(WPARAM)BST_UNCHECKED,0);
SetDlgItemInt(IDC_IDFROM,filter.ServiceIDFrom,FALSE);
SetDlgItemInt(IDC_IDTO,filter.ServiceIDTo,FALSE);
}
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CFilterDlg::OnClearfunc()
{
// TODO: Add your control notification handler code here
SetDlgItemText(IDC_FUNC1,NULL);
SetDlgItemText(IDC_FUNC2,NULL);
SetDlgItemText(IDC_FUNC3,NULL);
}
void CFilterDlg::OnProcessFilter()
{
// TODO: Add your control notification handler code here
m_StraceView->OnSetfilter();
}
void CFilterDlg::OnSelectCustomID()
{
// TODO: Add your control notification handler code here
if(SendDlgItemMessage(IDC_IDCUSTOM,BM_GETCHECK,0,0)==BST_CHECKED){
SendDlgItemMessage(IDC_IDFROM,WM_ENABLE,TRUE,0);
SendDlgItemMessage(IDC_IDTO,WM_ENABLE,TRUE,0);
SendDlgItemMessage(IDC_IDFROM,WM_SETFOCUS,TRUE,0);
}else{
SendDlgItemMessage(IDC_IDFROM,WM_ENABLE,FALSE,0);
SendDlgItemMessage(IDC_IDTO,WM_ENABLE,FALSE,0);
}
}
void CFilterDlg::OnOK()
{
int from,to;
from=GetDlgItemInt(IDC_IDFROM);
to=GetDlgItemInt(IDC_IDTO);
filter.Thrd1=GetDlgItemInt(IDC_THRDID1);
filter.Thrd2=GetDlgItemInt(IDC_THRDID2);
filter.Thrd3=GetDlgItemInt(IDC_THRDID3);
if(SendDlgItemMessage(IDC_IDCUSTOM,BM_GETCHECK,0,0)==BST_CHECKED&&(from<SERVICEIDFROM||to>SERVICEIDTO||from>to)){
AfxMessageBox("Service ID有误!",MB_OK);
return;
}
if(SendDlgItemMessage(IDC_IDALL,BM_GETCHECK,0,0)==BST_CHECKED){
filter.ServiceIDFrom=SERVICEIDFROM;
filter.ServiceIDTo=SERVICEIDTO;
}else
if(SendDlgItemMessage(IDC_IDNTOSKRNL,BM_GETCHECK,0,0)==BST_CHECKED){
filter.ServiceIDFrom=SERVICEIDKERNELFROM;
filter.ServiceIDTo=SERVICEIDKERNELTO;
}else
if(SendDlgItemMessage(IDC_IDWIN32K,BM_GETCHECK,0,0)==BST_CHECKED){
filter.ServiceIDFrom=SERVICEIDUSERFROM;
filter.ServiceIDTo=SERVICEIDUSERTO;
}else
if(SendDlgItemMessage(IDC_IDCUSTOM,BM_GETCHECK,0,0)==BST_CHECKED){
filter.ServiceIDFrom=from;
filter.ServiceIDTo=to;
}
GetDlgItemText(IDC_FUNC1,filter.FuncName1,100);
GetDlgItemText(IDC_FUNC2,filter.FuncName2,100);
GetDlgItemText(IDC_FUNC3,filter.FuncName3,100);
GetDlgItemText(IDC_PROC1,filter.ProcName1,100);
GetDlgItemText(IDC_PROC2,filter.ProcName2,100);
if(SendDlgItemMessage(IDC_CALLALL,BM_GETCHECK,0,0)==BST_CHECKED)
filter.CallFrom=CALLFROMALL;
else if(SendDlgItemMessage(IDC_CALLKERNEL,BM_GETCHECK,0,0)==BST_CHECKED)
filter.CallFrom=CALLFROMKERNEL;
else if(SendDlgItemMessage(IDC_CALLUSER,BM_GETCHECK,0,0)==BST_CHECKED)
filter.CallFrom=CALLFROMUSER;
CDialog::OnOK();
}
void CFilterDlg::GetResults(void *f)
{
memcpy(f,(void *)&filter,sizeof(STRACE_FILTER));
}
void CFilterDlg::SetStraceFilter(void *f)
{
memcpy((void *)&filter,f,sizeof(STRACE_FILTER));
}
void CFilterDlg::OnReset()
{
// TODO: Add your control notification handler code here
filter.ServiceIDFrom=SERVICEIDFROM;
filter.ServiceIDTo=SERVICEIDTO;
filter.CallFrom = CALLFROMALL;
filter.Thrd1=0;
filter.Thrd2=0;
filter.Thrd3=0;
memset(filter.FuncName1,'\0',sizeof(filter.FuncName1));
memset(filter.FuncName2,'\0',sizeof(filter.FuncName2));
memset(filter.FuncName3,'\0',sizeof(filter.FuncName3));
memset(filter.ProcName1,'\0',sizeof(filter.ProcName1));
memset(filter.ProcName2,'\0',sizeof(filter.ProcName2));
OnInitDialog();
}
void CFilterDlg::OnClearproc()
{
SetDlgItemText(IDC_PROC1,NULL);
SetDlgItemText(IDC_PROC2,NULL);
}
void CFilterDlg::OnClearthrd()
{
SetDlgItemText(IDC_THRDID1,NULL);
SetDlgItemText(IDC_THRDID2,NULL);
SetDlgItemText(IDC_THRDID3,NULL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -