The following sample illustrates the source code (C):

/*
 * File.....: WPSTYLER.C
 *
 * Purpose..: Workplace Shell Object Styler.
 *
 * Instance Methods...:
 *            Sty_InsertObjectStylePage()
 *            Sty_QueryObjectStyle()
 *            Sty_SetObjectStyle()
 *            Sty_wpInitData()
 *            Sty_wpDragOver()
 *            Sty_wpDrop()
 *            Sty_wpOpen()
 *            Sty_wpAddSettingsPages()
 *            Sty_wpAddObjectWindowPage()
 *            Sty_wpAddObjectGeneralPage()
 *
 * Class Methods...:
 *            StyM_clsQueryModuleHandle()
 *            StyM_wpclsInitData()
 *            StyM_wpclsQueryIcon()
 *            StyM_wpclsQueryStyle()
 *            StyM_wpclsQueryDefaultHelp()
 *            StyM_wpclsQueryDefaultView()
 *
 * Dialog Procedures and Functions...:
 *            DialogProc()
 *            MLEImportText()
 *            MLEExportText()
 */

#pragma comment(compiler)
#pragma info(nogen)

#define Styler_Class_Source
#define M_Styler_Class_Source
#include "wpstyler.ih"

/*
 * Prototype local functions used
 */
MRESULT EXPENTRY DialogProc(HWND, ULONG, MPARAM, MPARAM);
ULONG   EXPENTRY MLEImportText(HWND, CHAR *, ULONG);
APIRET  EXPENTRY MLEExportText(HWND, PSZ *);

CHAR szHelpLibrary[] = "wpstyler.hlp";

/*
 *  Override: InsertObjectStylePage
 *
 *  Description:
 *    Insert the Style page into the Settings notebook
 */

SOM_Scope ULONG SOMLINK Sty_InsertObjectStylePage(Styler *somSelf,
                                                  HWND hwndDlg)
{
   PAGEINFO  pi;

   /* StylerData *somThis = StylerGetData(somSelf); */
   StylerMethodDebug("Styler", "Sty_InsertObjectStylePage");

   memset((PCH) &pi, 0, sizeof(PAGEINFO));
   pi.cb                  = sizeof(PAGEINFO);
   pi.hwndPage            = NULLHANDLE;
   pi.usPageStyleFlags    = BKA_MAJOR;
   pi.usPageInsertFlags   = BKA_FIRST;
   pi.pfnwp               = DialogProc;
   pi.resid               = _clsQueryModuleHandle(_Styler);
   pi.dlgid               = DLG_STYLE;
   pi.pszName             = "~Style";
   pi.pCreateParams       = somSelf;
   pi.pszHelpLibraryName  = szHelpLibrary;

   return _wpInsertSettingsPage(somSelf, hwndDlg, &pi);
}

/*
 *  Override: QueryObjectStyle
 *
 *  Description:
 *    Query the object's title and current style.
 *    Set the Styler Settings page checkboxes and MLE.
 */

SOM_Scope ULONG SOMLINK Sty_QueryObjectStyle(Styler *somSelf,
                                             HWND hwndDlg)
{
   StylerData *somThis = StylerGetData(somSelf);
   StylerMethodDebug("Styler", "Sty_QueryObjectStyle");

   /*
    * Query and set the object's name in the notebook page
    */
   MLEImportText(WinWindowFromID(hwndDlg, DLG_OBJECTNAME),
                 _wpQueryTitle(_self), 0);

   /*
    * Query the object's current state
    */
   _ulStyle = _wpQueryStyle(_self);

   PMWinSetDlgItemChecked(hwndDlg, DLG_COPY,
      _ulStyle & OBJSTYLE_NOCOPY ? BM_UNCHECKED : BM_CHECKED);

   PMWinSetDlgItemChecked(hwndDlg, DLG_SHADOW,
      _ulStyle & OBJSTYLE_NOLINK ? BM_UNCHECKED : BM_CHECKED);

   PMWinSetDlgItemChecked(hwndDlg, DLG_DELETE,
      _ulStyle & OBJSTYLE_NODELETE ? BM_UNCHECKED : BM_CHECKED);

   PMWinSetDlgItemChecked(hwndDlg, DLG_DRAG,
      _ulStyle & OBJSTYLE_NODRAG ? BM_UNCHECKED : BM_CHECKED);

   PMWinSetDlgItemChecked(hwndDlg, DLG_DROP,
      _ulStyle & OBJSTYLE_NODROP ? BM_UNCHECKED : BM_CHECKED);

   PMWinSetDlgItemChecked(hwndDlg, DLG_SETTINGS,
      _ulStyle & OBJSTYLE_NOSETTINGS ? BM_UNCHECKED : BM_CHECKED);

   PMWinSetDlgItemChecked(hwndDlg, DLG_MOVE,
      _ulStyle & OBJSTYLE_NOMOVE ? BM_UNCHECKED : BM_CHECKED);

   PMWinSetDlgItemChecked(hwndDlg, DLG_PRINT,
      _ulStyle & OBJSTYLE_NOPRINT ? BM_UNCHECKED : BM_CHECKED);

   PMWinSetDlgItemChecked(hwndDlg, DLG_RENAME,
      _ulStyle & OBJSTYLE_NORENAME ? BM_UNCHECKED : BM_CHECKED);

   PMWinSetDlgItemChecked(hwndDlg, DLG_TEMPLATE,
      _ulStyle & OBJSTYLE_TEMPLATE ? BM_CHECKED : BM_UNCHECKED);

   return _ulStyle;
}

/*
 *  Override: SetObjectStyle
 *
 *  Description:
 *    Query the current checkbox state and set the style of the
 *    object accordingly.
 */

SOM_Scope void SOMLINK Sty_SetObjectStyle(Styler *somSelf,
                                          HWND hwndDlg)
{
   PSZ pszName;
   StylerData *somThis = StylerGetData(somSelf);
   StylerMethodDebug("Styler", "Sty_SetObjectStyle");

   /*
    * NOCOPY: This object cannot be copied
    */
   if (PMWinIsDlgItemChecked(hwndDlg, DLG_COPY))
     _ulStyle &= ~OBJSTYLE_NOCOPY;
   else
     _ulStyle |= OBJSTYLE_NOCOPY;

   /*
    * NOSHADOW: This object cannot have a shadow created
    */
   if (PMWinIsDlgItemChecked(hwndDlg, DLG_SHADOW))
     _ulStyle &= ~OBJSTYLE_NOLINK;
   else
     _ulStyle |= OBJSTYLE_NOLINK;

   /*
    * NODELETE: This object cannot be deleted
    */
   if (PMWinIsDlgItemChecked(hwndDlg, DLG_DELETE))
     _ulStyle &= ~OBJSTYLE_NODELETE;
   else
     _ulStyle |= OBJSTYLE_NODELETE;

   /*
    * NODRAG: This object cannot be dragged
    */
   if (PMWinIsDlgItemChecked(hwndDlg, DLG_DRAG))
     _ulStyle &= ~OBJSTYLE_NODRAG;
   else
     _ulStyle |= OBJSTYLE_NODRAG;

   /*
    * NODROP: No other object can be dropped on this object.
    *         However, object can be dragged and dropped on other objects.
    */
   if (PMWinIsDlgItemChecked(hwndDlg, DLG_DROP))
     _ulStyle &= ~OBJSTYLE_NODROP;
   else
     _ulStyle |= OBJSTYLE_NODROP;

   /*
    * NODRAG: This object cannot be moved
    */
   if (PMWinIsDlgItemChecked(hwndDlg, DLG_MOVE))
     _ulStyle &= ~OBJSTYLE_NOMOVE;
   else
     _ulStyle |= OBJSTYLE_NOMOVE;

   /*
    * NOPRINT: This object cannot be printed
    */
   if (PMWinIsDlgItemChecked(hwndDlg, DLG_PRINT))
     _ulStyle &= ~OBJSTYLE_NOPRINT;
   else
     _ulStyle |= OBJSTYLE_NOPRINT;

   /*
    * NORENAME: This object cannot be renamed
    */
   if (PMWinIsDlgItemChecked(hwndDlg, DLG_RENAME))
     _ulStyle &= ~OBJSTYLE_NORENAME;
   else
     _ulStyle |= OBJSTYLE_NORENAME;

   /*
    * NOTEMPLATE: This object is a template
    */
   if (PMWinIsDlgItemChecked(hwndDlg, DLG_TEMPLATE))
     _ulStyle |= OBJSTYLE_TEMPLATE;
   else
     _ulStyle &= ~OBJSTYLE_TEMPLATE;

   /*
    * Extract and set the title text
    */
   MLEExportText(WinWindowFromID(hwndDlg, DLG_OBJECTNAME),
                 &pszName);
   _wpSetTitle(_self, pszName);
   free(pszName);

   /*
    * Set the object's new style and save the state to the .INI file
    */
   _wpSetStyle(_self, _ulStyle);
   _wpSaveDeferred(_self);
}

/*
 *  Override: wpInitData
 *
 *  Description:
 *    Initialize the state variables.  Allocate any extra
 *    memory that WPStyler might need.
 */

SOM_Scope void SOMLINK Sty_wpInitData(Styler *somSelf)
{
   StylerData *somThis = StylerGetData(somSelf);
   StylerMethodDebug("Styler", "Sty_wpInitData");

   _self = (WPObject *) 0;
   parent_wpInitData(somSelf);
}

/*
 *   Method: wpDragOver
 *
 *   Description:
 *     Allow any object to be dropped on the Styler
 */

SOM_Scope MRESULT SOMLINK Sty_wpDragOver(Styler *somSelf,
                                         HWND hwndCnr,
                                         PDRAGINFO pdrgInfo)

{
   BOOL            fSuccess;
   PDRAGITEM       pditem;    // Drag item pointer

   /* StylerData *somThis = StylerGetData(somSelf); */
   StylerMethodDebug("Styler", "Sty_wpDragOver");

   pditem = DrgQueryDragitemPtr(pdrgInfo, 0);
   if (pditem == NULL)
     DosBeep(500, 100);

   fSuccess = DrgVerifyRMF(pditem, "DRM_OBJECT", NULL);
   if (fSuccess)
     return MRFROM2SHORT(DOR_DROP, DO_COPY);
   else
     return MRFROM2SHORT(DOR_NEVERDROP, DO_COPY);
}

/*
 *   Method: wpDrop
 *
 *   Description:
 *     Query the self pointer of the dropped object.
 *     Call wpOpen to open the Settings notebook and display the styles.
 */

SOM_Scope MRESULT SOMLINK Sty_wpDrop(Styler *somSelf,
                                     HWND hwndCnr,
                                     PDRAGINFO pdrgInfo,
                                     PDRAGITEM pdrgItem)
{
   StylerData *somThis = StylerGetData(somSelf);
   StylerMethodDebug("Styler", "Sty_wpDrop");

   /*
    * Query for the dropped object's self pointer.
    */
   _self = OBJECT_FROM_PREC(pdrgItem->ulItemID);

   /*
    * Call the parents wpOpen to display the Settings notebook
    */
   _fGeneralPage = FALSE;
   parent_wpOpen(somSelf, NULLHANDLE, OPEN_SETTINGS, 0L);

   return parent_wpDrop(somSelf, hwndCnr, pdrgInfo, pdrgItem);
}

/*
 *   Method: wpOpen
 *
 *   Description:
 *     Opens the Settings notebook to display the General
 *     page for the Styler object.
 */

SOM_Scope HWND SOMLINK Sty_wpOpen(Styler *somSelf,
                                  HWND hwndCnr,
                                  ULONG ulView,
                                  ULONG param)
{
   StylerData *somThis = StylerGetData(somSelf);
   StylerMethodDebug("Styler", "Sty_wpOpen");

   switch(ulView)
   {
      case OPEN_SETTINGS:
         _fGeneralPage = TRUE;
         break;

      case OPEN_STYLER:
      {
         /*
          * If the user double clicks on the Styler object, present a
          * message box instead of openning the Settings page.
          */
         WinMessageBox(HWND_DESKTOP,
                       HWND_DESKTOP,
                       "Drop an object on the Workplace Shell Object "
                       "Styler to change the style state of that object.",
                       "Workplace Shell Object Styler",
                       0,
                       MB_OK |
                       MB_APPLMODAL |
                       MB_MOVEABLE);
         break;
      }
      default:
         break;
   }
   return parent_wpOpen(somSelf, hwndCnr, ulView, param);
}

/*
 *   Method: wpAddSettingsPages
 *
 *   Description:
 *     Add the Styler Settings page to let the user alter the styles
 *     of any object that is dropped onto us.
 */

SOM_Scope BOOL SOMLINK Sty_wpAddSettingsPages(Styler *somSelf,
                                              HWND hwndNotebook)
{
   StylerData *somThis = StylerGetData(somSelf);
   StylerMethodDebug("Styler", "Sty_wpAddSettingsPages");

   parent_wpAddSettingsPages(somSelf, hwndNotebook);

   /*
    * Insert the user page into the Settings notebook
    */
   if (!_fGeneralPage)
     _InsertObjectStylePage(somSelf, hwndNotebook);
   return TRUE;
}

/*
 *   Method: wpAddObjectWindowPage
 *
 *   Description:
 *     Remove the Window page
 */

SOM_Scope ULONG SOMLINK Sty_wpAddObjectWindowPage(Styler *somSelf,
                                                  HWND hwndNotebook)
{
   /* StylerData *somThis = StylerGetData(somSelf); */
   StylerMethodDebug("Styler", "Sty_wpAddObjectWindowPage");

   return SETTINGS_PAGE_REMOVED;
}

/*
 *   Method: wpAddObjectGeneralPage
 *
 *   Description:
 *     Remove the General page when displaying the Styler page
 */

SOM_Scope ULONG SOMLINK Sty_wpAddObjectGeneralPage(Styler *somSelf,
                                                   HWND hwndNotebook)
{
   StylerData *somThis = StylerGetData(somSelf);
   StylerMethodDebug("Styler","Sty_wpAddObjectGeneralPage");

   return _fGeneralPage ?
          parent_wpAddObjectGeneralPage(somSelf, hwndNotebook) :
          SETTINGS_PAGE_REMOVED;
}

/*
 *   Method: wpclsQueryDefaultHelp
 *
 *   Description:
 *     Set the help library name and default help ID
 */

SOM_Scope BOOL SOMLINK StyM_wpclsQueryDefaultHelp(M_Styler *somSelf,
                                                  PULONG pHelpPanelId,
                                                  PSZ pszHelpLibrary)
{
    /* M_StylerData *somThis = M_StylerGetData(somSelf); */
    M_StylerMethodDebug("M_Styler","StyM_wpclsQueryDefaultHelp");

    if (pHelpPanelId)
      *pHelpPanelId = ID_HELP_STYLER;

    if (pszHelpLibrary)
      strcpy(pszHelpLibrary, szHelpLibrary);

    return TRUE;
}

/*
 *   Method: clsQueryModuleHandle
 *
 *   Description:
 *     Return the module handle
 */

SOM_Scope HMODULE SOMLINK StyM_clsQueryModuleHandle(M_Styler *somSelf)
{
   M_StylerData *somThis = M_StylerGetData(somSelf);
   M_StylerMethodDebug("M_Styler", "StyM_clsQueryModuleHandle");

   return (HMODULE) _hmod;
}

/*
 *   Method: wpclsInitData
 *
 *   Description:
 *     Initalize the class data, query and save the module handle.
 *     Load the icon handle.
 */

SOM_Scope void SOMLINK StyM_wpclsInitData(M_Styler *somSelf)
{
   PSZ     psz;
   somId   stylerId;

   M_StylerData *somThis = M_StylerGetData(somSelf);
   M_StylerMethodDebug("M_Styler", "StyM_wpclsInitData");

   parent_wpclsInitData(somSelf);

   stylerId = somIdFromString("Styler");
   psz = _somLocateClassFile(SOMClassMgrObject,
                             stylerId,
                             Styler_MajorVersion,
                             Styler_MinorVersion);
   SOMFree(stylerId);

   if (psz != NULL)
     DosQueryModuleHandle(psz, &_hmod);

   /*
    * Load the icon and store it in the class data
    */
   _hicon = WinLoadPointer(HWND_DESKTOP, _hmod, ID_OBJECTICON);
}

/*
 *   Method: wpclsQueryIcon
 *
 *   Description:
 *     Set the Styler's icon handle
 */

SOM_Scope HPOINTER SOMLINK StyM_wpclsQueryIcon(M_Styler *somSelf)
{
   M_StylerData *somThis = M_StylerGetData(somSelf);
   M_StylerMethodDebug("M_Styler", "StyM_wpclsQueryIcon");

   return _hicon;
}

/*
 *   Method: wpclsQueryStyle
 *
 *   Description:
 *     wpclsQueryStyle is called to allow the class object to
 *     specify the default object class style for its instances.
 *
 *   Remarks:
 *     This method can be called at any time in order to determine the
 *     default style for instances of this class.
 *     This method should be overridden in order to modify the default
 *     object style for instances of this class.
 */

SOM_Scope ULONG SOMLINK StyM_wpclsQueryStyle(M_Styler *somSelf)
{
   /* M_StylerData *somThis = M_StylerGetData(somSelf); */
   M_StylerMethodDebug("M_Styler","StyM_wpclsQueryStyle");

   return parent_wpclsQueryStyle(somSelf) | CLSSTYLE_NEVERTEMPLATE;
}

/*
 *   Method: wpclsQueryDefaultView
 *
 *   Description:
 *     Return the default view for a new instance of this object.
 *     Tell the system what the Styler's default view is.
 */

SOM_Scope ULONG SOMLINK StyM_wpclsQueryDefaultView(M_Styler *somSelf)
{
   /* M_StylerData *somThis = M_StylerGetData(somSelf); */
   M_StylerMethodDebug("M_Styler", "StyM_wpclsQueryDefaultView");

   return OPEN_STYLER;
}

typedef struct _WINDATA
{
   SOMAny     *somSelf;
   StylerData *somThis;
   BOOL       fClose;
} WINDATA, *PWINDATA;

/*
 *   Dialog window Procedure
 */

MRESULT EXPENTRY DialogProc(HWND hwndDlg,
                            ULONG msg,
                            MPARAM mp1,
                            MPARAM mp2)
{
   MRESULT  mresultWpRtnCd = MRFALSE;
   PWINDATA pwin = (PWINDATA) WinQueryWindowPtr(hwndDlg, QWL_USER);

   switch(msg)
   {
      case WM_INITDLG:
      {
         pwin = (PWINDATA) _wpAllocMem((SOMAny *) mp2,
                                       sizeof(WINDATA), NULL);
         WinSetWindowPtr(hwndDlg, QWL_USER, pwin);

         /*
          * Initialize the WINDATA data structure
          */
         pwin->somSelf     = (SOMAny *) mp2;
         pwin->somThis     = StylerGetData(pwin->somSelf);
         pwin->fClose      = FALSE;

         /*
          * Query the style of the object and set the checkboxes
          */
         _QueryObjectStyle(pwin->somSelf, hwndDlg);

         /*
          * Set the status line font size
          */
         WinSetDialogFont(hwndDlg, DLG_STATUS, "8.Helv");

         /*
          * Return TRUE to tell PM that focus has changed
          */
         mresultWpRtnCd = (MRESULT) TRUE;
         break;
      }  /* End of case WM_INITDLG */

      case WM_FOCUSCHANGE:
      {
         HWND   hwndFocus  = HWNDFROMMP(mp1);

         mresultWpRtnCd = WinDefDlgProc(hwndDlg, msg, mp1, mp2);

         /*
          * When mp2 is FALSE, then hwndFocus is the
          * control window that is receiving focus
          */
         if (SHORT1FROMMP(mp2))
           break;

         /* Title text MLE */
         if (hwndFocus == WinWindowFromID(hwndDlg, DLG_OBJECTNAME))
         {
            WinSetDlgItemText(hwndDlg,
                              DLG_STATUS,
                              "Change the title of the object");
            break;
         }
         else
         /* Apply push button */
         if (hwndFocus == WinWindowFromID(hwndDlg, DLG_APPLY))
         {
            WinSetDlgItemText(hwndDlg,
                              DLG_STATUS,
                              "Save all changes to the system .INI file");
            break;
         }
         else
         /* Undo push button */
         if (hwndFocus == WinWindowFromID(hwndDlg, DLG_UNDO))
         {
            WinSetDlgItemText(hwndDlg,
                              DLG_STATUS,
                              "Undo all changes made since last apply");
            break;
         }
         else
         /* Cancel push button */
         if (hwndFocus == WinWindowFromID(hwndDlg, DLG_CANCEL))
         {
            WinSetDlgItemText(hwndDlg,
                              DLG_STATUS,
                              "Cancel processing the current object");
            break;
         }
         else
         /* Help push button */
         if (hwndFocus == WinWindowFromID(hwndDlg, DLG_HELP))
         {
            WinSetDlgItemText(hwndDlg,
                              DLG_STATUS,
                              "Display the user help for Styler");
            break;
         }
         else
         /* Copy checkbox */
         if (hwndFocus == WinWindowFromID(hwndDlg, DLG_COPY))
         {
            WinSetDlgItemText(hwndDlg,
                              DLG_STATUS,
                              "Allow the object to be copied");
            break;
         }
         else
         /* Delete checkbox */
         if (hwndFocus == WinWindowFromID(hwndDlg, DLG_DELETE))
         {
            WinSetDlgItemText(hwndDlg,
                              DLG_STATUS,
                              "Make object deletable");
            break;
         }
         else
         /* Drag checkbox */
         if (hwndFocus == WinWindowFromID(hwndDlg, DLG_DRAG))
         {
            WinSetDlgItemText(hwndDlg,
                              DLG_STATUS,
                              "Allow the object to be dragged");
            break;
         }
         else
         /* Drop checkbox */
         if (hwndFocus == WinWindowFromID(hwndDlg, DLG_DROP))
         {
            WinSetDlgItemText(hwndDlg,
                              DLG_STATUS,
                              "Allow objects to be drop on object");
            break;
         }
         else
         /* Settings checkbox */
         if (hwndFocus == WinWindowFromID(hwndDlg, DLG_SETTINGS))
         {
            WinSetDlgItemText(hwndDlg,
                              DLG_STATUS,
                              "Settings checkbox");
            break;
         }
         else
         /* Move checkbox */
         if (hwndFocus == WinWindowFromID(hwndDlg, DLG_MOVE))
         {
            WinSetDlgItemText(hwndDlg,
                              DLG_STATUS,
                              "Allow this object to be moved");
            break;
         }
         else
         /* Print checkbox */
         if (hwndFocus == WinWindowFromID(hwndDlg, DLG_PRINT))
         {
            WinSetDlgItemText(hwndDlg,
                              DLG_STATUS,
                              "Make object printable");
            break;
         }
         else
         /* Template checkbox */
         if (hwndFocus == WinWindowFromID(hwndDlg, DLG_TEMPLATE))
         {
            WinSetDlgItemText(hwndDlg,
                              DLG_STATUS,
                              "Make a template from the object");
            break;
         }
         else
         /* Rename checkbox */
         if (hwndFocus == WinWindowFromID(hwndDlg, DLG_RENAME))
         {
            WinSetDlgItemText(hwndDlg,
                              DLG_STATUS,
                              "Allow the object to be renamed");
            break;
         }
         else
         /* Shadow checkbox */
         if (hwndFocus == WinWindowFromID(hwndDlg, DLG_SHADOW))
         {
            WinSetDlgItemText(hwndDlg,
                              DLG_STATUS,
                              "Allow the object to be shadowed");
            break;
         }
         else
         {
            WinSetDlgItemText(hwndDlg, DLG_STATUS, "");
         }

         break;
      }  /* End of case WM_FOCUSCHANGE */

      case WM_COMMAND:
      {
         switch(SHORT1FROMMP(mp1))
         {
            case DLG_APPLY:   /* Apply push button */
            {
               _SetObjectStyle(pwin->somSelf, hwndDlg);

               // Save state to the .INI file now!
               _wpSaveImmediate(pwin->somSelf);

               WinSetDlgItemText(hwndDlg,
                                 DLG_STATUS,
                                 "Changes applied to object");
               break;
            }

            case DLG_UNDO:   /* Undo push button   */
            {
               _QueryObjectStyle(pwin->somSelf, hwndDlg);
               WinSetDlgItemText(hwndDlg,
                                 DLG_STATUS,
                                 "Changes undone");
               break;
            }

            case DLG_CANCEL:   /* Cancel push button */
            {
               pwin->fClose = TRUE;
               WinPostMsg(WinQueryWindow(hwndDlg, QW_OWNER),
                          WM_CLOSE, 0L, 0L);
               break;
            }

            case DLG_HELP:   /* Help push button */
            {
               _wpDisplayHelp(pwin->somSelf,
                              ID_HELP_STYLER,
                              szHelpLibrary);
               break;
            }

            default:
               break;
         }
         break;
      }  /* End of case WM_COMMAND */

      case WM_DESTROY:
      {
         /*
          * Set the style of the object from the checkbox settings
          */
         if (!pwin->fClose)
           _SetObjectStyle(pwin->somSelf, hwndDlg);

         _wpFreeMem(pwin->somSelf, (PBYTE) pwin);
         mresultWpRtnCd = WinDefDlgProc(hwndDlg, msg, mp1, mp2);
      }  /* End of case WM_DESTROY */

      default:
      {
         mresultWpRtnCd = WinDefDlgProc(hwndDlg, msg, mp1, mp2);
         break;
      } // End of default:
   }
   return mresultWpRtnCd;
}

/*
 *   Function: MLEImportText
 *
 *   Description:
 *     Import the text into an MLE window.
 */

ULONG EXPENTRY MLEImportText(HWND hwndMLE,
                             CHAR *pText,
                             ULONG ulSize)
{
   ULONG  ulLen = ulSize;
   ULONG  cch;
   LINE   lBegin = 0;
   IPT    lOffset = 0;

   WinSendMsg(hwndMLE, MLM_DISABLEREFRESH, 0L, 0L);

   /*
    * Get the current number of characters in the MLE box
    * then send a message to delete them
    */
   cch = (ULONG) WinSendMsg(hwndMLE,
                            MLM_QUERYTEXTLENGTH,
                            0L, 0L);
   WinSendMsg(hwndMLE,
              MLM_DELETE,
              MPFROMLONG(lBegin),
              MPFROMLONG(cch));

   if (pText)
   {
      if (ulLen <= 0L)
        ulLen = (ULONG) strlen(pText);
      WinSendMsg(hwndMLE,
                 MLM_SETIMPORTEXPORT,
                 MPFROMP(pText),
                 MPFROMSHORT((SHORT) ulLen));

      cch = (ULONG) WinSendMsg(hwndMLE, MLM_IMPORT,
                               MPFROMP(&lOffset),
                               MPFROMP(&ulLen));
   }
   WinSendMsg(hwndMLE, MLM_ENABLEREFRESH, 0L, 0L);
   return cch;
} /* End of Function: MLEImportText() */

/*
 *   Function: MLEImportText
 *
 *   Description:
 *     Export the text from an MLE window.
 */
APIRET EXPENTRY MLEExportText(HWND hwndMLE, PSZ *pBuf)
{
   APIRET apiRtnCd = 0;
   LONG   cch;
   LONG   cchnl;
   IPT    lOffset = 0;
   LONG   cbChar = -1;
   CHAR   *ptr;

   *pBuf = (CHAR *) NULL;

   /*
    * Get the length of the data field.
    * Query text length using the selected format.
    */
   cch = (ULONG) WinSendMsg(hwndMLE,
                            MLM_QUERYFORMATTEXTLENGTH,
                            MPFROMLONG(lOffset),
                            MPFROMLONG(cbChar));
   if (cch > 0L)
   {
      if ((ptr = (CHAR *) malloc((USHORT) (cch + 1L))) == (CHAR *) NULL)
         return PMERR_MEMORY_ALLOCATION_ERR;

      /*
       * Get the text from the MLE window.
       */
      *pBuf = ptr;
      WinSendMsg(hwndMLE,
                 MLM_SETIMPORTEXPORT,
                 MPFROMP(ptr),
                 MPFROMSHORT(cch));
      cchnl = (ULONG) WinSendMsg(hwndMLE,
                                 MLM_EXPORT,
                                 MPFROMP(&lOffset),
                                 MPFROMP((ULONG) &cch));
      *(*pBuf + cchnl) = (CHAR) NULL;
   }
   return apiRtnCd;
} /* End of Function: MLEExportText() */

#pragma info(nouse)


[Back] [Next]