Annotation of mstools/ole20/samples/ole2ui/template.c, revision 1.1

1.1     ! root        1: /* 
        !             2:  * TEMPLATE.C
        !             3:  *
        !             4:  * Copyright (c)1992 Microsoft Corporation, All Right Reserved
        !             5:  *
        !             6:  *
        !             7:  * CUSTOMIZATION INSTRUCTIONS:
        !             8:  *
        !             9:  *  1.  Replace <FILE> with the uppercased filename for this file.
        !            10:  *      Lowercase the <FILE>.h entry
        !            11:  *
        !            12:  *  2.  Replace <NAME> with the mixed case dialog name in one word,
        !            13:  *      such as InsertObject
        !            14:  *
        !            15:  *  3.  Replace <FULLNAME> with the mixed case dialog name in multiple
        !            16:  *      words, such as Insert Object
        !            17:  *
        !            18:  *  4.  Replace <ABBREV> with the suffix for pointer variables, such
        !            19:  *      as the IO in InsertObject's pIO or the CI in ChangeIcon's pCI.
        !            20:  *      Check the alignment of the first variable declaration in the
        !            21:  *      Dialog Proc after this.  I will probably be misaligned with the
        !            22:  *      rest of the variables.
        !            23:  *
        !            24:  *  5.  Replace <STRUCT> with the uppercase structure name for this
        !            25:  *      dialog sans OLEUI, such as INSERTOBJECT.  Changes OLEUI<STRUCT>
        !            26:  *      in most cases, but we also use this for IDD_<STRUCT> as the
        !            27:  *      standard template resource ID.
        !            28:  *
        !            29:  *  6.  Find <UFILL> fields and fill them out with whatever is appropriate.
        !            30:  *
        !            31:  *  7.  Delete this header up to the start of the next comment.
        !            32:  */
        !            33: 
        !            34: 
        !            35: /*
        !            36:  * <FILE>.C
        !            37:  *
        !            38:  * Implements the OleUI<NAME> function which invokes the complete
        !            39:  * <FULLNAME> dialog.
        !            40:  *
        !            41:  * Copyright (c)1992 Microsoft Corporation, All Right Reserved
        !            42:  */
        !            43: 
        !            44: #define STRICT  1
        !            45: #include "ole2ui.h"
        !            46: #include "common.h"
        !            47: #include "<FILE>.h"
        !            48: 
        !            49: 
        !            50: 
        !            51: 
        !            52: /*
        !            53:  * OleUI<NAME>
        !            54:  *
        !            55:  * Purpose:
        !            56:  *  Invokes the standard OLE <FULLNAME> dialog box allowing the user
        !            57:  *  to <UFILL>
        !            58:  *
        !            59:  * Parameters:
        !            60:  *  lp<ABBREV>            LPOLEUI<NAME> pointing to the in-out structure
        !            61:  *                  for this dialog.
        !            62:  *
        !            63:  * Return Value:
        !            64:  *  UINT            One of the following codes, indicating success or error:
        !            65:  *                      OLEUI_SUCCESS           Success
        !            66:  *                      OLEUI_ERR_STRUCTSIZE    The dwStructSize value is wrong
        !            67:  */
        !            68: 
        !            69: STDAPI_(UINT) OleUI<NAME>(LPOLEUI<STRUCT> lp<ABBREV>)
        !            70:     {
        !            71:     UINT        uRet;
        !            72:     HGLOBAL     hMemDlg=NULL;
        !            73: 
        !            74:     uRet=UStandardValidation((LPOLEUISTANDARD)lp<ABBREV>, sizeof(OLEUI<STRUCT>)
        !            75:                              , &hMemDlg);
        !            76: 
        !            77:     if (OLEUI_SUCCESS!=uRet)
        !            78:         return uRet;
        !            79: 
        !            80:     /*
        !            81:      * PERFORM ANY STRUCTURE-SPECIFIC VALIDATION HERE!
        !            82:      * ON FAILURE:
        !            83:      *  {
        !            84:      *  if (NULL!=hMemDlg)
        !            85:      *      FreeResource(hMemDlg)
        !            86:      *
        !            87:      *  return OLEUI_<ABBREV>ERR_<ERROR>
        !            88:      *  }
        !            89:      */
        !            90: 
        !            91:     //Now that we've validated everything, we can invoke the dialog.
        !            92:     uRet=UStandardInvocation(<NAME>DialogProc, (LPOLEUISTANDARD)lp<ABBREV>
        !            93:                              , hMemDlg, MAKEINTRESOURCE(IDD_<STRUCT>));
        !            94: 
        !            95:     /*
        !            96:      * IF YOU ARE CREATING ANYTHING BASED ON THE RESULTS, DO IT HERE.
        !            97:      */
        !            98:     <UFILL>
        !            99: 
        !           100:     return uRet;
        !           101:     }
        !           102: 
        !           103: 
        !           104: 
        !           105: 
        !           106: 
        !           107: /*
        !           108:  * <NAME>DialogProc
        !           109:  *
        !           110:  * Purpose:
        !           111:  *  Implements the OLE <FULLNAME> dialog as invoked through the
        !           112:  *  OleUI<NAME> function.
        !           113:  *
        !           114:  * Parameters:
        !           115:  *  Standard
        !           116:  *
        !           117:  * Return Value:
        !           118:  *  Standard
        !           119:  */
        !           120: 
        !           121: BOOL CALLBACK EXPORT <NAME>DialogProc(HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam)
        !           122:     {
        !           123:     P<STRUCT>               p<ABBREV>;
        !           124:     BOOL                    fHook=FALSE;
        !           125: 
        !           126:     //Declare Win16/Win32 compatible WM_COMMAND parameters.
        !           127:     COMMANDPARAMS(wID, wCode, hWndMsg);
        !           128: 
        !           129:     //This will fail under WM_INITDIALOG, where we allocate it.
        !           130:     p<ABBREV>=(<STRUCT>)PvStandardEntry(hDlg, iMsg, wParam, lParam, &uHook);
        !           131: 
        !           132:     //If the hook processed the message, we're done.
        !           133:     if (0!=uHook)
        !           134:         return (BOOL)uHook;
        !           135: 
        !           136:     //Process the temination message
        !           137:     if (iMsg==uMsgEndDialog)
        !           138:         {
        !           139:         //Free any specific allocations before calling StandardCleanup
        !           140:         StandardCleanup((PVOID)p<ABBREV>, hDlg);
        !           141:         EndDialog(hDlg, wParam);
        !           142:         return TRUE;
        !           143:         }
        !           144: 
        !           145:     switch (iMsg)
        !           146:         {
        !           147:         case WM_INITDIALOG:
        !           148:             F<NAME>Init(hDlg, wParam, lParam);
        !           149:             return TRUE;
        !           150: 
        !           151: 
        !           152:         case WM_COMMAND:
        !           153:             switch (wID)
        !           154:                 {
        !           155:                 case IDOK:
        !           156:                     /*
        !           157:                      * PERFORM WHATEVER FUNCTIONS ARE DEFAULT HERE.
        !           158:                      */
        !           159:                     SendMessage(hDlg, uMsgEndDialog, OLEUI_OK, 0L);
        !           160:                     break;
        !           161: 
        !           162:                 case IDCANCEL:
        !           163:                     /*
        !           164:                      * PERFORM ANY UNDOs HERE, BUT NOT CLEANUP THAT WILL
        !           165:                      * ALWAYS HAPPEN WHICH SHOULD BE IN uMsgEndDialog.
        !           166:                      */
        !           167:                     SendMessage(hDlg, uMsgEndDialog, OLEUI_CANCEL, 0L);
        !           168:                     break;
        !           169: 
        !           170:                 case ID_OLEUIHELP:
        !           171:                     PostMessage(p<ABBREV>->lpO<ABBREV>->hWndOwner, uMsgHelp
        !           172:                                 , (WPARAM)hDlg, MAKELPARAM(IDD_<STRUCT>, 0));
        !           173:                     break;
        !           174:                 }
        !           175:             break;
        !           176:         }
        !           177:     return FALSE;
        !           178:     }
        !           179: 
        !           180: 
        !           181: 
        !           182: 
        !           183: /*
        !           184:  * F<NAME>Init
        !           185:  *
        !           186:  * Purpose:
        !           187:  *  WM_INITIDIALOG handler for the <FULLNAME> dialog box.
        !           188:  *
        !           189:  * Parameters:
        !           190:  *  hDlg            HWND of the dialog
        !           191:  *  wParam          WPARAM of the message
        !           192:  *  lParam          LPARAM of the message
        !           193:  *
        !           194:  * Return Value:
        !           195:  *  BOOL            Value to return for WM_INITDIALOG.
        !           196:  */
        !           197: 
        !           198: BOOL F<NAME>Init(HWND hDlg, WPARAM wParam, LPARAM lParam)
        !           199:     {
        !           200:     P<STRUCT>               p<ABBREV>;
        !           201:     LPOLEUI<STRUCT>         lpO<ABBREV>;
        !           202:     HFONT                   hFont;
        !           203: 
        !           204:     //1.  Copy the structure at lParam into our instance memory.
        !           205:     p<ABBREV>=(PSTRUCT)PvStandardInit(hDlg, sizeof(<STRUCT>), TRUE, &hFont);
        !           206: 
        !           207:     //PvStandardInit send a termination to us already.
        !           208:     if (NULL==p<ABBREV>)
        !           209:         return FALSE;
        !           210: 
        !           211:     lpO<ABBREV>=(LPOLEUI<STRUCT>)lParam);
        !           212: 
        !           213:     p<ABBREV>->lpO<ABBREV>=lpO<ABBREV>;
        !           214: 
        !           215:     //Copy other information from lpO<ABBREV> that we might modify.
        !           216:     <UFILL>
        !           217: 
        !           218:     //2.  If we got a font, send it to the necessary controls.
        !           219:     if (NULL!=hFont)
        !           220:         {
        !           221:         //Do this for as many controls as you need it for.
        !           222:         SendDlgItemMessage(hDlg, ID_<UFILL>, WM_SETFONT, (WPARAM)hFont, 0L);
        !           223:         }
        !           224: 
        !           225: 
        !           226:     //3.  Show or hide the help button
        !           227:     if (!(p<ABBREV>->lpO<ABBREV>->dwFlags & <ABBREV>F_SHOWHELP))
        !           228:         StandardShowDlgItem(hDlg, ID_OLEUIHELP, SW_HIDE);       
        !           229: 
        !           230:     /*
        !           231:      * PERFORM OTHER INITIALIZATION HERE.  ON ANY LoadString
        !           232:      * FAILURE POST OLEUI_MSG_ENDDIALOG WITH OLEUI_ERR_LOADSTRING.
        !           233:      */
        !           234: 
        !           235:     //n.  Call the hook with lCustData in lParam
        !           236:     UStandardHook((PVOID)p<ABBREV>, hDlg, WM_INITDIALOG, wParam, lpO<ABBREV>->lCustData);
        !           237:     return TRUE;
        !           238:     }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.