PRSHTDLG.CPP
/////////////////////////////////////////////////////////////////////////////// 
// 
//  File Name  
//      PRSHTDLG.CPP 
// 
//  Description 
//      This file contains the dialogproc that handles messages for 
//      the property page extended onto the Tools Options Property Sheet 
// 
//  Revision: 1.00 
// 
//  Copyright (c) 1992-1995 Microsoft Corporation. All rights reserved. 
// 
 
#include "EVNTEXT.H" 
 
 
/////////////////////////////////////////////////////////////////////////////// 
//    FUNCTION SignatureOptionsDlgProc 
// 
//    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 
//    to allow user to turn Signtures on or off. 
// 
//    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 SignatureOptionsDlgProc(HWND hDlg, UINT uMsg,  
        WPARAM wParam, LPARAM lParam) 
{ 
 BOOL bMsgResult; 
 static HBRUSH hBrush; 
 static COLORREF GrayColor; 
 static LPNMHDR pnmhdr; 
 static HWND hWndPage; 
 
 switch (uMsg) 
 { 
 
  case WM_INITDIALOG: 
  { 
   LOGBRUSH lb; 
 
    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_CTLCOLORBTN: 
  case WM_CTLCOLORSTATIC: 
   
    if (hBrush != NULL) 
    { 
      SetBkColor((HDC)wParam, GrayColor); 
 
      return (BOOL)hBrush; 
    } 
 
  break; 
 
  case WM_DESTROY: 
  { 
   if (hBrush != NULL) 
        DeleteObject(hBrush); 
     
 
   return TRUE; 
  } 
   
  case WM_COMMAND: 
  { 
   if (LOWORD(wParam) == IDC_ENABLESGN) 
   { 
      SendMessage(GetParent(hDlg), PSM_CHANGED, (WPARAM)hDlg, 0L); 
      bSignatureOn = SendDlgItemMessage(hDlg, IDC_ENABLESGN, BM_GETCHECK, 0, 0L); 
      bMsgResult = FALSE; 
   } 
  } 
  break; 
 
  case WM_NOTIFY: 
  { 
   pnmhdr = ((LPNMHDR) lParam); 
 
   switch ( pnmhdr->code) 
   { 
    case PSN_KILLACTIVE: 
        bMsgResult = FALSE;  // allow this page to receive PSN_APPLY 
        break; 
 
    case PSN_SETACTIVE: 
 
        // initialize controls 
        if (bSignatureOn) 
            SendDlgItemMessage(hDlg, IDC_ENABLESGN, BM_SETCHECK, 1, 0L); 
        else 
            SendDlgItemMessage(hDlg, IDC_ENABLESGN, BM_SETCHECK, 0, 0L); 
 
        hWndPage = pnmhdr->hwndFrom;   // to be used in WM_COMMAND 
              
        bMsgResult = FALSE;  // accepts activation 
        break; 
 
    case PSN_APPLY: 
 
        // get user input 
        bSignatureOn = SendDlgItemMessage(hDlg, IDC_ENABLESGN, BM_GETCHECK, 0, 0L); 
 
        bMsgResult = PSNRET_NOERROR; 
        break; 
 
    case PSN_HELP:                                               
        MessageBox( pnmhdr->hwndFrom, 
                    "Microsoft Exchange Client\n" 
                    "Message Event 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; 
}