windows-nt/Source/XPSP1/NT/ds/security/services/ca/certlib/tfcprop.cpp
2020-09-26 16:20:57 +08:00

236 lines
4.8 KiB
C++

//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1999 - 1999
//
// File: tfcprop.cpp
//
//--------------------------------------------------------------------------
#include <pch.cpp>
#pragma hdrstop
#include "tfcprop.h"
extern HINSTANCE g_hInstance;
PropertyPage::PropertyPage(UINT uIDD)
{
m_hWnd = NULL;
ZeroMemory(&m_psp, sizeof(PROPSHEETPAGE));
m_psp.dwSize = sizeof(PROPSHEETPAGE);
m_psp.dwFlags = PSP_DEFAULT;
m_psp.hInstance = g_hInstance;
m_psp.pszTemplate = MAKEINTRESOURCE(uIDD);
m_psp.pfnDlgProc = dlgProcPropPage;
m_psp.lParam = (LPARAM)this;
}
PropertyPage::~PropertyPage()
{
}
BOOL PropertyPage::OnCommand(WPARAM, LPARAM)
{
return TRUE;
}
BOOL PropertyPage::OnNotify(UINT idCtrl, NMHDR* pnmh)
{
return FALSE;
}
BOOL PropertyPage::UpdateData(BOOL fSuckFromDlg /*= TRUE*/)
{
return TRUE;
}
BOOL PropertyPage::OnSetActive()
{
return TRUE;
}
BOOL PropertyPage::OnKillActive()
{
return TRUE;
}
BOOL PropertyPage::OnInitDialog()
{
UpdateData(FALSE); // push to dlg
return TRUE;
}
void PropertyPage::OnDestroy()
{
return;
}
BOOL PropertyPage::OnApply()
{
SetModified(FALSE);
return TRUE;
}
void PropertyPage::OnCancel()
{
return;
}
void PropertyPage::OnOK()
{
return;
}
BOOL PropertyPage::OnWizardFinish()
{
return TRUE;
}
LRESULT PropertyPage::OnWizardNext()
{
return 0;
}
LRESULT PropertyPage::OnWizardBack()
{
return 0;
}
void PropertyPage::OnHelp(LPHELPINFO lpHelp)
{
return;
}
void PropertyPage::OnContextHelp(HWND hwnd)
{
return;
}
INT_PTR CALLBACK
dlgProcPropPage(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam )
{
HRESULT hr;
PropertyPage* pPage = NULL;
switch(uMsg)
{
case WM_INITDIALOG:
{
// save off PropertyPage*
ASSERT(lParam);
pPage = (PropertyPage*) ((PROPSHEETPAGE*)lParam)->lParam;
ASSERT(pPage);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LPARAM)pPage);
// pass notification through
pPage->m_hWnd = hwndDlg; // save our hwnd
return pPage->OnInitDialog(); // call virtual fxn
}
case WM_DESTROY:
{
pPage = (PropertyPage*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
if (pPage == NULL)
break;
pPage->OnDestroy();
break;
}
case WM_NOTIFY:
{
pPage = (PropertyPage*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
if (pPage == NULL)
break;
LRESULT lr;
// catch special commands, drop other notifications
switch( ((LPNMHDR)lParam) -> code)
{
case PSN_SETACTIVE:
lr = (pPage->OnSetActive() ? PSNRET_NOERROR : PSNRET_INVALID_NOCHANGEPAGE); // bool
break;
case PSN_KILLACTIVE:
lr = (pPage->OnKillActive() ? PSNRET_NOERROR : PSNRET_INVALID_NOCHANGEPAGE); // bool
break;
case PSN_APPLY:
pPage->UpdateData(TRUE); // take from dlg
lr = (pPage->OnApply() ? PSNRET_NOERROR : PSNRET_INVALID_NOCHANGEPAGE); // bool
break;
case PSN_WIZFINISH:
pPage->UpdateData(TRUE); // take from dlg
lr = (pPage->OnWizardFinish() ? PSNRET_NOERROR : PSNRET_INVALID_NOCHANGEPAGE); // bool
break;
case PSN_WIZBACK:
pPage->UpdateData(TRUE); // take from dlg
lr = pPage->OnWizardBack();
break;
case PSN_WIZNEXT:
{
pPage->UpdateData(TRUE); // take from dlg
lr = pPage->OnWizardNext();
break;
}
default:
return pPage->OnNotify((int)wParam, (NMHDR*)lParam);
}
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, lr);
return TRUE;
}
case WM_COMMAND:
{
pPage = (PropertyPage*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
if (pPage == NULL)
break;
// catch special commands, pass others through
switch(LOWORD(wParam))
{
case IDOK:
pPage->OnOK();
// EndDialog(hwndDlg, 0);
return 0;
case IDCANCEL:
pPage->OnCancel();
// EndDialog(hwndDlg, 1);
return 0;
default:
return pPage->OnCommand(wParam, lParam);
}
}
case WM_HELP:
{
pPage = (PropertyPage*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
if (pPage == NULL)
break;
pPage->OnHelp((LPHELPINFO) lParam);
break;
}
case WM_CONTEXTMENU:
{
pPage = (PropertyPage*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
if (pPage == NULL)
break;
pPage->OnContextHelp((HWND)wParam);
break;
}
default:
break;
}
return 0;
}