home *** CD-ROM | disk | FTP | other *** search
/ ActiveX Programming Unleashed CD / AXU.iso / componen / interact / demo / data.2 / samples / ansic / INTERACT / IDOIFACE.C < prev    next >
Encoding:
C/C++ Source or Header  |  1996-04-05  |  41.2 KB  |  1,171 lines

  1. //lRegen_FileHeading
  2. //lRegen_FileHeading
  3.  
  4.      /********************************************************************
  5.       *
  6.       *   Source File:  idoiface.c
  7.       *   Author:
  8.       *   Module:       Source for idoiface application
  9.       *   Program Desc:
  10.       *   Date:         Wed Apr 03 07:33:30 1996
  11.       *   Language:     ANSI C
  12.       *
  13.       ********************************************************************/
  14.  
  15. #include ".\idoiface.h"
  16.  
  17. #include "ctl3d.h"
  18. //lRegen_Variables
  19.  
  20. #include <memory.h>
  21. #include <pvido.h>
  22.  
  23. HMENU hIDO, hEntity, hLine;
  24.  
  25. extern BOOL bMsg;
  26.  
  27. void SetItemFont(LOGFONT *);
  28.  
  29. //lRegen_Variables
  30.  
  31. HMENU    hMainMenu;
  32. #define  IDM_FIRSTCHILD 3
  33. HINSTANCE   hInstance;
  34. char        szAppName[30];
  35. HMENU       hMenuInit;
  36. HWND        hWndClient, hWndFrame;
  37. #define     MAIN_POS  5
  38. HMENU       hMenu_MAIN_Pos;
  39.  
  40. BOOL bOFRetCode;
  41. char szOFFilePath[80];
  42. char szOFFileTitle[40];
  43. OPENFILENAME ofOF;
  44. static char szOFFilter[] = {
  45.    "Diagram File\0"
  46.    "*.IDO\0"
  47.    "\0"
  48. };
  49. BOOL bSFRetCode;
  50. char szSFFilePath[80];
  51. char szSFFileTitle[40];
  52. OPENFILENAME ofSF;
  53. static char szSFFilter[] = {
  54.    "Diagram File\0"
  55.    "*.IDO\0"
  56.    "\0"
  57. };
  58. BOOL bPALETTERetCode;
  59. char szPALETTEFilePath[80];
  60. char szPALETTEFileTitle[40];
  61. OPENFILENAME ofPALETTE;
  62. static char szPALETTEFilter[] = {
  63.    "Palette File\0"
  64.    "*.PLT\0"
  65.    "\0"
  66. };
  67. BOOL bPLT2RetCode;
  68. char szPLT2FilePath[80];
  69. char szPLT2FileTitle[40];
  70. OPENFILENAME ofPLT2;
  71. static char szPLT2Filter[] = {
  72.    "Palette File\0"
  73.    "*.PLT\0"
  74.    "\0"
  75. };
  76. BOOL       bCFRetCode;
  77. CHOOSEFONT cfCF;
  78. LOGFONT    lfCF;
  79. LRESULT CALLBACK EXPORT MainWndProc(HWND, UINT, WPARAM, LPARAM);
  80. HACCEL   hAccel;
  81.  
  82. int PASCAL WinMain(HINSTANCE hInst,          // Application Instance Handle
  83.                    HINSTANCE hPrevInstance,  // Previous Instance Handle
  84.                    LPSTR  lpszCmdLine,       // Pointer to Command Line
  85.                    int    nCmdShow)          // Show Window Option
  86. {
  87.    //lRegen_BeginFunction
  88.    //lRegen_BeginFunction
  89.  
  90.    MSG      msg;
  91.    HWND     hWndMain;
  92.  
  93.    HMODULE hWinControl;
  94.  
  95.    WNDCLASS wndclass;
  96.    hInstance = hInst;
  97.  
  98.    lstrcpy(szAppName, "idoiface");
  99.    #ifdef WIN32
  100.       #define WINCTL_LIB  "winctl32.dll"
  101.    #else
  102.       #define WINCTL_LIB  "winctl.dll"
  103.    #endif
  104.  
  105.    hWinControl = LoadLibrary(WINCTL_LIB);
  106.    if((UINT)hWinControl <= 32)
  107.       MessageBox(NULL, "Unable to load WinControl Library", "System Error", MB_OK | MB_ICONHAND);
  108.    hAccel = LoadAccelerators(hInstance, "idoiface");
  109.  
  110.    if(!hPrevInstance)
  111.    {
  112.       wndclass.style           = CS_HREDRAW | CS_VREDRAW;
  113.       wndclass.lpfnWndProc     = MainWndProc;
  114.       wndclass.cbClsExtra      = 0;
  115.       wndclass.cbWndExtra      = 0;
  116.       wndclass.hInstance       = hInstance;
  117.       wndclass.hCursor         = LoadCursor(NULL, IDC_ARROW);
  118.       wndclass.hIcon           = LoadIcon(hInstance, "idoiface");
  119.       wndclass.hbrBackground   = (HBRUSH)COLOR_APPWORKSPACE;
  120.       wndclass.lpszMenuName    = "idoiface";
  121.       wndclass.lpszClassName   = szAppName;
  122.  
  123.       if(!RegisterClass(&wndclass))
  124.          return FALSE;
  125.    }
  126.  
  127.    Ctl3dRegister(hInstance);
  128.    Ctl3dAutoSubclass(hInstance);
  129.    //lRegen_InitView
  130.  
  131.    /*
  132.     *   set global data to 0
  133.     */
  134.    memset(&gData, 0, sizeof(gData));
  135.  
  136.    /*
  137.     *   save application instance handle
  138.     */
  139.    gData.hApp = hInst;
  140.  
  141.    /*
  142.     *   attempt to load pvIDO dll.  If it fails, display a error message box.
  143.     */
  144.    gData.hIDOdll = IDO_LoadDLL();
  145.    if(!gData.hIDOdll)
  146.       MessageBox(NULL, "Error loadind pvIDO dll.", "System Error", MB_OK | MB_ICONSTOP);
  147.  
  148.  
  149.    //lRegen_InitView
  150.  
  151.    if(NULL == (hWndMain = CreateWindow(szAppName,
  152.                        "ProtoView InterAct",
  153.                        WS_OVERLAPPEDWINDOW,
  154.                        CW_USEDEFAULT, 0,
  155.                        CW_USEDEFAULT, 0,
  156.                        NULL, (HMENU)NULL, hInstance, NULL)))
  157.         return FALSE;
  158.  
  159.    hMenuInit = GetMenu(hWndMain);
  160.    hMenu_MAIN_Pos = GetSubMenu(GetMenu(hWndMain), MAIN_POS);
  161.  
  162.  
  163.    hWndClient = GetWindow (hWndMain, GW_CHILD);
  164.    hWndFrame  = hWndMain;
  165.    //lRegen_MainWnd
  166.    //lRegen_MainWnd
  167.    vwSetViewToolBar(hWndMain, MAKEINTRESOURCE(TopToolbar), fnTopToolbarWndProc, PV_TOP);
  168.    vwSetViewToolBar(hWndMain, MAKEINTRESOURCE(StatusLine), fnStatusLineWndProc, PV_BOTTOM);
  169.    vwSetStatusLineId(hWndMain, IDC_STATUS1);
  170.  
  171.    ShowWindow(hWndMain, nCmdShow);
  172.    UpdateWindow(hWndMain);
  173.  
  174.    while(GetMessage(&msg, NULL, 0, 0))
  175.        if (!TranslateMDISysAccel (hWndClient, &msg))
  176.          if(!TranslateAccelerator(hWndMain, hAccel, &msg))
  177.           {
  178.              TranslateMessage(&msg);
  179.              DispatchMessage(&msg);
  180.           }
  181.  
  182.    if((UINT)hWinControl > 32)
  183.       FreeLibrary(hWinControl);
  184.  
  185.    //Regen_AppTerm
  186.  
  187.    /*
  188.     *   Free pvIDO dll
  189.     */
  190.    if(gData.hIDOdll)
  191.       IDO_FreeDLL(gData.hIDOdll);
  192.  
  193.    //Regen_AppTerm
  194.    return msg.wParam;
  195. }
  196.  
  197. LRESULT CALLBACK EXPORT MainWndProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam)
  198. {
  199. HWND               hWndChild;
  200. CLIENTCREATESTRUCT clientcreate;
  201.    WORD CtlId;
  202.    WORD Notify;
  203.    HWND CtlWnd;
  204.  
  205.    //lRegen_WindowProcVariables
  206.    ENTITY entity;
  207.    //lRegen_WindowProcVariables
  208.  
  209.    switch(uMessage)
  210.    {
  211.        //lRegen_WndProc
  212.  
  213.        case WM_USER + 23 :
  214.  
  215.           SENDCOMMAND(hWnd, CM_FILENEW, 0, 0L);
  216.  
  217.           break;
  218.  
  219.        //lRegen_WndProc
  220.  
  221.       case WM_CREATE :
  222.          //Regen_WM_CREATE
  223.  
  224.          fnBanner(hWnd, 0, 0L);
  225.  
  226.          hIDO = CreatePopupMenu();
  227.          AppendMenu(hIDO, MF_ENABLED | MF_STRING, POP_IDM_USERSTART, "My IDO Menu");
  228.  
  229.          hEntity = CreatePopupMenu();
  230.          AppendMenu(hEntity, MF_ENABLED | MF_STRING, POP_IDM_USERSTART +1, "My Entity Menu");
  231.  
  232.          hLine = CreatePopupMenu();
  233.          AppendMenu(hLine, MF_ENABLED | MF_STRING, POP_IDM_USERSTART +2, "My Line Menu");
  234.  
  235.          PostMessage(hWnd, WM_USER + 23, 0, 0L);
  236.  
  237.          //Regen_WM_CREATE
  238.          // Create the client window
  239.  
  240.          clientcreate.hWindowMenu  = hMainMenu;
  241.          clientcreate.idFirstChild = IDM_FIRSTCHILD;
  242.  
  243.          hWndClient = CreateWindow("MDICLIENT", NULL,
  244.                          WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE,
  245.                          0, 0, 0, 0, hWnd, (HMENU)1, hInstance,
  246.                          (LPSTR) &clientcreate);
  247.          return 0;
  248.  
  249.       case WM_DESTROY :
  250.          //Regen_WM_DESTROY
  251.          //Regen_WM_DESTROY
  252.          break;
  253.  
  254.       case WM_INITMENUPOPUP :
  255.          //Regen_WM_INITMENUPOPUP
  256.  
  257.          if(bMsg)
  258.             CheckMenuItem(GetMenu(hWnd), IDM_DISPLAYMESSAGES, MF_BYCOMMAND | MF_CHECKED);
  259.          else
  260.             CheckMenuItem(GetMenu(hWnd), IDM_DISPLAYMESSAGES, MF_BYCOMMAND | MF_UNCHECKED);
  261.  
  262.          if(GetAlignPaletteWnd())
  263.             CheckMenuItem(GetMenu(hWnd), IDM_ALIGNMENTPALETTE, MF_BYCOMMAND | MF_CHECKED);
  264.          else
  265.             CheckMenuItem(GetMenu(hWnd), IDM_ALIGNMENTPALETTE, MF_BYCOMMAND | MF_UNCHECKED);
  266.  
  267.          if(GetColorPaletteWnd())
  268.             CheckMenuItem(GetMenu(hWnd), IDM_COLORPALETTE, MF_BYCOMMAND | MF_CHECKED);
  269.          else
  270.             CheckMenuItem(GetMenu(hWnd), IDM_COLORPALETTE, MF_BYCOMMAND | MF_UNCHECKED);
  271.  
  272.  
  273.          if(GetActiveIDO())
  274.          {
  275.             if(idoGetPopupMenu(GetActiveIDO(), IDOMENU_IDO))
  276.                CheckMenuItem(GetMenu(hWnd), IDM_USEIDOMENUS, MF_BYCOMMAND | MF_CHECKED);
  277.             else
  278.                CheckMenuItem(GetMenu(hWnd), IDM_USEIDOMENUS, MF_BYCOMMAND | MF_UNCHECKED);
  279.  
  280.             if(idoGetEditMode(GetActiveIDO()))
  281.                CheckMenuItem(GetMenu(hWnd), IDM_EDITMODE, MF_BYCOMMAND | MF_CHECKED);
  282.             else
  283.                CheckMenuItem(GetMenu(hWnd), IDM_EDITMODE, MF_BYCOMMAND | MF_UNCHECKED);
  284.  
  285.             if(idoGetToolsPalette(GetActiveIDO()))
  286.                CheckMenuItem(GetMenu(hWnd), IDM_TOOLPALETTE, MF_BYCOMMAND | MF_CHECKED);
  287.             else
  288.                CheckMenuItem(GetMenu(hWnd), IDM_TOOLPALETTE, MF_BYCOMMAND | MF_UNCHECKED);
  289.  
  290.             if(idoGetSnapToGrid(GetActiveIDO()))
  291.                CheckMenuItem(GetMenu(hWnd), IDM_SNAPTOGRID, MF_BYCOMMAND | MF_CHECKED);
  292.             else
  293.                CheckMenuItem(GetMenu(hWnd), IDM_SNAPTOGRID, MF_BYCOMMAND | MF_UNCHECKED);
  294.  
  295.             if(idoGetGridLines(GetActiveIDO()))
  296.                CheckMenuItem(GetMenu(hWnd), IDM_GRIDLINES, MF_BYCOMMAND | MF_CHECKED);
  297.             else
  298.                CheckMenuItem(GetMenu(hWnd), IDM_GRIDLINES, MF_BYCOMMAND | MF_UNCHECKED);
  299.  
  300.             if(idoGetRulesEnforced(GetActiveIDO()))
  301.                CheckMenuItem(GetMenu(hWnd), IDM_ENFORCERULES, MF_BYCOMMAND | MF_CHECKED);
  302.             else
  303.                CheckMenuItem(GetMenu(hWnd), IDM_ENFORCERULES, MF_BYCOMMAND | MF_UNCHECKED);
  304.  
  305.  
  306.             if(idoGetCurrentEntity(GetActiveIDO(), &entity))
  307.                EnableMenuItem(GetMenu(hWnd), IDM_SETCURRENTENTITYTEXT, MF_BYCOMMAND | MF_ENABLED);
  308.             else
  309.                EnableMenuItem(GetMenu(hWnd), IDM_SETCURRENTENTITYTEXT, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  310.  
  311.  
  312.             EnableMenuItem(GetMenu(hWnd), IDM_CUT, MF_BYCOMMAND | MF_ENABLED);
  313.             EnableMenuItem(GetMenu(hWnd), IDM_COPY, MF_BYCOMMAND | MF_ENABLED);
  314.             EnableMenuItem(GetMenu(hWnd), IDM_PASTE, MF_BYCOMMAND | MF_ENABLED);
  315.             EnableMenuItem(GetMenu(hWnd), CM_FILESAVE, MF_BYCOMMAND | MF_ENABLED);
  316.             EnableMenuItem(GetMenu(hWnd), IDM_SAVEAS, MF_BYCOMMAND | MF_ENABLED);
  317.             EnableMenuItem(GetMenu(hWnd), IDM_CLOSE, MF_BYCOMMAND | MF_ENABLED);
  318.             EnableMenuItem(GetMenu(hWnd), IDM_RESET, MF_BYCOMMAND | MF_ENABLED);
  319.             EnableMenuItem(GetMenu(hWnd), CM_FILEPRINT, MF_BYCOMMAND | MF_ENABLED);
  320.             EnableMenuItem(GetMenu(hWnd), IDM_ZOOMIN, MF_BYCOMMAND | MF_ENABLED);
  321.             EnableMenuItem(GetMenu(hWnd), IDM_ZOOMOUT, MF_BYCOMMAND | MF_ENABLED);
  322.             EnableMenuItem(GetMenu(hWnd), IDM_ZOOMTOFITWINDOW, MF_BYCOMMAND | MF_ENABLED);
  323.             EnableMenuItem(GetMenu(hWnd), IDM_SNAPTOGRID, MF_BYCOMMAND | MF_ENABLED);
  324.             EnableMenuItem(GetMenu(hWnd), IDM_TOOLPALETTE, MF_BYCOMMAND | MF_ENABLED);
  325.             EnableMenuItem(GetMenu(hWnd), IDM_USEIDOMENUS, MF_BYCOMMAND | MF_ENABLED);
  326.             EnableMenuItem(GetMenu(hWnd), IDM_EDITMODE, MF_BYCOMMAND | MF_ENABLED);
  327.             EnableMenuItem(GetMenu(hWnd), IDM_ENFORCERULES, MF_BYCOMMAND | MF_ENABLED);
  328.             EnableMenuItem(GetMenu(hWnd), IDM_GRIDLINES, MF_BYCOMMAND | MF_ENABLED);
  329.             EnableMenuItem(GetMenu(hWnd), IDM_ADDE, MF_BYCOMMAND | MF_ENABLED);
  330.             EnableMenuItem(GetMenu(hWnd), IDM_DELETEE, MF_BYCOMMAND | MF_ENABLED);
  331.             EnableMenuItem(GetMenu(hWnd), IDM_ADDREL, MF_BYCOMMAND | MF_ENABLED);
  332.             EnableMenuItem(GetMenu(hWnd), IDM_DELETERELATION, MF_BYCOMMAND | MF_ENABLED);
  333.             EnableMenuItem(GetMenu(hWnd), IDM_SETUSERMENUS, MF_BYCOMMAND | MF_ENABLED);
  334.             EnableMenuItem(GetMenu(hWnd), IDM_RESETMENUS, MF_BYCOMMAND | MF_ENABLED);
  335.             EnableMenuItem(GetMenu(hWnd), IDM_SETETEXT, MF_BYCOMMAND | MF_ENABLED);
  336.             EnableMenuItem(GetMenu(hWnd), IDM_SETCURRENTENTITY, MF_BYCOMMAND | MF_ENABLED);
  337.          }
  338.          else
  339.          {
  340.             EnableMenuItem(GetMenu(hWnd), IDM_SETCURRENTENTITYTEXT, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  341.             EnableMenuItem(GetMenu(hWnd), IDM_CUT, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  342.             EnableMenuItem(GetMenu(hWnd), IDM_COPY, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  343.             EnableMenuItem(GetMenu(hWnd), IDM_PASTE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  344.             EnableMenuItem(GetMenu(hWnd), CM_FILESAVE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  345.             EnableMenuItem(GetMenu(hWnd), IDM_SAVEAS, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  346.             EnableMenuItem(GetMenu(hWnd), IDM_CLOSE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  347.             EnableMenuItem(GetMenu(hWnd), IDM_RESET, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  348.             EnableMenuItem(GetMenu(hWnd), CM_FILEPRINT, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  349.             EnableMenuItem(GetMenu(hWnd), IDM_ZOOMIN, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  350.             EnableMenuItem(GetMenu(hWnd), IDM_ZOOMOUT, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  351.             EnableMenuItem(GetMenu(hWnd), IDM_ZOOMTOFITWINDOW, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  352.             CheckMenuItem(GetMenu(hWnd), IDM_SNAPTOGRID, MF_BYCOMMAND | MF_UNCHECKED);
  353.             EnableMenuItem(GetMenu(hWnd), IDM_SNAPTOGRID, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  354.             CheckMenuItem(GetMenu(hWnd), IDM_TOOLPALETTE, MF_BYCOMMAND | MF_UNCHECKED);
  355.             EnableMenuItem(GetMenu(hWnd), IDM_TOOLPALETTE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  356.             EnableMenuItem(GetMenu(hWnd), IDM_USEIDOMENUS, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  357.             CheckMenuItem(GetMenu(hWnd), IDM_EDITMODE, MF_BYCOMMAND | MF_UNCHECKED);
  358.             EnableMenuItem(GetMenu(hWnd), IDM_EDITMODE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  359.             CheckMenuItem(GetMenu(hWnd), IDM_ENFORCERULES, MF_BYCOMMAND | MF_UNCHECKED);
  360.             EnableMenuItem(GetMenu(hWnd), IDM_ENFORCERULES, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  361.             CheckMenuItem(GetMenu(hWnd), IDM_GRIDLINES, MF_BYCOMMAND | MF_UNCHECKED);
  362.             EnableMenuItem(GetMenu(hWnd), IDM_GRIDLINES, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  363.             EnableMenuItem(GetMenu(hWnd), IDM_ADDE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  364.             EnableMenuItem(GetMenu(hWnd), IDM_DELETEE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  365.             EnableMenuItem(GetMenu(hWnd), IDM_ADDREL, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  366.             EnableMenuItem(GetMenu(hWnd), IDM_DELETERELATION, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  367.             CheckMenuItem(GetMenu(hWnd), IDM_USEIDOMENUS, MF_BYCOMMAND | MF_UNCHECKED);
  368.             EnableMenuItem(GetMenu(hWnd), IDM_SETUSERMENUS, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  369.             EnableMenuItem(GetMenu(hWnd), IDM_RESETMENUS, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  370.             EnableMenuItem(GetMenu(hWnd), IDM_SETETEXT, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  371.             EnableMenuItem(GetMenu(hWnd), IDM_SETCURRENTENTITY, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  372.          }
  373.  
  374.          //Regen_WM_INITMENUPOPUP
  375.          break;
  376.  
  377.       case WM_COMMAND :
  378.       #ifdef WIN32
  379.          CtlId  = LOWORD(wParam);
  380.          Notify = HIWORD(wParam);
  381.          CtlWnd = (HWND)lParam;
  382.       #else
  383.          CtlId  = wParam;
  384.          Notify = HIWORD(lParam);
  385.          CtlWnd = (HWND)LOWORD(lParam);
  386.       #endif
  387.          if(!CtlWnd)
  388.          {         // Process Menu Commands
  389.             //Regen_CustomMenuItems
  390.             //Regen_CustomMenuItems
  391.             switch(CtlId)  // Determine which Menu ID
  392.             {
  393.             case CM_FILENEW :
  394.                //lRegen_Start_CM_FILENEW
  395.                //lRegen_Start_CM_FILENEW
  396.                fnidodialog(hWndClient, 0, NULL);
  397.                //Regen_End_CM_FILENEW
  398.                //Regen_End_CM_FILENEW
  399.                break;
  400.             case CM_FILEOPEN :
  401.                //lRegen_Start_CM_FILEOPEN
  402.                //lRegen_Start_CM_FILEOPEN
  403.                szOFFilePath[0] = '\0';
  404.                ofOF.lStructSize = sizeof(OPENFILENAME);
  405.                ofOF.hwndOwner = hWnd;
  406.                ofOF.lpstrFilter = szOFFilter;
  407.                ofOF.lpstrCustomFilter = (LPSTR)NULL;
  408.                ofOF.nMaxCustFilter = 0L;
  409.                ofOF.nFilterIndex = 0;
  410.                ofOF.lpstrFile= szOFFilePath;
  411.                ofOF.nMaxFile = 256;
  412.                ofOF.lpstrFileTitle = szOFFileTitle;
  413.                ofOF.nMaxFileTitle = sizeof(szOFFileTitle);
  414.                ofOF.lpstrInitialDir = NULL;
  415.                ofOF.lpstrTitle = (LPSTR)"Open Diagram File";
  416.                ofOF.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST;
  417.                ofOF.nFileOffset = 0;
  418.                ofOF.nFileExtension = 0;
  419.                ofOF.lpstrDefExt = NULL;
  420.                bOFRetCode = GetOpenFileName(&ofOF);
  421.                //Regen_End_CM_FILEOPEN
  422.  
  423.                /*
  424.                 *   Read an IDO file.
  425.                 */
  426.                if(bOFRetCode)
  427.                {
  428.                   fnidodialog(hWndClient, 0, NULL);
  429.                   idoReadDiagram(GetActiveIDO(), szOFFilePath);
  430.                   SetWindowText(GetParent(GetActiveIDO()), szOFFilePath);
  431.                   idoSetFileName(GetActiveIDO(), szOFFilePath);
  432.                }
  433.                else
  434.                   ;
  435. //                  MessageBeep(0); // canceled file open
  436.  
  437.                //Regen_End_CM_FILEOPEN
  438.                break;
  439.             case IDM_CLOSE :
  440.                //lRegen_Start_IDM_CLOSE
  441.                {
  442.                   HWND hIDO;
  443.                   if(hIDO = GetActiveIDO())
  444.                      SendMessage(GetParent(GetParent(hIDO)), WM_MDIDESTROY, (WPARAM)GetParent(hIDO), 0L);
  445.                }
  446.                //lRegen_Start_IDM_CLOSE
  447.                //Regen_End_IDM_CLOSE
  448.                //Regen_End_IDM_CLOSE
  449.                break;
  450.             case IDM_RESET :
  451.                //lRegen_Start_IDM_RESET
  452.  
  453.                if(GetActiveIDO())
  454.                {
  455.                   if(IDYES == MessageBox(hWnd, "Would you like to save your diagram?", "Save Work", MB_ICONQUESTION | MB_YESNO))
  456.                   {
  457.                      SENDCOMMAND(hWnd, CM_FILESAVE, 0, 0);
  458.                   }
  459.                   idoResetDiagram(GetActiveIDO());
  460.                }
  461.                //lRegen_Start_IDM_RESET
  462.                //Regen_End_IDM_RESET
  463.                //Regen_End_IDM_RESET
  464.                break;
  465.             case CM_FILESAVE :
  466.                //lRegen_Start_CM_FILESAVE
  467.  
  468.                if(!GetActiveIDO())
  469.                {
  470.                   MessageBeep(0);
  471.                   return TRUE;
  472.                }
  473.  
  474.                if(GetActiveIDO())
  475.                {
  476.                   lstrcpy(szSFFilePath, idoGetFileName(GetActiveIDO()));
  477.                   if(lstrlen(szSFFilePath))
  478.                   {
  479.                      idoSaveDiagram(GetActiveIDO(), szSFFilePath);
  480.                      return TRUE;
  481.                   }
  482.                }
  483.                //lRegen_Start_CM_FILESAVE
  484.                szSFFilePath[0] = '\0';
  485.                ofSF.lStructSize = sizeof(OPENFILENAME);
  486.                ofSF.hwndOwner = hWnd;
  487.                ofSF.lpstrFilter = szSFFilter;
  488.                ofSF.lpstrCustomFilter = (LPSTR)NULL;
  489.                ofSF.nMaxCustFilter = 0L;
  490.                ofSF.nFilterIndex = 0;
  491.                ofSF.lpstrFile = szSFFilePath;
  492.                ofSF.nMaxFile = 256;
  493.                ofSF.lpstrFileTitle = szSFFileTitle;
  494.                ofSF.nMaxFileTitle = sizeof(szSFFileTitle);
  495.                ofSF.lpstrInitialDir = NULL;
  496.                ofSF.lpstrTitle = (LPSTR)"Save Diagram File";
  497.                ofSF.Flags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST;
  498.                ofSF.nFileOffset = 0;
  499.                ofSF.nFileExtension = 0;
  500.                ofSF.lpstrDefExt = (LPSTR)"IDO";
  501.                bSFRetCode = GetSaveFileName(&ofSF);
  502.                //Regen_End_CM_FILESAVE
  503.                /*
  504.                 *   Save an IDO file.
  505.                 */
  506.                if(bSFRetCode)
  507.                {
  508.                   idoSaveDiagram(GetActiveIDO(), szSFFilePath);
  509.                   SetWindowText(GetParent(GetActiveIDO()), szSFFilePath);
  510.                   idoSetFileName(GetActiveIDO(), szSFFilePath);
  511.                }
  512.                //Regen_End_CM_FILESAVE
  513.                break;
  514.             case IDM_SAVEAS :
  515.                //lRegen_Start_IDM_SAVEAS
  516.  
  517.                if(!GetActiveIDO())
  518.                {
  519.                   MessageBeep(0);
  520.                   return TRUE;
  521.                }
  522.  
  523.                szSFFilePath[0] = '\0';
  524.                ofSF.lStructSize = sizeof(OPENFILENAME);
  525.                ofSF.hwndOwner = hWnd;
  526.                ofSF.lpstrFilter = szSFFilter;
  527.                ofSF.lpstrCustomFilter = (LPSTR)NULL;
  528.                ofSF.nMaxCustFilter = 0L;
  529.                ofSF.nFilterIndex = 0;
  530.                ofSF.lpstrFile = szSFFilePath;
  531.                ofSF.nMaxFile = 256;
  532.                ofSF.lpstrFileTitle = szSFFileTitle;
  533.                ofSF.nMaxFileTitle = sizeof(szSFFileTitle);
  534.                ofSF.lpstrInitialDir = NULL;
  535.                ofSF.lpstrTitle = (LPSTR)"Save Diagram File";
  536.                ofSF.Flags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_SHOWHELP;
  537.                ofSF.nFileOffset = 0;
  538.                ofSF.nFileExtension = 0;
  539.                ofSF.lpstrDefExt = (LPSTR)"IDO";
  540.                bSFRetCode = GetSaveFileName(&ofSF);
  541.                /*
  542.                 *   Save an IDO file.
  543.                 */
  544.                if(bSFRetCode)
  545.                {
  546.                   idoSaveDiagram(GetActiveIDO(), szSFFilePath);
  547.                   SetWindowText(GetParent(GetActiveIDO()), szSFFilePath);
  548.                   idoSetFileName(GetActiveIDO(), szSFFilePath);
  549.                }
  550.  
  551.                //lRegen_Start_IDM_SAVEAS
  552.                //Regen_End_IDM_SAVEAS
  553.                //Regen_End_IDM_SAVEAS
  554.                break;
  555.             case IDM_RESETPALETTE :
  556.                //lRegen_Start_IDM_RESETPALETTE
  557.                idoResetPalette(GetActiveIDO());
  558.                //lRegen_Start_IDM_RESETPALETTE
  559.                //Regen_End_IDM_RESETPALETTE
  560.                //Regen_End_IDM_RESETPALETTE
  561.                break;
  562.             case IDM_LOADPALETTE :
  563.                //lRegen_Start_IDM_LOADPALETTE
  564.                //lRegen_Start_IDM_LOADPALETTE
  565.                szPALETTEFilePath[0] = '\0';
  566.                ofPALETTE.lStructSize = sizeof(OPENFILENAME);
  567.                ofPALETTE.hwndOwner = hWnd;
  568.                ofPALETTE.lpstrFilter = szPALETTEFilter;
  569.                ofPALETTE.lpstrCustomFilter = (LPSTR)NULL;
  570.                ofPALETTE.nMaxCustFilter = 0L;
  571.                ofPALETTE.nFilterIndex = 0;
  572.                ofPALETTE.lpstrFile= szPALETTEFilePath;
  573.                ofPALETTE.nMaxFile = 256;
  574.                ofPALETTE.lpstrFileTitle = szPALETTEFileTitle;
  575.                ofPALETTE.nMaxFileTitle = sizeof(szPALETTEFileTitle);
  576.                ofPALETTE.lpstrInitialDir = NULL;
  577.                ofPALETTE.lpstrTitle = (LPSTR)"Open Palette File";
  578.                ofPALETTE.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST;
  579.                ofPALETTE.nFileOffset = 0;
  580.                ofPALETTE.nFileExtension = 0;
  581.                ofPALETTE.lpstrDefExt = NULL;
  582.                bPALETTERetCode = GetOpenFileName(&ofPALETTE);
  583.                //Regen_End_IDM_LOADPALETTE
  584.                if(bPALETTERetCode)
  585.                   idoReadPalette(GetActiveIDO(), szPALETTEFilePath);
  586.                //Regen_End_IDM_LOADPALETTE
  587.                break;
  588.             case IDM_SAVEPALETTE :
  589.                //lRegen_Start_IDM_SAVEPALETTE
  590.                //lRegen_Start_IDM_SAVEPALETTE
  591.                szPLT2FilePath[0] = '\0';
  592.                ofPLT2.lStructSize = sizeof(OPENFILENAME);
  593.                ofPLT2.hwndOwner = hWnd;
  594.                ofPLT2.lpstrFilter = szPLT2Filter;
  595.                ofPLT2.lpstrCustomFilter = (LPSTR)NULL;
  596.                ofPLT2.nMaxCustFilter = 0L;
  597.                ofPLT2.nFilterIndex = 0;
  598.                ofPLT2.lpstrFile = szPLT2FilePath;
  599.                ofPLT2.nMaxFile = 256;
  600.                ofPLT2.lpstrFileTitle = szPLT2FileTitle;
  601.                ofPLT2.nMaxFileTitle = sizeof(szPLT2FileTitle);
  602.                ofPLT2.lpstrInitialDir = NULL;
  603.                ofPLT2.lpstrTitle = (LPSTR)"Save Palette File";
  604.                ofPLT2.Flags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST;
  605.                ofPLT2.nFileOffset = 0;
  606.                ofPLT2.nFileExtension = 0;
  607.                ofPLT2.lpstrDefExt = (LPSTR)"PLT";
  608.                bPLT2RetCode = GetSaveFileName(&ofPLT2);
  609.                //Regen_End_IDM_SAVEPALETTE
  610.                if(bPLT2RetCode)
  611.                   idoSavePalette(GetActiveIDO(), szPLT2FilePath);
  612.                //Regen_End_IDM_SAVEPALETTE
  613.                break;
  614.             case CM_FILEPRINT :
  615.                //lRegen_Start_CM_FILEPRINT
  616.  
  617.                /*
  618.                 *   Print the IDO.
  619.                 */
  620.                 idoPrintDiagram(GetActiveIDO());
  621.  
  622.                //lRegen_Start_CM_FILEPRINT
  623.                //Regen_End_CM_FILEPRINT
  624.                //Regen_End_CM_FILEPRINT
  625.                break;
  626.             case CM_EXIT :
  627.                //lRegen_Start_CM_EXIT
  628.                //lRegen_Start_CM_EXIT
  629.                //Regen_End_CM_EXIT
  630.                //Regen_End_CM_EXIT
  631.                SendMessage (hWnd, WM_CLOSE, 0, 0L);
  632.                return 0;
  633.  
  634.             case IDM_CUT :
  635.                //lRegen_Start_IDM_CUT
  636.  
  637.                if(GetActiveIDO())
  638.                   SendMessage(GetActiveIDO(), WM_CUT, 0, 0L);
  639.                else
  640.                   MessageBeep(0);
  641.  
  642.                //lRegen_Start_IDM_CUT
  643.                //Regen_End_IDM_CUT
  644.                //Regen_End_IDM_CUT
  645.                break;
  646.             case IDM_COPY :
  647.                //lRegen_Start_IDM_COPY
  648.  
  649.                if(GetActiveIDO())
  650.                   SendMessage(GetActiveIDO(), WM_COPY, 0, 0L);
  651.                else
  652.                   MessageBeep(0);
  653.  
  654.                //lRegen_Start_IDM_COPY
  655.                //Regen_End_IDM_COPY
  656.                //Regen_End_IDM_COPY
  657.                break;
  658.             case IDM_PASTE :
  659.                //lRegen_Start_IDM_PASTE
  660.  
  661.                if(GetActiveIDO())
  662.                   SendMessage(GetActiveIDO(), WM_PASTE, 0, 0L);
  663.                else
  664.                   MessageBeep(0);
  665.  
  666.                //lRegen_Start_IDM_PASTE
  667.                //Regen_End_IDM_PASTE
  668.                //Regen_End_IDM_PASTE
  669.                break;
  670.             case IDM_ZOOMIN :
  671.                //lRegen_Start_IDM_ZOOMIN
  672.  
  673.                if(GetActiveIDO())
  674.                   idoZoom(GetActiveIDO(), IDO_ZOOM_IN, 0L);
  675.                else
  676.                   MessageBeep(0);
  677.  
  678.                //lRegen_Start_IDM_ZOOMIN
  679.                //Regen_End_IDM_ZOOMIN
  680.                //Regen_End_IDM_ZOOMIN
  681.                break;
  682.             case IDM_ZOOMOUT :
  683.                //lRegen_Start_IDM_ZOOMOUT
  684.  
  685.                if(GetActiveIDO())
  686.                   idoZoom(GetActiveIDO(), IDO_ZOOM_OUT, 0L);
  687.                else
  688.                   MessageBeep(0);
  689.  
  690.                //lRegen_Start_IDM_ZOOMOUT
  691.                //Regen_End_IDM_ZOOMOUT
  692.                //Regen_End_IDM_ZOOMOUT
  693.                break;
  694.             case IDM_ZOOMTOFITWINDOW :
  695.                //lRegen_Start_IDM_ZOOMTOFITWINDOW
  696.  
  697.                if(GetActiveIDO())
  698.                   idoZoom(GetActiveIDO(), IDO_ZOOM_TO_FIT, 0L);
  699.                else
  700.                   MessageBeep(0);
  701.  
  702.                //lRegen_Start_IDM_ZOOMTOFITWINDOW
  703.                //Regen_End_IDM_ZOOMTOFITWINDOW
  704.                //Regen_End_IDM_ZOOMTOFITWINDOW
  705.                break;
  706.             case IDM_USEIDOMENUS :
  707.                //lRegen_Start_IDM_USEIDOMENUS
  708.  
  709.                /*
  710.                 *   Toggle displaying IDO menus.
  711.                 */
  712.                IDO_ToggleUserIdoMenus(GetActiveIDO());
  713.  
  714.                //lRegen_Start_IDM_USEIDOMENUS
  715.                //Regen_End_IDM_USEIDOMENUS
  716.                //Regen_End_IDM_USEIDOMENUS
  717.                break;
  718.             case IDM_GRIDLINES :
  719.                //lRegen_Start_IDM_GRIDLINES
  720.  
  721.                if(GetActiveIDO())
  722.                   IDO_ToggleGrid(GetActiveIDO());
  723.                else
  724.                   MessageBeep(0);
  725.  
  726.                //lRegen_Start_IDM_GRIDLINES
  727.                //Regen_End_IDM_GRIDLINES
  728.                //Regen_End_IDM_GRIDLINES
  729.                break;
  730.             case IDM_SNAPTOGRID :
  731.                //lRegen_Start_IDM_SNAPTOGRID
  732.  
  733.                if(GetActiveIDO())
  734.                   IDO_ToggleSnap(GetActiveIDO());
  735.                else
  736.                   MessageBeep(0);
  737.  
  738.                //lRegen_Start_IDM_SNAPTOGRID
  739.                //Regen_End_IDM_SNAPTOGRID
  740.                //Regen_End_IDM_SNAPTOGRID
  741.                break;
  742.             case IDM_EDITMODE :
  743.                //lRegen_Start_IDM_EDITMODE
  744.  
  745.                /*
  746.                 *   Toggle edit mode.
  747.                 */
  748.                IDO_ToggleEditMode(GetActiveIDO());
  749.  
  750.                //lRegen_Start_IDM_EDITMODE
  751.                //Regen_End_IDM_EDITMODE
  752.                //Regen_End_IDM_EDITMODE
  753.                break;
  754.             case IDM_ENFORCERULES :
  755.                //lRegen_Start_IDM_ENFORCERULES
  756.  
  757.                /*
  758.                 *   Toggle rules.
  759.                 */
  760.                if(idoGetRulesEnforced(GetActiveIDO()))
  761.                   idoSetRulesEnforced(GetActiveIDO(), FALSE);
  762.                else
  763.                   idoSetRulesEnforced(GetActiveIDO(), TRUE);
  764.  
  765.                //lRegen_Start_IDM_ENFORCERULES
  766.                //Regen_End_IDM_ENFORCERULES
  767.                //Regen_End_IDM_ENFORCERULES
  768.                break;
  769.             case IDM_DISPLAYMESSAGES :
  770.                //lRegen_Start_IDM_DISPLAYMESSAGES
  771.  
  772.                bMsg = !bMsg;
  773.  
  774.                //lRegen_Start_IDM_DISPLAYMESSAGES
  775.                //Regen_End_IDM_DISPLAYMESSAGES
  776.                //Regen_End_IDM_DISPLAYMESSAGES
  777.                break;
  778.             case IDM_ADDENTITY :
  779.                //lRegen_Start_IDM_ADDENTITY
  780.                //lRegen_Start_IDM_ADDENTITY
  781.                if(fnaddentity(hWnd, 0, NULL))
  782.                {
  783.                }
  784.                //Regen_End_IDM_ADDENTITY
  785.                //Regen_End_IDM_ADDENTITY
  786.                break;
  787.             case IDM_ADDRELATION :
  788.                //lRegen_Start_IDM_ADDRELATION
  789.                //lRegen_Start_IDM_ADDRELATION
  790.                if(fnaddrelation(hWnd, 0, NULL))
  791.                {
  792.                }
  793.                //Regen_End_IDM_ADDRELATION
  794.                //Regen_End_IDM_ADDRELATION
  795.                break;
  796.             case IDM_DELETEENTITY :
  797.                //lRegen_Start_IDM_DELETEENTITY
  798.                //lRegen_Start_IDM_DELETEENTITY
  799.                if(fndeleteentity(hWnd, 0, NULL))
  800.                {
  801.                }
  802.                //Regen_End_IDM_DELETEENTITY
  803.                //Regen_End_IDM_DELETEENTITY
  804.                break;
  805.             case IDM_DELETERELATION :
  806.                //lRegen_Start_IDM_DELETERELATION
  807.                //lRegen_Start_IDM_DELETERELATION
  808.                if(fndelrel(hWnd, 0, NULL))
  809.                {
  810.                }
  811.                //Regen_End_IDM_DELETERELATION
  812.                //Regen_End_IDM_DELETERELATION
  813.                break;
  814.             case IDM_SETCURRENTENTITYTEXT :
  815.                //lRegen_Start_IDM_SETCURRENTENTITYTEXT
  816.                //lRegen_Start_IDM_SETCURRENTENTITYTEXT
  817.                if(fnsettext(hWnd, 0, NULL))
  818.                {
  819.                }
  820.                //Regen_End_IDM_SETCURRENTENTITYTEXT
  821.                //Regen_End_IDM_SETCURRENTENTITYTEXT
  822.                break;
  823.             case IDM_SETITEMFONT :
  824.                //lRegen_Start_IDM_SETITEMFONT
  825.                //lRegen_Start_IDM_SETITEMFONT
  826.                cfCF.lStructSize = sizeof(CHOOSEFONT);
  827.                cfCF.hwndOwner = hWnd;
  828.                cfCF.lpLogFont = &lfCF;
  829.                cfCF.nFontType = SCREEN_FONTTYPE;
  830.                cfCF.nSizeMin  = 0;
  831.                cfCF.nSizeMax  = 32;
  832.                cfCF.Flags = CF_ANSIONLY | CF_SCREENFONTS;
  833.                bCFRetCode = ChooseFont(&cfCF);
  834.                //Regen_End_IDM_SETITEMFONT
  835.                SetItemFont(&lfCF);
  836.                //Regen_End_IDM_SETITEMFONT
  837.                break;
  838.             case IDM_COLOR :
  839.                //lRegen_Start_IDM_COLOR
  840.                idoPropertyPage(GetActiveIDO(), PP_IDO_COLORS);
  841.  
  842.                //lRegen_Start_IDM_COLOR
  843.                //Regen_End_IDM_COLOR
  844.                //Regen_End_IDM_COLOR
  845.                break;
  846.             case IDM_GRID :
  847.                //lRegen_Start_IDM_GRID
  848.                idoPropertyPage(GetActiveIDO(), PP_IDO_GRID);
  849.  
  850.                //lRegen_Start_IDM_GRID
  851.                //Regen_End_IDM_GRID
  852.                //Regen_End_IDM_GRID
  853.                break;
  854.             case IDM_TEXT :
  855.                //lRegen_Start_IDM_TEXT
  856.                {
  857.                   ENTITY entity;
  858.                   if(idoGetCurrentEntity(GetActiveIDO(), &entity))
  859.                      idoEntityPropertyPage(&entity, IDO_PPE_TEXT);
  860.                }
  861.                //lRegen_Start_IDM_TEXT
  862.                //Regen_End_IDM_TEXT
  863.                //Regen_End_IDM_TEXT
  864.                break;
  865.             case IDM1_COLOR :
  866.                //lRegen_Start_IDM1_COLOR
  867.                {
  868.                   ENTITY entity;
  869.                   if(idoGetCurrentEntity(GetActiveIDO(), &entity))
  870.                      idoEntityPropertyPage(&entity, IDO_PPE_COLORS);
  871.                }
  872.                //lRegen_Start_IDM1_COLOR
  873.                //Regen_End_IDM1_COLOR
  874.                //Regen_End_IDM1_COLOR
  875.                break;
  876.             case IDM_SHAPE :
  877.                //lRegen_Start_IDM_SHAPE
  878.                {
  879.                   ENTITY entity;
  880.                   if(idoGetCurrentEntity(GetActiveIDO(), &entity))
  881.                      idoEntityPropertyPage(&entity, IDO_PPE_STYLES);
  882.                }
  883.                //lRegen_Start_IDM_SHAPE
  884.                //Regen_End_IDM_SHAPE
  885.                //Regen_End_IDM_SHAPE
  886.                break;
  887.             case IDM_GRAPHIC :
  888.                //lRegen_Start_IDM_GRAPHIC
  889.                {
  890.                   ENTITY entity;
  891.                   if(idoGetCurrentEntity(GetActiveIDO(), &entity))
  892.                      idoEntityPropertyPage(&entity, IDO_PPE_GRAPHICS);
  893.                }
  894.                //lRegen_Start_IDM_GRAPHIC
  895.                //Regen_End_IDM_GRAPHIC
  896.                //Regen_End_IDM_GRAPHIC
  897.                break;
  898.             case IDM1_TEXT :
  899.                //lRegen_Start_IDM1_TEXT
  900.                {
  901.                   RELATION relation;
  902.                   if(idoGetCurrentRelation(GetActiveIDO(), &relation))
  903.                      idoRelationPropertyPage(&relation, IDO_PPR_TEXT);
  904.                }
  905.                //lRegen_Start_IDM1_TEXT
  906.                //Regen_End_IDM1_TEXT
  907.                //Regen_End_IDM1_TEXT
  908.                break;
  909.             case IDM1_SHAPE :
  910.                //lRegen_Start_IDM1_SHAPE
  911.                {
  912.                   RELATION relation;
  913.                   if(idoGetCurrentRelation(GetActiveIDO(), &relation))
  914.                      idoRelationPropertyPage(&relation, IDO_PPR_STYLES);
  915.                }
  916.                //lRegen_Start_IDM1_SHAPE
  917.                //Regen_End_IDM1_SHAPE
  918.                //Regen_End_IDM1_SHAPE
  919.                break;
  920.             case IDM2_COLOR :
  921.                //lRegen_Start_IDM2_COLOR
  922.                {
  923.                   RELATION relation;
  924.                   if(idoGetCurrentRelation(GetActiveIDO(), &relation))
  925.                      idoRelationPropertyPage(&relation, IDO_PPR_COLORS);
  926.                }
  927.                //lRegen_Start_IDM2_COLOR
  928.                //Regen_End_IDM2_COLOR
  929.                //Regen_End_IDM2_COLOR
  930.                break;
  931.             case IDM_TOOLPALETTE :
  932.                //lRegen_Start_IDM_TOOLPALETTE
  933.  
  934.                /*
  935.                 *   Toggle tool palette.
  936.                 */
  937.                IDO_TogglePalette(GetActiveIDO());
  938.  
  939.                //lRegen_Start_IDM_TOOLPALETTE
  940.                //Regen_End_IDM_TOOLPALETTE
  941.                //Regen_End_IDM_TOOLPALETTE
  942.                break;
  943.             case IDM_COLORPALETTE :
  944.                //lRegen_Start_IDM_COLORPALETTE
  945.                //lRegen_Start_IDM_COLORPALETTE
  946. //Lock
  947.                if(fncolorset(hWnd, 0, NULL))
  948.                {
  949.                }
  950.                //Regen_End_IDM_COLORPALETTE
  951.                //Regen_End_IDM_COLORPALETTE
  952.                break;
  953.             case IDM_ALIGNMENTPALETTE :
  954.                //lRegen_Start_IDM_ALIGNMENTPALETTE
  955.                //lRegen_Start_IDM_ALIGNMENTPALETTE
  956. //Lock
  957.                if(fnaligner(hWnd, 0, NULL))
  958.                {
  959.                }
  960.                //Regen_End_IDM_ALIGNMENTPALETTE
  961.                //Regen_End_IDM_ALIGNMENTPALETTE
  962.                break;
  963.             case IDM_REFRESHIDO :
  964.                //lRegen_Start_IDM_REFRESHIDO
  965.  
  966.                /*
  967.                 *   Redraw the IDO.
  968.                 */
  969.                InvalidateRect(GetActiveIDO(), NULL, TRUE);
  970.                UpdateWindow(GetActiveIDO());
  971.  
  972.                //lRegen_Start_IDM_REFRESHIDO
  973.                //Regen_End_IDM_REFRESHIDO
  974.                //Regen_End_IDM_REFRESHIDO
  975.                break;
  976.             case CM_CASCADECHILDREN :
  977.                //lRegen_Start_CM_CASCADECHILDREN
  978.                //lRegen_Start_CM_CASCADECHILDREN
  979.                //Regen_End_CM_CASCADECHILDREN
  980.                //Regen_End_CM_CASCADECHILDREN
  981.                SendMessage (hWndClient, WM_MDICASCADE, 0, 0L);
  982.                return 0;
  983.  
  984.             case CM_TILECHILDREN :
  985.                //lRegen_Start_CM_TILECHILDREN
  986.                //lRegen_Start_CM_TILECHILDREN
  987.                //Regen_End_CM_TILECHILDREN
  988.                //Regen_End_CM_TILECHILDREN
  989.                SendMessage (hWndClient, WM_MDITILE, 0, 0L);
  990.                return 0;
  991.  
  992.             case CM_ARRANGEICONS :
  993.                //lRegen_Start_CM_ARRANGEICONS
  994.                //lRegen_Start_CM_ARRANGEICONS
  995.                //Regen_End_CM_ARRANGEICONS
  996.                SendMessage (hWndClient, WM_MDIICONARRANGE, 0, 0L);
  997.                //Regen_End_CM_ARRANGEICONS
  998.                break;
  999.             case CM_CLOSECHILDREN :
  1000.                //lRegen_Start_CM_CLOSECHILDREN
  1001.                //lRegen_Start_CM_CLOSECHILDREN
  1002.                //Regen_End_CM_CLOSECHILDREN
  1003.                EnumChildWindows (hWndClient, CloseEnumProc, 0L);
  1004.                //Regen_End_CM_CLOSECHILDREN
  1005.                break;
  1006.             case IDM_HELP :
  1007.                //lRegen_Start_IDM_HELP
  1008.                WinHelp(hWnd, (LPSTR)"pvido.hlp", HELP_CONTENTS, 0);
  1009.                //lRegen_Start_IDM_HELP
  1010.                //Regen_End_IDM_HELP
  1011.                //Regen_End_IDM_HELP
  1012.                break;
  1013.             case IDM_ABOUT :
  1014.                //lRegen_Start_IDM_ABOUT
  1015.                //lRegen_Start_IDM_ABOUT
  1016.                if(fnAboutidoiface(hWnd, 0, NULL))
  1017.                {
  1018.                }
  1019.                //Regen_End_IDM_ABOUT
  1020.                //Regen_End_IDM_ABOUT
  1021.                break;
  1022.             default :
  1023.                if(hWndChild = (HWND)SendMessage(hWndClient, WM_MDIGETACTIVE, 0, 0))
  1024.                   SendMessage(hWndChild, WM_COMMAND, wParam, lParam);
  1025.             }
  1026.          }
  1027.          else
  1028.          {
  1029.             //Regen_CustomCommand
  1030.             //Regen_CustomCommand
  1031.  
  1032.             switch(CtlId)
  1033.             {
  1034.             }
  1035.          }
  1036.          break;
  1037.  
  1038.       case WM_MENUSELECT :
  1039.  
  1040.          //Regen_WM_MENUSELECT
  1041.          //Regen_WM_MENUSELECT
  1042.  
  1043.          vwProcessDSL(hWnd, uMessage, wParam, lParam);
  1044.          break;
  1045.  
  1046.       case WM_QUERYENDSESSION:
  1047.       case WM_CLOSE:       // Attempt to close all children
  1048.  
  1049.          EnumChildWindows (hWndClient, CloseEnumProc, 0L);
  1050.  
  1051.          if (NULL != GetWindow (hWndClient, GW_CHILD))
  1052.               return 0;
  1053.  
  1054.          //Regen_WM_Close
  1055.          //Regen_WM_Close
  1056.  
  1057.          PostQuitMessage(0);
  1058.          break;   // ie, call DefFrameProc;
  1059.       case WM_SIZE :
  1060.          //lRegen_WM_Size
  1061.          //lRegen_WM_Size
  1062.          vwSizeToolBars(hWnd);
  1063.          vwSizeMDIClient(hWnd, hWndClient, TRUE);
  1064.          return 0;
  1065.  
  1066.  
  1067.       default :
  1068.           return DefFrameProc(hWnd, hWndClient, uMessage, wParam, lParam);
  1069.    }
  1070.    return DefFrameProc(hWnd, hWndClient, uMessage, wParam, lParam);
  1071. }
  1072.  
  1073. BOOL CALLBACK EXPORT CloseEnumProc(HWND hWnd, LONG lParam)
  1074. {
  1075.    if(!IsWindow(hWnd))
  1076.       return 1;
  1077.  
  1078.    //Regen_CloseChildren
  1079.    //Regen_CloseChildren
  1080.    SendMessage(GetParent(hWnd), WM_MDIDESTROY, (WPARAM)hWnd, 0L);
  1081.       return 1;
  1082. }
  1083. //Regen_CustomCode
  1084.  
  1085.  
  1086. HWND GetActiveIDO()
  1087. {
  1088.    HWND hWndMDIClient = hWndClient;
  1089.    HWND hIDOdialog;
  1090.    HWND hIDO = 0;
  1091.  
  1092.  
  1093.    hIDOdialog = (HWND)SendMessage(hWndMDIClient, WM_MDIGETACTIVE, 0, 0L);
  1094.    if(IsWindow(hIDOdialog))
  1095.       hIDO = GetDlgItem(hIDOdialog, IDC_IDO);
  1096.  
  1097.  
  1098.    return hIDO;
  1099. }
  1100.  
  1101.  
  1102.  
  1103. LRESULT CALLBACK EXPORT fnMDIWndProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam)
  1104. {
  1105. GETVIEW;
  1106.    WORD CtlId;
  1107.    WORD Notify;
  1108.    HWND CtlWnd;
  1109.  
  1110.    switch(uMessage)
  1111.    {
  1112.       case WM_COMMAND :
  1113.       #ifdef WIN32
  1114.          CtlId  = LOWORD(wParam);
  1115.          Notify = HIWORD(wParam);
  1116.          CtlWnd = (HWND)lParam;
  1117.       #else
  1118.          CtlId  = wParam;
  1119.          Notify = HIWORD(lParam);
  1120.          CtlWnd = (HWND)LOWORD(lParam);
  1121.       #endif
  1122.          switch(CtlId)
  1123.          {
  1124.          }
  1125.          break;
  1126.  
  1127.       case WM_DESTROY :
  1128.          break;
  1129.    }
  1130.    return DefViewProc(hWnd, uMessage, wParam, lParam);
  1131. }
  1132.  
  1133.  
  1134. void SetItemFont(LOGFONT * lfCF)
  1135. {
  1136.    HWND hIDO;
  1137.    ENTITY entity;
  1138.    RELATION relation;
  1139.    IDO_FONT idoFont;
  1140.  
  1141.  
  1142.    lstrcpy(idoFont.szFontName, (LPSTR)lfCF->lfFaceName);
  1143.    idoFont.cSize = lfCF->lfHeight;
  1144.    idoFont.bBold = FALSE;
  1145.    if(lfCF->lfCharSet >= 500)
  1146.       idoFont.bBold = TRUE;
  1147.    idoFont.bItalic = (BOOL)lfCF->lfItalic;
  1148.    idoFont.bUnderline = (BOOL)lfCF->lfUnderline;
  1149.    idoFont.bStrikeout = (BOOL)lfCF->lfStrikeOut;
  1150.  
  1151.    if(hIDO = GetActiveIDO())
  1152.    {
  1153.       // try to get the current entity
  1154.       if(idoGetCurrentEntity(hIDO, &entity))
  1155.       {
  1156.          idoIterateSelectedEntityFirst(hIDO);
  1157.          while(idoIterateSelectedEntityNext(hIDO, &entity))
  1158.             idoEntitySetFont(&entity, &idoFont);
  1159.       }
  1160.       else
  1161.          // try to get the current line
  1162.          if(idoGetCurrentRelation(hIDO, &relation))
  1163.             idoRelationSetFont(&relation, &idoFont);
  1164.  
  1165.       InvalidateRect(hIDO, NULL, TRUE);
  1166.       UpdateWindow(hIDO);
  1167.    }
  1168.  
  1169. }
  1170. //Regen_CustomCode
  1171.