closehandle.cpp

来自「IO函数调用测试」· C++ 代码 · 共 111 行

CPP
111
字号
// CloseHandle.cpp : implementation file
//

#include "stdafx.h"
#include <afxtempl.h>

#include "help.h"
#include "IOExplorer.h"
#include "TraceEvent.h"
#include "EventList.h"
  #include "EventLog.h"
#include "status.h"
#include "handle.h"
  #include "HandleCombo.h"
  #include "handleManager.h"
  #include "TraceManager.h"
    #include "CreateFileSheet.h"
    #include "CloseHandleEvent.h"
#include "HandlePage.h"
#include "CloseHandle.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CCloseHandle property page

IMPLEMENT_DYNCREATE(CCloseHandle, CHandlePage)

CCloseHandle::CCloseHandle() : CHandlePage(CCloseHandle::IDD)
{
	//{{AFX_DATA_INIT(CCloseHandle)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}

CCloseHandle::~CCloseHandle()
{
}

void CCloseHandle::DoDataExchange(CDataExchange* pDX)
{
	CHandlePage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCloseHandle)
	DDX_Control(pDX, IDC_CLOSEHANDLE, c_CloseHandle);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCloseHandle, CHandlePage)
	//{{AFX_MSG_MAP(CCloseHandle)
	ON_BN_CLICKED(IDC_CLOSEHANDLE, OnClosehandle)
	ON_BN_CLICKED(IDC_HELPBUTTON, OnHelp)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCloseHandle message handlers

void CCloseHandle::OnClosehandle() 
{
 CCreateFileSheet * sheet = getSheet();
 CHandle * ho = sheet->HandleList.getCurrentHandle();
 CloseHandleEvent * e = new CloseHandleEvent(ho->Name, ho->h);

 if(e->execute())
    { /* closed handle */
     sheet->HandleList.Remove(ho->h);
     sheet->HandleList.setCurrentHandle(NULL);
     CString s = e->display_result();
     c_Status.SetWindowText(s);
    } /* closed handle */
 else
    { /* error */
     c_Status.SetWindowText(e->lasterror);
    } /* error */

 sheet->log->add(e);

 loadHandles();
 updateControls();
	
}

void CCloseHandle::updateControls()
    {
     CCreateFileSheet * sheet = getSheet();
     CHandle * ho = sheet->HandleList.getCurrentHandle();
     CloseHandleEvent e(ho != NULL ? ho->Name : _T(""), 
     			ho != NULL ? ho->h : NULL);

     CString s = e.display();
     c_Text.SetWindowText(s);
     
     c_CloseHandle.EnableWindow(ho != NULL);

    }

BOOL CCloseHandle::OnSetActive() 
{
     return CHandlePage::OnSetActive();
}

void CCloseHandle::OnHelp() 
{
 AfxGetApp()->WinHelp(CloseHandleHelp, HELP_CONTEXT);	
}

⌨️ 快捷键说明

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