You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
212 lines
5.0 KiB
212 lines
5.0 KiB
//+--------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1994 - 1998.
|
|
//
|
|
// File: error.cpp
|
|
//
|
|
// Contents: Digital Signitures property page
|
|
//
|
|
// Classes: CErrorInfo
|
|
//
|
|
// History: 07-10-2000 stevebl Created
|
|
//
|
|
//---------------------------------------------------------------------------
|
|
|
|
#include "precomp.hxx"
|
|
|
|
#include "wincrypt.h"
|
|
#include "cryptui.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CErrorInfo property page
|
|
|
|
IMPLEMENT_DYNCREATE(CErrorInfo, CPropertyPage)
|
|
|
|
CErrorInfo::CErrorInfo() : CPropertyPage(CErrorInfo::IDD)
|
|
{
|
|
//{{AFX_DATA_INIT(CErrorInfo)
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
CErrorInfo::~CErrorInfo()
|
|
{
|
|
*m_ppThis = NULL;
|
|
}
|
|
|
|
void CErrorInfo::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CPropertyPage::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CErrorInfo)
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CErrorInfo, CPropertyPage)
|
|
//{{AFX_MSG_MAP(CErrorInfo)
|
|
ON_BN_CLICKED(IDC_BUTTON1, OnSaveAs)
|
|
ON_WM_CONTEXTMENU()
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CErrorInfo message handlers
|
|
|
|
void CErrorInfo::OnSaveAs()
|
|
{
|
|
OPENFILENAME ofn;
|
|
CString szExtension;
|
|
CString szFilter;
|
|
szExtension.LoadString(IDS_TEXT_DEF_EXT);
|
|
szFilter.LoadString(IDS_TEXT_EXT_FILT);
|
|
LPTSTR lpTemp;
|
|
TCHAR szFile[2*MAX_PATH];
|
|
HANDLE hFile;
|
|
DWORD dwSize, dwBytesWritten;
|
|
|
|
//
|
|
// Call the Save common dialog
|
|
//
|
|
|
|
szFile[0] = TEXT('\0');
|
|
ZeroMemory (&ofn, sizeof(ofn));
|
|
ofn.lStructSize = sizeof(ofn);
|
|
ofn.hwndOwner = m_hWnd;
|
|
ofn.lpstrFilter = szFilter;
|
|
lpTemp = (LPTSTR)ofn.lpstrFilter;
|
|
int iBreak = 0;
|
|
while (lpTemp[iBreak])
|
|
{
|
|
if (lpTemp[iBreak] == TEXT('|'))
|
|
{
|
|
lpTemp[iBreak] = 0;
|
|
}
|
|
iBreak++;
|
|
}
|
|
ofn.nFilterIndex = 1;
|
|
ofn.lpstrFile = szFile;
|
|
ofn.nMaxFile = 2*MAX_PATH;
|
|
ofn.lpstrDefExt = szExtension;
|
|
ofn.Flags = OFN_NOCHANGEDIR | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST;
|
|
|
|
if (!GetSaveFileName (&ofn))
|
|
{
|
|
return;
|
|
}
|
|
|
|
|
|
CHourglass hourglass;
|
|
|
|
//
|
|
// Create the text file
|
|
//
|
|
|
|
hFile = CreateFile (szFile, GENERIC_WRITE, 0, NULL,
|
|
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,
|
|
NULL);
|
|
|
|
if (hFile == INVALID_HANDLE_VALUE)
|
|
{
|
|
DebugMsg((DM_WARNING, TEXT("CErrorInfo::OnSaveAs: CreateFile failed with %d"), GetLastError()));
|
|
return;
|
|
}
|
|
|
|
|
|
//
|
|
// Get the text out of the edit control
|
|
//
|
|
dwSize = (DWORD) SendDlgItemMessage (IDC_EDIT1, WM_GETTEXTLENGTH, 0, 0);
|
|
|
|
lpTemp = (LPTSTR) LocalAlloc (LPTR, (dwSize+2) * sizeof(TCHAR));
|
|
|
|
if (!lpTemp)
|
|
{
|
|
DebugMsg((DM_WARNING, TEXT("CErrorInfo::OnSaveAs: LocalAlloc failed with %d"), GetLastError()));
|
|
CloseHandle (hFile);
|
|
return;
|
|
}
|
|
|
|
SendDlgItemMessage (IDC_EDIT1, WM_GETTEXT, (dwSize+1), (LPARAM) lpTemp);
|
|
|
|
|
|
|
|
//
|
|
// Save it to the new file
|
|
//
|
|
|
|
if (!WriteFile (hFile, lpTemp, (dwSize * sizeof(TCHAR)), &dwBytesWritten, NULL) ||
|
|
(dwBytesWritten != (dwSize * sizeof(TCHAR))))
|
|
{
|
|
DebugMsg((DM_WARNING, TEXT("CErrorInfo::OnSaveAs: WriteFile failed with %d"),
|
|
GetLastError()));
|
|
}
|
|
|
|
|
|
LocalFree (lpTemp);
|
|
CloseHandle (hFile);
|
|
}
|
|
|
|
BOOL CErrorInfo::OnInitDialog()
|
|
{
|
|
CPropertyPage::OnInitDialog();
|
|
RefreshData();
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL CErrorInfo::OnApply()
|
|
{
|
|
return CPropertyPage::OnApply();
|
|
}
|
|
|
|
|
|
LRESULT CErrorInfo::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
|
|
{
|
|
switch (message)
|
|
{
|
|
case WM_HELP:
|
|
StandardHelp((HWND)((LPHELPINFO) lParam)->hItemHandle, IDD);
|
|
return 0;
|
|
case WM_USER_REFRESH:
|
|
RefreshData();
|
|
return 0;
|
|
case WM_USER_CLOSE:
|
|
return GetOwner()->SendMessage(WM_CLOSE);
|
|
default:
|
|
return CPropertyPage::WindowProc(message, wParam, lParam);
|
|
}
|
|
}
|
|
|
|
void CErrorInfo::RefreshData(void)
|
|
{
|
|
CString szTime = L"";
|
|
BSTR bstr = SysAllocString(m_pData->m_szEventTime);
|
|
if (bstr)
|
|
{
|
|
CStringFromWBEMTime(szTime, bstr, FALSE);
|
|
SysFreeString(bstr);
|
|
}
|
|
|
|
CEdit * pEd = (CEdit *) GetDlgItem(IDC_EDIT1);
|
|
pEd->Clear();
|
|
CString sz;
|
|
sz.Format(TEXT("%s\r\n\r\n%s"),
|
|
szTime,
|
|
m_pData->m_szEventLogText);
|
|
|
|
pEd->ReplaceSel(sz);
|
|
SetModified(FALSE);
|
|
}
|
|
|
|
void CErrorInfo::OnContextMenu(CWnd* pWnd, CPoint point)
|
|
{
|
|
StandardContextMenu(pWnd->m_hWnd, IDD_ERRORINFO);
|
|
}
|
|
|