|
|
/*
* TEMPLATE.C * * Copyright (c)1992 Microsoft Corporation, All Right Reserved * * * CUSTOMIZATION INSTRUCTIONS: * * 1. Replace <FILE> with the uppercased filename for this file. * Lowercase the <FILE>.h entry * * 2. Replace <NAME> with the mixed case dialog name in one word, * such as InsertObject * * 3. Replace <FULLNAME> with the mixed case dialog name in multiple * words, such as Insert Object * * 4. Replace <ABBREV> with the suffix for pointer variables, such * as the IO in InsertObject's pIO or the CI in ChangeIcon's pCI. * Check the alignment of the first variable declaration in the * Dialog Proc after this. I will probably be misaligned with the * rest of the variables. * * 5. Replace <STRUCT> with the uppercase structure name for this * dialog sans OLEUI, such as INSERTOBJECT. Changes OLEUI<STRUCT> * in most cases, but we also use this for IDD_<STRUCT> as the * standard template resource ID. * * 6. Find <UFILL> fields and fill them out with whatever is appropriate. * * 7. Delete this header up to the start of the next comment. */
/*
* <FILE>.C * * Implements the OleUI<NAME> function which invokes the complete * <FULLNAME> dialog. * * Copyright (c)1992 Microsoft Corporation, All Right Reserved */
#define STRICT 1
#include "ole2ui.h"
#include "common.h"
#ifndef WIN32
#include "<FILE>.h"
#else
#include "template.h"
#endif
/*
* OleUI<NAME> * * Purpose: * Invokes the standard OLE <FULLNAME> dialog box allowing the user * to <UFILL> * * Parameters: * lp<ABBREV> LPOLEUI<NAME> pointing to the in-out structure * for this dialog. * * Return Value: * UINT One of the following codes, indicating success or error: * OLEUI_SUCCESS Success * OLEUI_ERR_STRUCTSIZE The dwStructSize value is wrong */
STDAPI_(UINT) OleUI<NAME>(LPOLEUI<STRUCT> lp<ABBREV>) { UINT uRet; HGLOBAL hMemDlg=NULL;
uRet=UStandardValidation((LPOLEUISTANDARD)lp<ABBREV>, sizeof(OLEUI<STRUCT>) , &hMemDlg);
if (OLEUI_SUCCESS!=uRet) return uRet;
/*
* PERFORM ANY STRUCTURE-SPECIFIC VALIDATION HERE! * ON FAILURE: * { * if (NULL!=hMemDlg) * FreeResource(hMemDlg) * * return OLEUI_<ABBREV>ERR_<ERROR> * } */
//Now that we've validated everything, we can invoke the dialog.
uRet=UStandardInvocation(<NAME>DialogProc, (LPOLEUISTANDARD)lp<ABBREV> , hMemDlg, MAKEINTRESOURCE(IDD_<STRUCT>));
/*
* IF YOU ARE CREATING ANYTHING BASED ON THE RESULTS, DO IT HERE. */ <UFILL>
return uRet; }
/*
* <NAME>DialogProc * * Purpose: * Implements the OLE <FULLNAME> dialog as invoked through the * OleUI<NAME> function. * * Parameters: * Standard * * Return Value: * Standard */
BOOL CALLBACK EXPORT <NAME>DialogProc(HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam) { P<STRUCT> p<ABBREV>; BOOL fHook=FALSE;
//Declare Win16/Win32 compatible WM_COMMAND parameters.
COMMANDPARAMS(wID, wCode, hWndMsg);
//This will fail under WM_INITDIALOG, where we allocate it.
p<ABBREV>=(<STRUCT>)PvStandardEntry(hDlg, iMsg, wParam, lParam, &uHook);
//If the hook processed the message, we're done.
if (0!=uHook) return (BOOL)uHook;
//Process the temination message
if (iMsg==uMsgEndDialog) { //Free any specific allocations before calling StandardCleanup
StandardCleanup((PVOID)p<ABBREV>, hDlg); EndDialog(hDlg, wParam); return TRUE; }
switch (iMsg) { case WM_INITDIALOG: F<NAME>Init(hDlg, wParam, lParam); return TRUE;
case WM_COMMAND: switch (wID) { case IDOK: /*
* PERFORM WHATEVER FUNCTIONS ARE DEFAULT HERE. */ SendMessage(hDlg, uMsgEndDialog, OLEUI_OK, 0L); break;
case IDCANCEL: /*
* PERFORM ANY UNDOs HERE, BUT NOT CLEANUP THAT WILL * ALWAYS HAPPEN WHICH SHOULD BE IN uMsgEndDialog. */ SendMessage(hDlg, uMsgEndDialog, OLEUI_CANCEL, 0L); break;
case ID_OLEUIHELP: PostMessage(p<ABBREV>->lpO<ABBREV>->hWndOwner, uMsgHelp , (WPARAM)hDlg, MAKELPARAM(IDD_<STRUCT>, 0)); break; } break; } return FALSE; }
/*
* F<NAME>Init * * Purpose: * WM_INITIDIALOG handler for the <FULLNAME> dialog box. * * Parameters: * hDlg HWND of the dialog * wParam WPARAM of the message * lParam LPARAM of the message * * Return Value: * BOOL Value to return for WM_INITDIALOG. */
BOOL F<NAME>Init(HWND hDlg, WPARAM wParam, LPARAM lParam) { P<STRUCT> p<ABBREV>; LPOLEUI<STRUCT> lpO<ABBREV>; HFONT hFont;
//1. Copy the structure at lParam into our instance memory.
p<ABBREV>=(PSTRUCT)PvStandardInit(hDlg, sizeof(<STRUCT>), TRUE, &hFont);
//PvStandardInit send a termination to us already.
if (NULL==p<ABBREV>) return FALSE;
lpO<ABBREV>=(LPOLEUI<STRUCT>)lParam);
p<ABBREV>->lpO<ABBREV>=lpO<ABBREV>;
//Copy other information from lpO<ABBREV> that we might modify.
<UFILL>
//2. If we got a font, send it to the necessary controls.
if (NULL!=hFont) { //Do this for as many controls as you need it for.
SendDlgItemMessage(hDlg, ID_<UFILL>, WM_SETFONT, (WPARAM)hFont, 0L); }
//3. Show or hide the help button
if (!(p<ABBREV>->lpO<ABBREV>->dwFlags & <ABBREV>F_SHOWHELP)) StandardShowDlgItem(hDlg, ID_OLEUIHELP, SW_HIDE);
/*
* PERFORM OTHER INITIALIZATION HERE. ON ANY LoadString * FAILURE POST OLEUI_MSG_ENDDIALOG WITH OLEUI_ERR_LOADSTRING. */
//n. Call the hook with lCustData in lParam
UStandardHook((PVOID)p<ABBREV>, hDlg, WM_INITDIALOG, wParam, lpO<ABBREV>->lCustData); return TRUE; }
|