Leaked source code of windows server 2003
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

//+--------------------------------------------------------------------------
//
// 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);
}