PRSHTDLG.CPP

/////////////////////////////////////////////////////////////////////////////// 
//
// File Name
// PRSHTDLG.CPP
//
// Description
// This file contains the dialogproc that handles messages for
// the property page extended onto the Exchange property sheet.
//
//
// Revision: 1.00
//
// Copyright (c) 1992-1995 Microsoft Corporation. All rights reserved.
//
#include "EXTPRSHT.H"

///////////////////////////////////////////////////////////////////////////////
// Office document summary sheet information data
// Pointers to items in pSummaryProps. See GetPages function
// in EXTPRSHT.CPP
//
LPSTR szDocComments = NULL;
LPSTR szDocApplication = NULL;
LPSTR szDocTitle = NULL;
LPSTR szDocSubject = NULL;
LPSTR szDocAuthor = NULL;
SLPSTRArray mvszKeywords;
LPSTR szDocKeywords = NULL;
LPSTR szDocLastSaved = NULL;
LPSTR szDocEditTime = NULL;
LPSTR szDocCategory = NULL;
LPSTR szDocCompany = NULL;



///////////////////////////////////////////////////////////////////////////////
// FUNCTION SummaryPageDlgProc
//
// Parameters
// hDlg - handle to modeless dialog, the property page
// uMsg - message
// wParam - wParam of wndproc, not used
// lParam - lParam of wndproc, points to NMHDR for notifications
//
// Purpose
// Handles the notifications sent for managing a custom property page
// appended to those on an Exchange Client property sheet.
//
// Return Value
// Appropriate return values are set in the DWL_MSGRESULT longword
// of the dialog handle. See Win95 Common Controls documentation on
// Property Sheets for more information.
//


BOOL CALLBACK SummaryPageDlgProc(HWND hDlg, UINT uMsg,
WPARAM wParam, LPARAM lParam)
{
BOOL bMsgResult = FALSE;
UINT i;
static HBRUSH hBrush;
static COLORREF GrayColor;

switch (uMsg)
{

case WM_INITDIALOG:
{
LPSTR szTemp;
LOGBRUSH lb;

// build a string of space delimited keywords from the mvstring.
for (i=0; i<mvszKeywords.cValues; i++)
{
if (szDocKeywords == NULL)
{
szDocKeywords = (LPSTR)malloc(lstrlen(mvszKeywords.lppszA[i]) + 1);
lstrcpy(szDocKeywords, mvszKeywords.lppszA[i]);
}
else
{
szTemp = (LPSTR) malloc(lstrlen(szDocKeywords) + lstrlen(mvszKeywords.lppszA[i]) + 3);
lstrcpy(szTemp, szDocKeywords);
lstrcat(szTemp, " ");
lstrcat(szTemp, mvszKeywords.lppszA[i]);

free(szDocKeywords);
szDocKeywords = szTemp;
}

}

GrayColor = (COLORREF)GetSysColor(COLOR_BTNFACE);

memset(&lb, 0, sizeof(LOGBRUSH));
lb.lbStyle = BS_SOLID;
lb.lbColor = GrayColor;
hBrush = CreateBrushIndirect(&lb);


return TRUE;
}
break;

case WM_CTLCOLORDLG:
case WM_CTLCOLORSTATIC:

if (hBrush != NULL)
{
SetBkColor((HDC)wParam, GrayColor);

return (BOOL)hBrush;
}

break;

case WM_DESTROY:
{
if (hBrush != NULL)
DeleteObject(hBrush);

free(szDocKeywords);
szDocKeywords = NULL;

szDocComments = NULL;
szDocApplication = NULL;
szDocTitle = NULL;
szDocSubject = NULL;
szDocAuthor = NULL;
szDocLastSaved = NULL;
szDocEditTime = NULL;
szDocCategory = NULL;
szDocCompany = NULL;

return TRUE;
}

case WM_NOTIFY:
{
switch ( ((LPNMHDR) lParam)->code)
{
case PSN_KILLACTIVE:
bMsgResult = FALSE; // allow this page to receive PSN_APPLY
break;

case PSN_SETACTIVE:

// fill the controls in the page with information
SetDlgItemText( hDlg, IDC_COMMENTS, szDocComments);
SetDlgItemText( hDlg, IDC_APP, szDocApplication);
SetDlgItemText( hDlg, IDC_TITLE, szDocTitle);
SetDlgItemText( hDlg, IDC_SUBJECT, szDocSubject);
SetDlgItemText( hDlg, IDC_AUTHOR, szDocAuthor);
SetDlgItemText( hDlg, IDC_CATEGORY, szDocCategory);
SetDlgItemText( hDlg, IDC_COMPANY, szDocCompany);
SetDlgItemText( hDlg, IDC_LASTSAVE, szDocLastSaved);
SetDlgItemText( hDlg, IDC_KEYWORDS, szDocKeywords);


bMsgResult = FALSE; // accepts activation
break;

case PSN_APPLY:
bMsgResult = PSNRET_NOERROR;
break;

case PSN_HELP:
MessageBox( ((LPNMHDR)lParam)->hwndFrom,
"Microsoft Exchange Client\n"
"Property Sheet Extension Sample\n"
"Microsoft (c) Corporation, 1995",
"About",
MB_OK);
bMsgResult = TRUE; // doesn't matter on this notification
break;


default:
bMsgResult = FALSE;
break;
} // switch

SetWindowLong( hDlg, DWL_MSGRESULT, bMsgResult);
break;

} // case WM_NOTIFY

default:
bMsgResult = FALSE;
break;

} // switch


return bMsgResult;
}