home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sibdemo3.zip / SOURCE.DAT / SOURCE / RTL / PMSTDDLG.PAS < prev    next >
Pascal/Delphi Source File  |  1996-10-19  |  87KB  |  1,662 lines

  1. UNIT PmStdDlg;
  2.  
  3. {****************************** Module Header ******************************
  4. *                                                                          *
  5. * Module Name: PMSTDDLG.PAS                                                *
  6. *                                                                          *
  7. * OS/2 Presentation Manager CUA controls and dialogs declarations          *
  8. *                                                                          *
  9.  ***************************************************************************}
  10.  
  11. INTERFACE
  12.  
  13. USES Os2Def,BseDos,PmWin,PmGpi;
  14.  
  15.    {**********************************************************************
  16.     *                                                                    *
  17.     *                     F I L E    D I A L O G                         *
  18.     *                                                                    *
  19.     **********************************************************************}
  20.  
  21.    {*--------------------------------------------------------------------*
  22.     * File Dialog Invocation Flag Definitions.                           *
  23.    {*--------------------------------------------------------------------*}
  24. CONST
  25.     FDS_CENTER           =$00000001;
  26.     FDS_CUSTOM           =$00000002; { Use custom user template  }
  27.     FDS_FILTERUNION      =$00000004; { Use union of filters      }
  28.     FDS_HELPBUTTON       =$00000008; { Display Help button       }
  29.     FDS_APPLYBUTTON      =$00000010; { Display Apply button      }
  30.     FDS_PRELOAD_VOLINFO  =$00000020; { Preload volume info       }
  31.     FDS_MODELESS         =$00000040; { Make dialog modeless      }
  32.     FDS_INCLUDE_EAS      =$00000080; { Always load EA info       }
  33.     FDS_OPEN_DIALOG      =$00000100; { Select Open dialog        }
  34.     FDS_SAVEAS_DIALOG    =$00000200; { Select SaveAs dialog      }
  35.     FDS_MULTIPLESEL      =$00000400; { Enable multiple selection }
  36.     FDS_ENABLEFILELB     =$00000800; { Enable SaveAs Listbox     }
  37.  
  38.    {--------------------------------------------------------------------}
  39.    { File Dialog Selection returned attribute                           }
  40.    {--------------------------------------------------------------------}
  41.      FDS_EFSELECTION    =0;
  42.      FDS_LBSELECTION    =1;
  43.  
  44.    {--------------------------------------------------------------------}
  45.    { Error Return Codes from dialog (self defining)                     }
  46.    {--------------------------------------------------------------------}
  47.      FDS_SUCCESSFUL                           =0;
  48.      FDS_ERR_DEALLOCATE_MEMORY                =1;
  49.      FDS_ERR_FILTER_TRUNC                     =2;
  50.      FDS_ERR_INVALID_DIALOG                   =3;
  51.      FDS_ERR_INVALID_DRIVE                    =4;
  52.      FDS_ERR_INVALID_FILTER                   =5;
  53.      FDS_ERR_INVALID_PATHFILE                 =6;
  54.      FDS_ERR_OUT_OF_MEMORY                    =7;
  55.      FDS_ERR_PATH_TOO_LONG                    =8;
  56.      FDS_ERR_TOO_MANY_FILE_TYPES              =9;
  57.      FDS_ERR_INVALID_VERSION                  =10;
  58.      FDS_ERR_INVALID_CUSTOM_HANDLE            =11;
  59.      FDS_ERR_DIALOG_LOAD_ERROR                =12;
  60.      FDS_ERR_DRIVE_ERROR                      =13;
  61.  
  62.    {--------------------------------------------------------------------}
  63.    { File Dialog Messages.                                              }
  64.    {--------------------------------------------------------------------}
  65.     FDM_FILTER       =WM_USER+40;  { mp1 = PSZ pszFileName         }
  66.    {                                      mp2 = PSZ EA .TYPE value      }
  67.    {                                      mr  = TRUE -> keep file.      }
  68.     FDM_VALIDATE     =WM_USER+41;  { mp1 = PSZ pszPathName         }
  69.    {                                      mp2 = USHORT Field name id    }
  70.    {                                      mr  = TRUE -> Valid name      }
  71.     FDM_ERROR        =WM_USER+42;  { mp1 = USHORT Error message id }
  72.    {                                      mp2 = NULL   reserved         }
  73.    {                                      mr  = NULL -> Use default msg }
  74.  
  75.    {--------------------------------------------------------------------}
  76.    { Define the type that is a pointer to an array of pointers.         }
  77.    {     Hence: pointer to an array of Z string pointers.               }
  78.    {--------------------------------------------------------------------}
  79.  
  80. TYPE
  81.     PAPSZ=^APSZ;
  82.     APSZ=ARRAY[0..1] OF PChar;
  83.  
  84.    {--------------------------------------------------------------------}
  85.    { File Dialog application data structure.                            }
  86.    {--------------------------------------------------------------------}
  87. TYPE
  88.    PFILEDLG=^FILEDLG;
  89.    FILEDLG=RECORD
  90.                 cbSize:ULONG;     { Size of FILEDLG structure.         }
  91.                 fl:ULONG;         { FDS_ flags. Alter behavior of dlg. }
  92.                 ulUser:ULONG;     { User defined field.                }
  93.                 lReturn:LONG;     { Result code from dialog dismissal. }
  94.                 lSRC:LONG;        { System return code.                }
  95.                 pszTitle:PChar;   { String to display in title bar.    }
  96.                 pszOKButton:PChar;{ String to display in OK button.    }
  97.                 pfnDlgProc:POINTER;{ Entry point to custom dialog proc. }
  98.                 pszIType:PChar;   { Pointer to string containing       }
  99.                 papszITypeList:PAPSZ; { Pointer to table of pointers that
  100.                                         point to null terminated Type
  101.                                         strings. End of table is marked
  102.                                         by a NULL pointer.              }
  103.                 pszIDrive:PChar;  { Pointer to string containing       }
  104.                 papszIDriveList:PAPSZ; { Pointer to table of pointers that
  105.                                         point to null terminated Drive
  106.                                         strings. End of table is marked
  107.                                         by a NULL pointer.              }
  108.                 hMod:HMODULE;     { Custom File Dialog template.       }
  109.                 szFullFile:CSTRING[CCHMAXPATH-1]; { Initial or selected fully
  110.                                                     qualified path and file.}
  111.                 papszFQFilename:PAPSZ; { Pointer to table of pointers that
  112.                                          point to null terminated FQFname
  113.                                          strings. End of table is marked
  114.                                          by a NULL pointer.            }
  115.                 ulFQFCount:ULONG; { Number of files selected           }
  116.                 usDlgId:USHORT;   { Custom dialog id.                  }
  117.                 x:SHORT;          { X coordinate of the dialog         }
  118.                 y:SHORT;          { Y coordinate of the dialog         }
  119.                 sEAType:SHORT;    { Selected file's EA Type.           }
  120.        END;
  121.  
  122.  
  123.    {--------------------------------------------------------------------}
  124.    { File Dialog - dialog and control ids                               }
  125.    {--------------------------------------------------------------------}
  126. CONST
  127.       DID_FILE_DIALOG            =256;
  128.       DID_FILENAME_TXT           =257;
  129.       DID_FILENAME_ED            =258;
  130.       DID_DRIVE_TXT              =259;
  131.       DID_DRIVE_CB               =260;
  132.       DID_FILTER_TXT             =261;
  133.       DID_FILTER_CB              =262;
  134.       DID_DIRECTORY_TXT          =263;
  135.       DID_DIRECTORY_LB           =264;
  136.       DID_FILES_TXT              =265;
  137.       DID_FILES_LB               =266;
  138.       DID_HELP_PB                =267;
  139.       DID_APPLY_PB               =268;
  140.       DID_OK_PB                  =DID_OK;
  141.       DID_CANCEL_PB              =DID_CANCEL;
  142.  
  143.       IDS_FILE_ALL_FILES_SELECTOR     =1000;
  144.       IDS_FILE_BACK_CUR_PATH          =1001;
  145.       IDS_FILE_BACK_PREV_PATH         =1002;
  146.       IDS_FILE_BACK_SLASH             =1003;
  147.       IDS_FILE_BASE_FILTER            =1004;
  148.       IDS_FILE_BLANK                  =1005;
  149.       IDS_FILE_COLON                  =1006;
  150.       IDS_FILE_DOT                    =1007;
  151.       IDS_FILE_DRIVE_LETTERS          =1008;
  152.       IDS_FILE_FWD_CUR_PATH           =1009;
  153.       IDS_FILE_FWD_PREV_PATH          =1010;
  154.       IDS_FILE_FORWARD_SLASH          =1011;
  155.       IDS_FILE_PARENT_DIR             =1012;
  156.       IDS_FILE_Q_MARK                 =1013;
  157.       IDS_FILE_SPLAT                  =1014;
  158.       IDS_FILE_SPLAT_DOT              =1015;
  159.       IDS_FILE_SAVEAS_TITLE           =1016;
  160.       IDS_FILE_SAVEAS_FILTER_TXT      =1017;
  161.       IDS_FILE_SAVEAS_FILENM_TXT      =1018;
  162.       IDS_FILE_DUMMY_FILE_NAME        =1019;
  163.       IDS_FILE_DUMMY_FILE_EXT         =1020;
  164.       IDS_FILE_DUMMY_DRIVE            =1021;
  165.       IDS_FILE_DUMMY_ROOT_DIR         =1022;
  166.       IDS_FILE_PATH_PTR               =1023;
  167.       IDS_FILE_VOLUME_PREFIX          =1024;
  168.       IDS_FILE_VOLUME_SUFFIX          =1025;
  169.       IDS_FILE_PATH_PTR2              =1026;
  170.       IDS_FILE_INVALID_CHARS          =1027;
  171.  
  172.       IDS_FILE_BAD_DRIVE_NAME         =1100;
  173.       IDS_FILE_BAD_DRIVE_OR_PATH_NAME =1101;
  174.       IDS_FILE_BAD_FILE_NAME          =1102;
  175.       IDS_FILE_BAD_FQF                =1103;
  176.       IDS_FILE_BAD_NETWORK_NAME       =1104;
  177.       IDS_FILE_BAD_SUB_DIR_NAME       =1105;
  178.       IDS_FILE_DRIVE_NOT_AVAILABLE    =1106;
  179.       IDS_FILE_FQFNAME_TOO_LONG       =1107;
  180.       IDS_FILE_OPEN_DIALOG_NOTE       =1108;
  181.       IDS_FILE_PATH_TOO_LONG          =1109;
  182.       IDS_FILE_SAVEAS_DIALOG_NOTE     =1110;
  183.  
  184.       IDS_FILE_DRIVE_DISK_CHANGE      =1120;
  185.       IDS_FILE_DRIVE_NOT_READY        =1122;
  186.       IDS_FILE_DRIVE_LOCKED           =1123;
  187.       IDS_FILE_DRIVE_NO_SECTOR        =1124;
  188.       IDS_FILE_DRIVE_SOME_ERROR       =1125;
  189.       IDS_FILE_DRIVE_INVALID          =1126;
  190.       IDS_FILE_INSERT_DISK_NOTE       =1127;
  191.       IDS_FILE_OK_WHEN_READY          =1128;
  192.  
  193.    {********************************************************************}
  194.    {                                                                    }
  195.    {                     F O N T    D I A L O G                         }
  196.    {                                                                    }
  197.    {********************************************************************}
  198.  
  199.    {********************************************************************}
  200.    { Font Dialog Creation Structure                                     }
  201.    {********************************************************************}
  202.  
  203. TYPE
  204.     PFONTDLG=^FONTDLG;
  205.     FONTDLG=RECORD
  206.                  cbSize:ULONG;       { sizeof(FONTDLG)                 }
  207.                  hpsScreen:HPS;      { Screen presentation space       }
  208.                  hpsPrinter:HPS;     { Printer presentation space      }
  209.                  pszTitle:PChar;     { Application supplied title      }
  210.                  pszPreview:PChar;   { String to print in preview wndw }
  211.                  pszPtSizeList:PChar;{ Application provided size list  }
  212.                  pfnDlgProc:POINTER; { Dialog subclass procedure       }
  213.                  pszFamilyname:PChar;{ Family name of font             }
  214.                  fxPointSize:FIXED;  { Point size the user selected    }
  215.                  fl:ULONG;           { FNTS_* flags - dialog styles    }
  216.                  flFlags:ULONG;      { FNTF_* state flags              }
  217.                  flType:ULONG;       { Font type option bits           }
  218.                  flTypeMask:ULONG;   { Mask of which font types to use }
  219.                  flStyle:ULONG;      { The selected style bits         }
  220.                  flStyleMask:ULONG;  { Mask of which style bits to use }
  221.                  clrFore:LONG;       { Selected foreground color       }
  222.                  clrBack:LONG;       { Selected background color       }
  223.                  ulUser:ULONG;       { Blank field for application     }
  224.                  lReturn:LONG;       { Return Value of the Dialog      }
  225.                  lSRC:LONG;          { System return code.             }
  226.                  lEmHeight:LONG;     { Em height of the current font   }
  227.                  lXHeight:LONG;      { X height of the current font    }
  228.                  lExternalLeading:LONG;{ External Leading of font        }
  229.                  hMod:HMODULE;       { Module to load custom template  }
  230.                  fAttrs:FATTRS;     { Font attribute structure        }
  231.                  sNominalPointSize:SHORT; { Nominal Point Size of font      }
  232.                  usWeight:USHORT;    { The boldness of the font        }
  233.                  usWidth:USHORT;     { The width of the font           }
  234.                  x:SHORT;            { X coordinate of the dialog      }
  235.                  y:SHORT;            { Y coordinate of the dialog      }
  236.                  usDlgId:USHORT;     { ID of a custom dialog template  }
  237.                  usFamilyBufLen:USHORT; { Length of family buffer provided}
  238.                  usReserved:USHORT;  { reserved                        }
  239.          END;
  240.  
  241.    {********************************************************************}
  242.    { Font Dialog Style Flags                                            }
  243.    {********************************************************************}
  244. CONST
  245.     FNTS_CENTER              =$00000001; { Center in owner dialog}
  246.     FNTS_CUSTOM              =$00000002; { Use custom template   }
  247.     FNTS_OWNERDRAWPREVIEW    =$00000004; { Allow app to draw     }
  248.     FNTS_HELPBUTTON          =$00000008; { Display Help button   }
  249.     FNTS_APPLYBUTTON         =$00000010; { Display Apply button  }
  250.     FNTS_RESETBUTTON         =$00000020; { Display Reset button  }
  251.     FNTS_MODELESS            =$00000040; { Make dialog modeless  }
  252.     FNTS_INITFROMFATTRS      =$00000080; { Initialize from FATTRs}
  253.     FNTS_BITMAPONLY          =$00000100; { Only allow bitmap font}
  254.     FNTS_VECTORONLY          =$00000200; { Only allow vector font}
  255.     FNTS_FIXEDWIDTHONLY      =$00000400; { Only allow monospaced }
  256.     FNTS_PROPORTIONALONLY    =$00000800; { Only proportional font}
  257.     FNTS_NOSYNTHESIZEDFONTS  =$00001000; { Don't synthesize fonts}
  258.  
  259.    {********************************************************************}
  260.    { Font Dialog Flags                                                  }
  261.    {********************************************************************}
  262.     FNTF_NOVIEWSCREENFONTS     =1;
  263.     FNTF_NOVIEWPRINTERFONTS    =2;
  264.     FNTF_SCREENFONTSELECTED    =4;
  265.     FNTF_PRINTERFONTSELECTED   =8;
  266.  
  267.    {********************************************************************}
  268.    { Color code definitions                                             }
  269.    {********************************************************************}
  270.     CLRC_FOREGROUND            =1;
  271.     CLRC_BACKGROUND            =2;
  272.  
  273.    {********************************************************************}
  274.    { Filter List message string identifiers                             }
  275.    {********************************************************************}
  276.     FNTI_BITMAPFONT         =$0001;
  277.     FNTI_VECTORFONT         =$0002;
  278.     FNTI_FIXEDWIDTHFONT     =$0004;
  279.     FNTI_PROPORTIONALFONT   =$0008;
  280.     FNTI_SYNTHESIZED        =$0010;
  281.     FNTI_DEFAULTLIST        =$0020;
  282.     FNTI_FAMILYNAME         =$0100;
  283.     FNTI_STYLENAME          =$0200;
  284.     FNTI_POINTSIZE          =$0400;
  285.  
  286.    {********************************************************************}
  287.    { Error Return Codes from dialog (self defining)                     }
  288.    {********************************************************************}
  289.      FNTS_SUCCESSFUL                         = 0;
  290.      FNTS_ERR_INVALID_DIALOG                 = 3;
  291.      FNTS_ERR_ALLOC_SHARED_MEM               = 4;
  292.      FNTS_ERR_INVALID_PARM                   = 5;
  293.      FNTS_ERR_OUT_OF_MEMORY                  = 7;
  294.      FNTS_ERR_INVALID_VERSION                =10;
  295.      FNTS_ERR_DIALOG_LOAD_ERROR              =12;
  296.  
  297.    {********************************************************************}
  298.    { Font Dialog Messages                                               }
  299.    {********************************************************************}
  300.     FNTM_FACENAMECHANGED  =WM_USER+50; { mp1 = PSZ pszFacename   }
  301.     FNTM_POINTSIZECHANGED =WM_USER+51; { mp1 = PSZ pszPointSize, }
  302.    {                                           mp2 = FIXED fxPointSize }
  303.     FNTM_STYLECHANGED     =WM_USER+52; { mp1 = PSTYLECHANGE pstyc}
  304.     FNTM_COLORCHANGED     =WM_USER+53; { mp1 = LONG clr          }
  305.    {                                            mp2 = USHORT codeClr    }
  306.     FNTM_UPDATEPREVIEW    =WM_USER+54; { mp1 = HWND hWndPreview  }
  307.     FNTM_FILTERLIST       =WM_USER+55; { mp1 = PSZ pszFacename   }
  308.    {                                            mp2 = USHORT usStrStyle }
  309.    {                                            mr=TRUE(Add),FALSE(Dont)}
  310.  
  311.    {********************************************************************}
  312.    { Stylechange message parameter structure                            }
  313.    {********************************************************************}
  314. TYPE
  315.     PSTYLECHANGE=^STYLECHANGE;
  316.     STYLECHANGE=RECORD
  317.                      usWeight:USHORT;
  318.                      usWeightOld:USHORT;
  319.                      usWidth:USHORT;
  320.                      usWidthOld:USHORT;
  321.                      flType:ULONG;
  322.                      flTypeOld:ULONG;
  323.                      flTypeMask:ULONG;
  324.                      flTypeMaskOld:ULONG;
  325.                      flStyle:ULONG;
  326.                      flStyleOld:ULONG;
  327.                      flStyleMask:ULONG;
  328.                      flStyleMaskOld:ULONG;
  329.            END;
  330.  
  331.  
  332.    {********************************************************************}
  333.    { font dialog and control id's                                       }
  334.    {********************************************************************}
  335. CONST
  336.     DID_FONT_DIALOG         =300;
  337.     DID_NAME                =301;
  338.     DID_STYLE               =302;
  339.     DID_DISPLAY_FILTER      =303;
  340.     DID_PRINTER_FILTER      =304;
  341.     DID_SIZE                =305;
  342.     DID_SAMPLE              =306;
  343.     DID_OUTLINE             =307;
  344.     DID_UNDERSCORE          =308;
  345.     DID_STRIKEOUT           =309;
  346.     DID_HELP_BUTTON         =310;
  347.     DID_APPLY_BUTTON        =311;
  348.     DID_RESET_BUTTON        =312;
  349.     DID_OK_BUTTON           =DID_OK;
  350.     DID_CANCEL_BUTTON       =DID_CANCEL;
  351.     DID_NAME_PREFIX         =313;
  352.     DID_STYLE_PREFIX        =314;
  353.     DID_SIZE_PREFIX         =315;
  354.     DID_SAMPLE_GROUPBOX     =316;
  355.     DID_EMPHASIS_GROUPBOX   =317;
  356.     DID_FONT_ISO_SUPPORT    =318;
  357.     DID_FONT_ISO_UNTESTED   =319;
  358.  
  359.    {********************************************************************}
  360.    { Stringtable id's                                                   }
  361.    {********************************************************************}
  362.     IDS_FONT_SAMPLE           =350;
  363.     IDS_FONT_BLANK            =351;
  364.     IDS_FONT_KEY_0            =352;
  365.     IDS_FONT_KEY_9            =353;
  366.     IDS_FONT_KEY_SEP          =354;
  367.     IDS_FONT_DISP_ONLY        =355;
  368.     IDS_FONT_PRINTER_ONLY     =356;
  369.     IDS_FONT_COMBINED         =357;
  370.     IDS_FONT_WEIGHT1          =358;
  371.     IDS_FONT_WEIGHT2          =359;
  372.     IDS_FONT_WEIGHT3          =360;
  373.     IDS_FONT_WEIGHT4          =361;
  374.     IDS_FONT_WEIGHT5          =362;
  375.     IDS_FONT_WEIGHT6          =363;
  376.     IDS_FONT_WEIGHT7          =364;
  377.     IDS_FONT_WEIGHT8          =365;
  378.     IDS_FONT_WEIGHT9          =366;
  379.     IDS_FONT_WIDTH1           =367;
  380.     IDS_FONT_WIDTH2           =368;
  381.     IDS_FONT_WIDTH3           =369;
  382.     IDS_FONT_WIDTH4           =370;
  383.     IDS_FONT_WIDTH5           =371;
  384.     IDS_FONT_WIDTH6           =372;
  385.     IDS_FONT_WIDTH7           =373;
  386.     IDS_FONT_WIDTH8           =374;
  387.     IDS_FONT_WIDTH9           =375;
  388.     IDS_FONT_OPTION0          =376;
  389.     IDS_FONT_OPTION1          =377;
  390.     IDS_FONT_OPTION2          =378;
  391.     IDS_FONT_OPTION3          =379;
  392.     IDS_FONT_POINT_SIZE_LIST  =380;
  393.  
  394.    {********************************************************************}
  395.    {                                                                    }
  396.    {                          S P I N    B U T T O N                    }
  397.    {                                                                    }
  398.    {********************************************************************}
  399.  
  400.    {********************************************************************}
  401.    { SPINBUTTON Creation Flags                                          }
  402.    {********************************************************************}
  403.  
  404.    {********************************************************************}
  405.    { Character Acceptance                                               }
  406.    {********************************************************************}
  407. CONST
  408.     SPBS_ALLCHARACTERS =$00000000; { Default: All chars accepted }
  409.     SPBS_NUMERICONLY   =$00000001; { Only 0 - 9 accepted & VKeys }
  410.     SPBS_READONLY      =$00000002; { No chars allowed in entryfld}
  411.  
  412.    {********************************************************************}
  413.    { Type of Component                                                  }
  414.    {********************************************************************}
  415.     SPBS_MASTER        =$00000010;
  416.     SPBS_SERVANT       =$00000000; { Default: Servant            }
  417.  
  418.    {********************************************************************}
  419.    { Type of Justification                                              }
  420.    {********************************************************************}
  421.     SPBS_JUSTDEFAULT  =$00000000; { Default: Same as Left        }
  422.     SPBS_JUSTLEFT     =$00000008;
  423.     SPBS_JUSTRIGHT    =$00000004;
  424.     SPBS_JUSTCENTER   =$0000000C;
  425.  
  426.    {********************************************************************}
  427.    { Border or not                                                      }
  428.    {********************************************************************}
  429.     SPBS_NOBORDER     =$00000020; { Borderless SpinField         }
  430.    {                                       Default is to have a border. }
  431.  
  432.    {********************************************************************}
  433.    { Fast spin or not                                                   }
  434.    {********************************************************************}
  435.     SPBS_FASTSPIN     =$00000100; { Allow fast spinning.  Fast   }
  436.    {                                       spinning is performed by     }
  437.    {                                       skipping over numbers        }
  438.  
  439.    {********************************************************************}
  440.    { Pad numbers on front with 0's                                      }
  441.    {********************************************************************}
  442.     SPBS_PADWITHZEROS =$00000080; { Pad the number with zeroes   }
  443.  
  444.    {********************************************************************}
  445.    { SPINBUTTON Messages                                                }
  446.    {********************************************************************}
  447.  
  448.    {********************************************************************}
  449.    { Notification from Spinbutton to the application is sent in a       }
  450.    { WM_CONTROL message.                                                }
  451.    {********************************************************************}
  452.     SPBN_UPARROW       =$20A;     { up arrow button was pressed  }
  453.     SPBN_DOWNARROW     =$20B;     { down arrow button was pressed}
  454.     SPBN_ENDSPIN       =$20C;     { mouse button was released    }
  455.     SPBN_CHANGE        =$20D;     { spinfield text has changed   }
  456.     SPBN_SETFOCUS      =$20E;     { spinfield received focus     }
  457.     SPBN_KILLFOCUS     =$20F;     { spinfield lost focus         }
  458.  
  459.    {********************************************************************}
  460.    { Messages from application to Spinbutton                            }
  461.    {********************************************************************}
  462.     SPBM_OVERRIDESETLIMITS =$200; { Set spinbutton limits without}
  463.    {                                        resetting the current value }
  464.     SPBM_QUERYLIMITS       =$201; { Query limits set by          }
  465.    {                                        SPBM_SETLIMITS              }
  466.     SPBM_SETTEXTLIMIT      =$202; { Max entryfield characters    }
  467.     SPBM_SPINUP            =$203; { Tell entry field to spin up  }
  468.     SPBM_SPINDOWN          =$204; { Tell entry field to spin down}
  469.     SPBM_QUERYVALUE        =$205; { Tell entry field to send     }
  470.    {                                        current value               }
  471.  
  472.    {********************************************************************}
  473.    { Query Flags                                                        }
  474.    {********************************************************************}
  475.     SPBQ_UPDATEIFVALID   =0;      { Default                      }
  476.     SPBQ_ALWAYSUPDATE    =1;
  477.     SPBQ_DONOTUPDATE     =3;
  478.  
  479.    {********************************************************************}
  480.    { Return value for Empty Field.                                      }
  481.    {    If ptr too long, variable sent in query msg                     }
  482.    {********************************************************************}
  483.     SPBM_SETARRAY          =$206; { Change the data to spin      }
  484.     SPBM_SETLIMITS         =$207; { Change the numeric Limits    }
  485.     SPBM_SETCURRENTVALUE   =$208; { Change the current value     }
  486.     SPBM_SETMASTER         =$209; { Tell entryfield who master is}
  487.  
  488.    {********************************************************************}
  489.    {                                                                    }
  490.    {                D I R E C T   M A N I P U L A T I O N               }
  491.    {                                                                    }
  492.    {********************************************************************}
  493.  
  494.     PMERR_NOT_DRAGGING     =$1f00;
  495.     PMERR_ALREADY_DRAGGING =$1f01;
  496.  
  497.     MSGF_DRAG              =$0010;   { message filter identifier }
  498.  
  499.     WM_DRAGFIRST           =$0310;
  500.     WM_DRAGLAST            =$032f;
  501.  
  502.     DM_DROP                =$032f;
  503.     DM_DRAGOVER            =$032e;
  504.     DM_DRAGLEAVE           =$032d;
  505.     DM_DROPHELP            =$032c;
  506.     DM_ENDCONVERSATION     =$032b;
  507.     DM_PRINT               =$032a;
  508.     DM_RENDER              =$0329;
  509.     DM_RENDERCOMPLETE      =$0328;
  510.     DM_RENDERPREPARE       =$0327;
  511.     DM_DRAGFILECOMPLETE    =$0326;
  512.     DM_EMPHASIZETARGET     =$0325;
  513.     DM_DRAGERROR           =$0324;
  514.     DM_FILERENDERED        =$0323;
  515.     DM_RENDERFILE          =$0322;
  516.     DM_DRAGOVERNOTIFY      =$0321;
  517.     DM_PRINTOBJECT         =$0320;
  518.     DM_DISCARDOBJECT       =$031f;
  519.  
  520.     DRT_ASM               ='Assembler Code';  { drag type constants  }
  521.     DRT_BASIC             ='BASIC Code';
  522.     DRT_BINDATA           ='Binary Data';
  523.     DRT_BITMAP            ='Bitmap';
  524.     DRT_C                 ='C Code';
  525.     DRT_COBOL             ='COBOL Code';
  526.     DRT_DLL               ='Dynamic Link Library';
  527.     DRT_DOSCMD            ='DOS Command File';
  528.     DRT_EXE               ='Executable';
  529.     DRT_FORTRAN           ='FORTRAN Code';
  530.     DRT_ICON              ='Icon';
  531.     DRT_LIB               ='Library';
  532.     DRT_METAFILE          ='Metafile';
  533.     DRT_OS2CMD            ='OS/2 Command File';
  534.     DRT_PASCAL            ='Pascal Code';
  535.     DRT_RESOURCE          ='Resource File';
  536.     DRT_TEXT              ='Plain Text';
  537.     DRT_UNKNOWN           ='Unknown';
  538.  
  539.     DOR_NODROP             =$0000;  { DM_DRAGOVER response codes }
  540.     DOR_DROP               =$0001;
  541.     DOR_NODROPOP           =$0002;
  542.     DOR_NEVERDROP          =$0003;
  543.  
  544.     DO_COPYABLE            =$0001;  { supported operation flags  }
  545.     DO_MOVEABLE            =$0002;
  546.     DO_LINKABLE            =$0004;
  547.  
  548.     DC_OPEN                =$0001;  { source control flags       }
  549.     DC_REF                 =$0002;
  550.     DC_GROUP               =$0004;
  551.     DC_CONTAINER           =$0008;
  552.     DC_PREPARE             =$0010;
  553.     DC_REMOVEABLEMEDIA     =$0020;
  554.  
  555.     DO_DEFAULT             =$BFFE;  { Default operation          }
  556.     DO_UNKNOWN             =$BFFF;  { Unknown operation          }
  557.     DO_COPY                =$0010;
  558.     DO_MOVE                =$0020;
  559.     DO_LINK                =$0018;
  560.     DO_CREATE              =$0040;
  561.  
  562.     DMFL_TARGETSUCCESSFUL  =$0001;  { transfer reply flags       }
  563.     DMFL_TARGETFAIL        =$0002;
  564.     DMFL_NATIVERENDER      =$0004;
  565.     DMFL_RENDERRETRY       =$0008;
  566.     DMFL_RENDEROK          =$0010;
  567.     DMFL_RENDERFAIL        =$0020;
  568.  
  569.     DRG_ICON          =$00000001;   { drag image manipulation    }
  570.     DRG_BITMAP        =$00000002;   {   flags                    }
  571.     DRG_POLYGON       =$00000004;
  572.     DRG_STRETCH       =$00000008;
  573.     DRG_TRANSPARENT   =$00000010;
  574.     DRG_CLOSED        =$00000020;
  575.  
  576.     DME_IGNOREABORT       =1;       { DM_DRAGERROR return values }
  577.     DME_IGNORECONTINUE    =2;
  578.     DME_REPLACE           =3;
  579.     DME_RETRY             =4;
  580.  
  581.     DF_MOVE                =$0001;   { DM_DRAGFILECOMPLETE flags  }
  582.     DF_SOURCE              =$0002;
  583.     DF_SUCCESSFUL          =$0004;
  584.  
  585.     DRR_SOURCE           =1;
  586.     DRR_TARGET           =2;
  587.     DRR_ABORT            =3;
  588.  
  589.     DFF_MOVE              =1;       { DM_DRAGERROR operation IDs }
  590.     DFF_COPY              =2;
  591.     DFF_DELETE            =3;
  592.  
  593. TYPE
  594.    HSTR=LHANDLE;
  595.  
  596.    PDRAGITEM=^DRAGITEM;
  597.    DRAGITEM=RECORD
  598.                  hwndItem:HWND;          { conversation partner          }
  599.                  ulItemID:ULONG;         { identifies item being dragged }
  600.                  hstrType:HSTR;          { type of item                  }
  601.                  hstrRMF:HSTR;           { rendering mechanism and format}
  602.                  hstrContainerName:HSTR; { name of source container      }
  603.                  hstrSourceName:HSTR;    { name of item at source        }
  604.                  hstrTargetName:HSTR;    { suggested name of item at dest}
  605.                  cxOffset:SHORT;         { x offset of the origin of the }
  606.                  cyOffset:SHORT;         { y offset of the origin of the }
  607.                  fsControl:USHORT;       { source item control flags     }
  608.                  fsSupportedOps:USHORT;  { ops supported by source       }
  609.             END;
  610.  
  611.    PDRAGINFO=^DRAGINFO;
  612.    DRAGINFO=RECORD
  613.                  cbDraginfo:ULONG;       { Size of DRAGINFO and DRAGITEMs}
  614.                  cbDragitem:USHORT;      { size of DRAGITEM              }
  615.                  usOperation:USHORT;     { current drag operation        }
  616.                  hwndSource:HWND;        { window handle of source       }
  617.                  xDrop:SHORT;            { x coordinate of drop position }
  618.                  yDrop:SHORT;            { y coordinate of drop position }
  619.                  cditem:USHORT;          { count of DRAGITEMs            }
  620.                  usReserved:USHORT;      { reserved for future use       }
  621.             END;
  622.  
  623.    PDRAGIMAGE=^DRAGIMAGE;
  624.    DRAGIMAGE=RECORD
  625.                  cb:USHORT;              { size control block            }
  626.                  cptl:USHORT;            { count of pts, if DRG_POLYGON  }
  627.                  hImage:LHANDLE;         { image handle passed to DrgDrag}
  628.                  sizlStretch:SIZEL;      { size to strecth ico or bmp to }
  629.                  fl:ULONG;               { flags passed to DrgDrag       }
  630.                  cxOffset:SHORT;         { x offset of the origin of the }
  631.                  cyOffset:SHORT;         { y offset of the origin of the }
  632.              END;
  633.  
  634.    PDRAGTRANSFER=^DRAGTRANSFER;
  635.    DRAGTRANSFER=RECORD
  636.                  cb:ULONG;               { size of control block         }
  637.                  hwndClient:HWND;        { handle of target              }
  638.                  pditem:PDRAGITEM;       { DRAGITEM being transferred    }
  639.                  hstrSelectedRMF:HSTR;   { rendering mech & fmt of choice}
  640.                  hstrRenderToName:HSTR;  { name source will use          }
  641.                  ulTargetInfo:ULONG;     { reserved for target's use     }
  642.                  usOperation:USHORT;     { operation being performed     }
  643.                  fsReply:USHORT;         { reply flags                   }
  644.                END;
  645.  
  646.    PRENDERFILE=^RENDERFILE;
  647.    RENDERFILE=RECORD
  648.                  hwndDragFiles:HWND;     { conversation window           }
  649.                  hstrSource:HSTR;        { handle to source file name    }
  650.                  hstrTarget:HSTR;        { handle to target file name    }
  651.                  fMove:USHORT;           { TRUE - move, FALSE - copy     }
  652.                  usRsvd:USHORT;          { reserved                      }
  653.               END;
  654.  
  655.    {********************************************************************}
  656.    {                                                                    }
  657.    {                         C O N T A I N E R                          }
  658.    {                                                                    }
  659.    {********************************************************************}
  660.  
  661.    {********************************************************************}
  662.    { Error constants                                                    }
  663.    {********************************************************************}
  664. CONST
  665.     PMERR_NOFILTERED_ITEMS          =$1f02;
  666.     PMERR_COMPARISON_FAILED         =$1f03;
  667.     PMERR_RECORD_CURRENTLY_INSERTED =$1f04;
  668.     PMERR_FI_CURRENTLY_INSERTED     =$1f05;
  669.  
  670.    {********************************************************************}
  671.    { Container control styles.                                          }
  672.    {********************************************************************}
  673.     CCS_EXTENDSEL             =$00000001;
  674.     CCS_MULTIPLESEL           =$00000002;
  675.     CCS_SINGLESEL             =$00000004;
  676.     CCS_AUTOPOSITION          =$00000008;
  677.     CCS_VERIFYPOINTERS        =$00000010;
  678.     CCS_READONLY              =$00000020;
  679.     CCS_MINIRECORDCORE        =$00000040;
  680.  
  681.    {********************************************************************}
  682.    { view identifiers           (flWindowAttr)                          }
  683.    {********************************************************************}
  684.     CV_TEXT                  =$00000001;  { text view            }
  685.     CV_NAME                  =$00000002;  { name view            }
  686.     CV_ICON                  =$00000004;  { icon view            }
  687.     CV_DETAIL                =$00000008;  { detail view          }
  688.     CV_FLOW                  =$00000010;  { flow items           }
  689.     CV_MINI                  =$00000020;  { use mini icon        }
  690.     CV_TREE                  =$00000040;  { tree view            }
  691.  
  692.    {********************************************************************}
  693.    { Container Attributes        (flWindowAttr)                         }
  694.    {********************************************************************}
  695.     CA_CONTAINERTITLE        =$00000200;
  696.     CA_TITLESEPARATOR        =$00000400;
  697.     CA_TITLELEFT             =$00000800;
  698.     CA_TITLERIGHT            =$00001000;
  699.     CA_TITLECENTER           =$00002000;
  700.     CA_OWNERDRAW             =$00004000;
  701.     CA_DETAILSVIEWTITLES     =$00008000;
  702.     CA_ORDEREDTARGETEMPH     =$00010000;
  703.     CA_DRAWBITMAP            =$00020000;
  704.     CA_DRAWICON              =$00040000;
  705.     CA_TITLEREADONLY         =$00080000;
  706.     CA_OWNERPAINTBACKGROUND  =$00100000;
  707.     CA_MIXEDTARGETEMPH       =$00200000;
  708.     CA_TREELINE              =$00400000;
  709.  
  710.    {********************************************************************}
  711.    { child window IDs                                                   }
  712.    {********************************************************************}
  713.     CID_LEFTCOLTITLEWND     =$7FF0;  { column title (left)       }
  714.     CID_RIGHTCOLTITLEWND    =$7FF1;  { right column title        }
  715.     CID_BLANKBOX            =$7FF2;  { blank box at bottom right }
  716.     CID_HSCROLL             =$7FF3;  { horizontal scroll bar     }
  717.     CID_RIGHTHSCROLL        =$7FF4;  { right horz scroll bar     }
  718.     CID_CNRTITLEWND         =$7FF5;  { Container title window    }
  719.     CID_LEFTDVWND           =$7FF7;  { Left Details View window  }
  720.     CID_RIGHTDVWND          =$7FF8;  { Right Details View window }
  721.     CID_VSCROLL             =$7FF9;  { vertical scroll bar       }
  722.     CID_MLE                 =$7FFA;  { MLE window for direct edit}
  723.  
  724.    {********************************************************************}
  725.    { Bitmap descriptor array element.                                   }
  726.    {********************************************************************}
  727. TYPE
  728.    PTREEITEMDESC=^TREEITEMDESC;
  729.    TREEITEMDESC=RECORD
  730.                      hbmExpanded:HBITMAP;
  731.                      hbmCollapsed:HBITMAP;
  732.                      hptrExpanded:HPOINTER;
  733.                      hptrCollapsed:HPOINTER;
  734.                 END;
  735.  
  736.    {********************************************************************}
  737.    { Field Info data structure, attribute and data types, CV_DETAIL     }
  738.    {********************************************************************}
  739. TYPE
  740.    PFIELDINFO=^FIELDINFO;
  741.    FIELDINFO=RECORD
  742.                    cb:ULONG;          { size of FIELDINFO struct       }
  743.                    flData:ULONG;      { attributes of field's data     }
  744.                    flTitle:ULONG;     { attributes of field's title    }
  745.                    pTitleData:POINTER;{ title data (default is string) }
  746.                                       { If CFT_BITMAP, must be HBITMAP }
  747.                    offStruct:ULONG;   { offset from RECORDCORE to data }
  748.                    pUserData:POINTER; { pointer to user data           }
  749.                    pNextFieldInfo:PFIELDINFO; { pointer to next linked }
  750.                    cxWidth:ULONG;     { width of field in pels         }
  751.              END;
  752.  
  753.    {********************************************************************}
  754.    { RECORDCORE data structure , attribute values                       }
  755.    {********************************************************************}
  756. TYPE
  757.    PRECORDCORE=^RECORDCORE;
  758.    RECORDCORE=RECORD
  759.                     cb:ULONG;
  760.                     flRecordAttr:ULONG;{ record attributes             }
  761.                     ptlIcon:POINTL;    { Position of CV_ICON item      }
  762.                     preccNextRecord:PRECORDCORE; { ptr to next record  }
  763.                     pszIcon:PChar;     { Text for CV_ICON view         }
  764.                     hptrIcon:HPOINTER; { Icon to display for ~CV_MINI  }
  765.                     hptrMiniIcon:HPOINTER; { Icon to display for CV_MINI   }
  766.                     hbmBitmap:HBITMAP; { Bitmap to display for ~CV_MINI}
  767.                     hbmMiniBitmap:HBITMAP; { Bitmap to display for CV_MINI }
  768.                     pTreeItemDesc:PTREEITEMDESC; { Icons for the tree view       }
  769.                     pszText:PChar;     { Text for CV_TEXT view         }
  770.                     pszName:PChar;     { Text for CV_NAME view         }
  771.                     pszTree:PChar;     { Text for CV_TREE view         }
  772.               END;
  773.  
  774.    {********************************************************************}
  775.    { MINIRECORDCORE data structure, attribute values                    }
  776.    {********************************************************************}
  777. TYPE
  778.     PMINIRECORDCORE=^MINIRECORDCORE;
  779.     MINIRECORDCORE=RECORD
  780.                         cb:ULONG;
  781.                         flRecordAttr:ULONG; { record attributes             }
  782.                         ptlIcon:POINTL;     { Position of CV_ICON item      }
  783.                         preccNextRecord:PmINIRECORDCORE; {ptr to next record }
  784.                         pszIcon:PChar;      { Text for CV_ICON view         }
  785.                         hptrIcon:HPOINTER;  { Icon to display for ~CV_MINI  }
  786.                    END;
  787.  
  788.    {********************************************************************}
  789.    { CNRINFO data structure, describes the container control.           }
  790.    {********************************************************************}
  791. TYPE
  792.    PCNRINFO=^CNRINFO;
  793.    CNRINFO=RECORD
  794.                  cb:ULONG;             { size of CNRINFO struct        }
  795.                  pSortRecord:POINTER;  { ptr to sort function          }
  796.                  pFieldInfoLast:PFIELDINFO; { pointer to last column in}
  797.                                        {   left pane of a split window.}
  798.                  pFieldInfoObject:PFIELDINFO; { Pointer to a column to
  799.                                                 represent an object.
  800.                                                 This is the column which
  801.                                                 will receive
  802.                                                 IN-USE emphasis.       }
  803.                  pszCnrTitle:PChar;    { text for container title. One
  804.                                            string separated by line
  805.                                            separators for multi-lines  }
  806.                  flWindowAttr:ULONG;   { container attrs - CV_*, CA_*  }
  807.                  ptlOrigin:POINTL;     { lower-left origin in virtual
  808.                                          coordinates. CV_ICON view   }
  809.                  cDelta:ULONG;         { Application defined threshold
  810.                                          or number of records from
  811.                                          either end of the list.     }
  812.                  cRecords:ULONG;       { number of records in container}
  813.                  slBitmapOrIcon:SIZEL; { size of bitmap in pels        }
  814.                  slTreeBitmapOrIcon:SIZEL;  { size of tree bitmaps in pels  }
  815.                  hbmExpanded:HBITMAP;  { bitmap  for tree node         }
  816.                  hbmCollapsed:HBITMAP; { bitmap  for tree node         }
  817.                  hptrExpanded:HPOINTER;{ icon    for tree node         }
  818.                  hptrCollapsed:HPOINTER;{ icon    for tree node        }
  819.                  cyLineSpacing:LONG;   { space between two rows        }
  820.                  cxTreeIndent:LONG;    { indent for children           }
  821.                  cxTreeLine:LONG;      { thickness of the Tree Line    }
  822.                  cFields:ULONG;        { number of fields  in container}
  823.                  xVertSplitbar:LONG;   { position relative to the
  824.                                          container (CV_DETAIL); if
  825.                                          =$FFFF then unsplit         }
  826.         END;
  827.  
  828.    PCDATE=^CDATE;
  829.    CDATE=RECORD
  830.                day:UCHAR;                  { current day               }
  831.                month:UCHAR;                { current month             }
  832.                year:USHORT;                { current year              }
  833.          END;
  834.  
  835.    PCTIME=^CTIME;
  836.    CTIME=RECORD
  837.                hours:UCHAR;                { current hour              }
  838.                minutes:UCHAR;              { current minute            }
  839.                seconds:UCHAR;              { current second            }
  840.                ucReserved:UCHAR;           { reserved                  }
  841.          END;
  842.  
  843.    {********************************************************************}
  844.    { attribute and type values for flData and flTitle members of        }
  845.    { FIELDINFO, CFA_ (attributes), CFT_ (types)                         }
  846.    {********************************************************************}
  847. CONST
  848.     CFA_LEFT            =$00000001; { left align text            }
  849.     CFA_RIGHT           =$00000002; { right align text           }
  850.     CFA_CENTER          =$00000004; { center text                }
  851.     CFA_TOP             =$00000008; { top-align text             }
  852.     CFA_VCENTER         =$00000010; { vertically center text     }
  853.     CFA_BOTTOM          =$00000020; { bottom-align text          }
  854.     CFA_INVISIBLE       =$00000040; { Specify invisible column.  }
  855.     CFA_BITMAPORICON    =$00000100; { field title is bitmap      }
  856.     CFA_SEPARATOR       =$00000200; { vert sep, right of fld     }
  857.     CFA_HORZSEPARATOR   =$00000400; { horz sep, bottom of fld    }
  858.  
  859.     CFA_STRING          =$00000800; { string of characters       }
  860.     CFA_OWNER           =$00001000; { ownerdraw field            }
  861.     CFA_DATE            =$00002000; { date structure             }
  862.     CFA_TIME            =$00004000; { time structure             }
  863.     CFA_FIREADONLY      =$00008000; { Column is read-only.       }
  864.     CFA_FITITLEREADONLY =$00010000; { Column Title is read-only  }
  865.     CFA_ULONG           =$00020000; { Column is number format    }
  866.  
  867.    {********************************************************************}
  868.    { attribute values for flRecordAttr member of RECORDCORE             }
  869.    {********************************************************************}
  870.     CRA_SELECTED        =$00000001; { record is selected         }
  871.     CRA_TARGET          =$00000002; { record has target emphasis }
  872.     CRA_CURSORED        =$00000004; { cursor is on the record    }
  873.     CRA_INUSE           =$00000008; { record has in-use emphasis }
  874.     CRA_FILTERED        =$00000010; { record has been filtered   }
  875.     CRA_DROPONABLE      =$00000020; { record can be dropped on   }
  876.     CRA_RECORDREADONLY  =$00000040; { record is read-only        }
  877.     CRA_EXPANDED        =$00000080; { record is expanded         }
  878.     CRA_COLLAPSED       =$00000100; { record is collapsed        }
  879.  
  880.    {********************************************************************}
  881.    { Container messages                                                 }
  882.    {********************************************************************}
  883.     CM_ALLOCDETAILFIELDINFO       =$0330;
  884.     CM_ALLOCRECORD                =$0331;
  885.     CM_ARRANGE                    =$0332;
  886.     CM_ERASERECORD                =$0333;
  887.     CM_FILTER                     =$0334;
  888.     CM_FREEDETAILFIELDINFO        =$0335;
  889.     CM_FREERECORD                 =$0336;
  890.     CM_HORZSCROLLSPLITWINDOW      =$0337;
  891.     CM_INSERTDETAILFIELDINFO      =$0338;
  892.     CM_INSERTRECORD               =$0339;
  893.     CM_INVALIDATEDETAILFIELDINFO  =$033a;
  894.     CM_INVALIDATERECORD           =$033b;
  895.     CM_PAINTBACKGROUND            =$033c;
  896.     CM_QUERYCNRINFO               =$033d;
  897.     CM_QUERYDETAILFIELDINFO       =$033e;
  898.     CM_QUERYDRAGIMAGE             =$033f;
  899.     CM_QUERYRECORD                =$0340;
  900.     CM_QUERYRECORDEMPHASIS        =$0341;
  901.     CM_QUERYRECORDFROMRECT        =$0342;
  902.     CM_QUERYRECORDRECT            =$0343;
  903.     CM_QUERYVIEWPORTRECT          =$0344;
  904.     CM_REMOVEDETAILFIELDINFO      =$0345;
  905.     CM_REMOVERECORD               =$0346;
  906.     CM_SCROLLWINDOW               =$0347;
  907.     CM_SEARCHSTRING               =$0348;
  908.     CM_SETCNRINFO                 =$0349;
  909.     CM_SETRECORDEMPHASIS          =$034a;
  910.     CM_SORTRECORD                 =$034b;
  911.     CM_OPENEDIT                   =$034c;
  912.     CM_CLOSEEDIT                  =$034d;
  913.     CM_COLLAPSETREE               =$034e;
  914.     CM_EXPANDTREE                 =$034f;
  915.     CM_QUERYRECORDINFO            =$0350;
  916.  
  917.    {********************************************************************}
  918.    { Container notifications                                            }
  919.    {********************************************************************}
  920.     CN_DRAGAFTER                 =101;
  921.     CN_DRAGLEAVE                 =102;
  922.     CN_DRAGOVER                  =103;
  923.     CN_DROP                      =104;
  924.     CN_DROPHELP                  =105;
  925.     CN_ENTER                     =106;
  926.     CN_INITDRAG                  =107;
  927.     CN_EMPHASIS                  =108;
  928.     CN_KILLFOCUS                 =109;
  929.     CN_SCROLL                    =110;
  930.     CN_QUERYDELTA                =111;
  931.     CN_SETFOCUS                  =112;
  932.     CN_REALLOCPSZ                =113;
  933.     CN_BEGINEDIT                 =114;
  934.     CN_ENDEDIT                   =115;
  935.     CN_COLLAPSETREE              =116;
  936.     CN_EXPANDTREE                =117;
  937.     CN_HELP                      =118;
  938.     CN_CONTEXTMENU               =119;
  939.  
  940.    {********************************************************************}
  941.    {   Data Structures for Message Parameters                           }
  942.    {********************************************************************}
  943.  
  944.    {********************************************************************}
  945.    { Container Direct Manipulation structures                           }
  946.    {********************************************************************}
  947. TYPE
  948.    PCNDRAGINIT=^CNRDRAGINIT;
  949.    CNRDRAGINIT=RECORD
  950.                     hwndCnr:HWND;          { Container window handle   }
  951.                     pRecord:PRECORDCORE;   { record under mouse ptr    }
  952.                     x:LONG;                { x coordinate of mouse ptr }
  953.                     y:LONG;                { y coordinate of mouse ptr }
  954.                     cx:LONG;               { x offset from record      }
  955.                     cy:LONG;               { y offset from record      }
  956.                END;
  957.  
  958.    {********************************************************************}
  959.    { Data structure for CM_INSERTDETAILFIELDINFO                        }
  960.    { This structure is used by the application to specify the position  }
  961.    { of the FieldInfo structures they are inserting.                    }
  962.    {********************************************************************}
  963. TYPE
  964.    PFIELDINFOINSERT=^FIELDINFOINSERT;
  965.    FIELDINFOINSERT=RECORD
  966.                         cb:ULONG;      { Size of structure.             }
  967.                         pFieldInfoOrder:PFIELDINFO; { Specifies the order of the
  968.                                                       FieldInfo structures. }
  969.                         fInvalidateFieldInfo:ULONG;{ Invalidate on Insert. }
  970.                         cFieldInfoInsert:ULONG;    { The number of FieldInfo
  971.                                                       structures to insert. }
  972.                    END;
  973.  
  974.    {********************************************************************}
  975.    { Data structure for CM_INSERTRECORD                                 }
  976.    {********************************************************************}
  977. TYPE
  978.    PRECORDINSERT=^RECORDINSERT;
  979.    RECORDINSERT=RECORD
  980.                      cb:ULONG;
  981.                      pRecordOrder:PRECORDCORE;
  982.                      pRecordParent:PRECORDCORE;
  983.                      fInvalidateRecord:ULONG;
  984.                      zOrder:ULONG;
  985.                      cRecordsInsert:ULONG;
  986.                 END;
  987.  
  988.    {********************************************************************}
  989.    { Data structure for CM_QUERYRECORDFROMRECT                          }
  990.    {********************************************************************}
  991. TYPE
  992.    PQUERYRECFROMRECT=^QUERYRECFROMRECT;
  993.    QUERYRECFROMRECT=RECORD
  994.                          cb:ULONG;
  995.                          rect:RECTL;
  996.                          fsSearch:ULONG;
  997.                     END;
  998.  
  999.    {********************************************************************}
  1000.    { Data structure for CM_QUERYRECORDRECT                              }
  1001.    {********************************************************************}
  1002. TYPE
  1003.    PQUERYRECODRECT=^QUERYRECORDRECT;
  1004.    QUERYRECORDRECT=RECORD
  1005.                          cb:ULONG;
  1006.                          pRecord:PRECORDCORE;
  1007.                          fRightSplitWindow:ULONG;
  1008.                          fsExtent:ULONG;
  1009.                    END;
  1010.  
  1011.    {********************************************************************}
  1012.    { Data structure for CM_SEARCHSTRING                                 }
  1013.    {********************************************************************}
  1014. TYPE
  1015.    PSEARCHSTRRING=^SEARCHSTRING;
  1016.    SEARCHSTRING=RECORD
  1017.                      cb:ULONG;
  1018.                      pszSearch:PChar;
  1019.                      fsPrefix:ULONG;
  1020.                      fsCaseSensitive:ULONG;
  1021.                      usView:ULONG;
  1022.                 END;
  1023.  
  1024.    {*****************************************************************}
  1025.    { Data Structure for CN_DRAGLEAVE,CN_DRAGOVER,CN_DROP,CN_DROPHELP }
  1026.    {*****************************************************************}
  1027. TYPE
  1028.     PCNRDRAGINFO=^CNRDRAGINFO;
  1029.     CNRDRAGINFO=RECORD
  1030.                       pDragInfo:PDRAGINFO;
  1031.                       pRecord:PRECORDCORE;
  1032.                 END;
  1033.  
  1034.    {********************************************************************}
  1035.    { Data structure for CN_EMPHASIS                                     }
  1036.    {********************************************************************}
  1037. TYPE
  1038.    PNOTIFYRECORDEMPHASIS=^NOTIFYRECORDEMPHASIS;
  1039.    NOTIFYRECORDEMPHASIS=RECORD
  1040.                              hwndCnr:HWND;
  1041.                              pRecord:PRECORDCORE;
  1042.                              fEmphasisMask:ULONG;
  1043.                         END;
  1044.  
  1045.    {********************************************************************}
  1046.    { Data structure for CN_ENTER                                        }
  1047.    {********************************************************************}
  1048. TYPE
  1049.    PNOTIFYRECORDENTER=^NOTIFYRECORDENTER;
  1050.    NOTIFYRECORDENTER=RECORD
  1051.                            hwndCnr:HWND;
  1052.                            fKey:ULONG;
  1053.                            pRecord:PRECORDCORE;
  1054.                      END;
  1055.  
  1056.    {********************************************************************}
  1057.    { Data structure for CN_QUERYDELTA                                   }
  1058.    {********************************************************************}
  1059. TYPE
  1060.    PNOTIFYDELTA=^NOTIFYDELTA;
  1061.    NOTIFYDELTA=RECORD
  1062.                      hwndCnr:HWND;
  1063.                      fDelta:ULONG;
  1064.                END;
  1065.  
  1066.    {********************************************************************}
  1067.    { Data structure for CN_SCROLL                                       }
  1068.    {********************************************************************}
  1069. TYPE
  1070.    PNOTIFYSCROLL=^NOTIFYSCROLL;
  1071.    NOTIFYSCROLL=RECORD
  1072.                       hwndCnr:HWND;
  1073.                       lScrollInc:LONG;
  1074.                       fScroll:ULONG;
  1075.                 END;
  1076.  
  1077.    {********************************************************************}
  1078.    { Data structure for CN_REALLOCPSZ                                   }
  1079.    {********************************************************************}
  1080. TYPE
  1081.    PCNREDITDATA=^CNREDITDATA;
  1082.    CNREDITDATA=RECORD
  1083.                      cb:ULONG;
  1084.                      hwndCnr:HWND;
  1085.                      pRecord:PRECORDCORE;
  1086.                      pFieldInfo:PFIELDINFO;
  1087.                      ppszText:^PChar;          { address of PSZ        }
  1088.                      cbText:ULONG;             { size of the new text  }
  1089.                      id:ULONG;
  1090.                END;
  1091.  
  1092.    {********************************************************************}
  1093.    { Data structure for CM_PAINTBACKGROUND                              }
  1094.    {********************************************************************}
  1095. TYPE
  1096.    POWNERBACKGROUND=^OWNERBACKGROUND;
  1097.    OWNERBACKGROUND=RECORD
  1098.                          hwnd:HWND;
  1099.                          hps:HPS;
  1100.                          rclBackground:RECTL;
  1101.                          idWindow:LONG;
  1102.                    END;
  1103.  
  1104.    {********************************************************************}
  1105.    { Data structure used as part of WM_DRAWITEM                         }
  1106.    {********************************************************************}
  1107. TYPE
  1108.    PCNRDRAWITEMINFO=^CNRDRAWITEMINFO;
  1109.    CNRDRAWITEMINFO=RECORD
  1110.                         pRecord:PRECORDCORE;
  1111.                         pFieldInfo:PFIELDINFO;
  1112.                    END;
  1113.  
  1114.    {********************************************************************}
  1115.    { Message parameter flags                                            }
  1116.    {********************************************************************}
  1117. CONST
  1118.     CMA_TOP              =$0001;       { Place at top of zorder   }
  1119.     CMA_BOTTOM           =$0002;      { Place at bottom of zorder}
  1120.     CMA_LEFT             =$0004;
  1121.     CMA_RIGHT            =$0008;
  1122.  
  1123.     CMA_FIRST            =$0010;      { Add record as first      }
  1124.     CMA_LAST             =$0020;
  1125.     CMA_END              =$0040;      { Add record to end of list}
  1126.     CMA_PREV             =$0080;
  1127.     CMA_NEXT             =$0100;
  1128.  
  1129.     CMA_HORIZONTAL       =$0200;
  1130.     CMA_VERTICAL         =$0400;
  1131.     CMA_ICON             =$0800;
  1132.     CMA_TEXT             =$1000;
  1133.     CMA_PARTIAL          =$2000;
  1134.     CMA_COMPLETE         =$4000;
  1135.  
  1136.     CMA_PARENT           =$0001;
  1137.     CMA_FIRSTCHILD       =$0002;
  1138.     CMA_LASTCHILD        =$0004;
  1139.  
  1140.     CMA_CNRTITLE         =$0001;      { Container title          }
  1141.     CMA_DELTA            =$0002;      { Application defined      }
  1142.     CMA_FLWINDOWATTR     =$0004;      { Container attributes     }
  1143.     CMA_LINESPACING      =$0008;
  1144.     CMA_PFIELDINFOLAST   =$0010;      { Ptr to last column in    }
  1145.  
  1146.     CMA_PSORTRECORD      =$0020;      { Pointer to sort function }
  1147.     CMA_PTLORIGIN        =$0040;      { Lower left origin        }
  1148.     CMA_SLBITMAPORICON   =$0080;      { Size  of bitmap          }
  1149.     CMA_XVERTSPLITBAR    =$0100;      { Splitbar position        }
  1150.     CMA_PFIELDINFOOBJECT =$0200;      { Pointer to IN-USE        }
  1151.    {                                             emphasis column.       }
  1152.  
  1153.     CMA_TREEICON           =$0400;    { Icon for tree node      }
  1154.     CMA_TREEBITMAP         =$0800;    { bitmap for tree node    }
  1155.     CMA_CXTREEINDENT       =$1000;    { indent for children     }
  1156.     CMA_CXTREELINE         =$2000;    { thickness of tree line  }
  1157.     CMA_SLTREEBITMAPORICON =$4000;    { size of icon of tree node }
  1158.  
  1159.     CMA_ITEMORDER        =$0001;      { QueryRecord search flags }
  1160.     CMA_WINDOW           =$0002;
  1161.     CMA_WORKSPACE        =$0004;
  1162.     CMA_ZORDER           =$0008;
  1163.  
  1164.     CMA_DELTATOP         =$0001;      { Industrial - top delta   }
  1165.     CMA_DELTABOT         =$0002;      { Industrial - bottom delta}
  1166.     CMA_DELTAHOME        =$0004;      { Industrial - top of list }
  1167.     CMA_DELTAEND         =$0008;      { Industrial - end of list }
  1168.  
  1169.     CMA_NOREPOSITION     =$0001;      { InvalidateRecord flags   }
  1170.     CMA_REPOSITION       =$0002;
  1171.     CMA_TEXTCHANGED      =$0004;
  1172.     CMA_ERASE            =$0008;
  1173.  
  1174.     CMA_FREE             =$0001;
  1175.     CMA_INVALIDATE       =$0002;
  1176.  
  1177.    {********************************************************************}
  1178.    {                                                                    }
  1179.    {                            S L I D E R                             }
  1180.    {                                                                    }
  1181.    {********************************************************************}
  1182.  
  1183.    {********************************************************************}
  1184.    { Define messages for the slider control                             }
  1185.    {********************************************************************}
  1186. CONST
  1187.     SLM_ADDDETENT          =$0369;   { Add detent niche          }
  1188.     SLM_QUERYDETENTPOS     =$036a;   { Query position of detent  }
  1189.     SLM_QUERYSCALETEXT     =$036b;   { Query text at tick number }
  1190.     SLM_QUERYSLIDERINFO    =$036c;   { Query slider information  }
  1191.     SLM_QUERYTICKPOS       =$036d;   { Query position of tick    }
  1192.     SLM_QUERYTICKSIZE      =$036e;   { Query size of tick        }
  1193.     SLM_REMOVEDETENT       =$036f;   { Remove detent niche       }
  1194.     SLM_SETSCALETEXT       =$0370;   { Set text above tick       }
  1195.     SLM_SETSLIDERINFO      =$0371;   { Set slider parameters     }
  1196.     SLM_SETTICKSIZE        =$0372;   { Set size of tick          }
  1197.     SLN_CHANGE             =1;       { Slider position changed   }
  1198.     SLN_SLIDERTRACK        =2;       { Slider dragged by user    }
  1199.     SLN_SETFOCUS           =3;       { Slider gaining focus      }
  1200.     SLN_KILLFOCUS          =4;       { Slider losing focus       }
  1201.  
  1202.    {********************************************************************}
  1203.    { Slider control data structure                                      }
  1204.    {********************************************************************}
  1205. TYPE
  1206.    PSLDCDATA=^SLDCDATA;
  1207.    SLDCDATA=RECORD
  1208.                  cbSize:ULONG;       { Size of control block             }
  1209.                  usScale1Increments:USHORT;    { # of divisions on scale }
  1210.                  usScale1Spacing:USHORT;{ Space in pels between increments}
  1211.                  usScale2Increments:USHORT;    { # of divisions on scale }
  1212.                  usScale2Spacing:USHORT;{ Space in pels between increments}
  1213.             END;
  1214.  
  1215.    {********************************************************************}
  1216.    { Slider control style flag definition                               }
  1217.    {********************************************************************}
  1218. CONST
  1219.     SLS_HORIZONTAL       =$00000000; { Orient slider horizontally}
  1220.     SLS_VERTICAL         =$00000001; { Orient slider vertically  }
  1221.     SLS_CENTER           =$00000000; { Center shaft in window    }
  1222.     SLS_BOTTOM           =$00000002; { Offset shaft to bottom (H)}
  1223.     SLS_TOP              =$00000004; { Offset shaft to top (H)   }
  1224.     SLS_LEFT             =$00000002; { Offset shaft to left (V)  }
  1225.     SLS_RIGHT            =$00000004; { Offset shaft to right (V) }
  1226.     SLS_SNAPTOINCREMENT  =$00000008; { Snap to nearest increment }
  1227.     SLS_BUTTONSBOTTOM    =$00000010; { Add buttons at shaft bot. }
  1228.     SLS_BUTTONSTOP       =$00000020; { Add buttons at shaft top  }
  1229.     SLS_BUTTONSLEFT      =$00000010; { Add buttons left of shaft }
  1230.     SLS_BUTTONSRIGHT     =$00000020; { Add buttons right of shaft}
  1231.     SLS_OWNERDRAW        =$00000040; { Owner draw some fields    }
  1232.     SLS_READONLY         =$00000080; { Provide a read only slider}
  1233.     SLS_RIBBONSTRIP      =$00000100; { Provide a ribbon strip    }
  1234.     SLS_HOMEBOTTOM       =$00000000; { Set home position at bot. }
  1235.     SLS_HOMETOP          =$00000200; { Set home position at top  }
  1236.     SLS_HOMELEFT         =$00000000; { Set home position at left }
  1237.     SLS_HOMERIGHT        =$00000200; { Set home position at right}
  1238.     SLS_PRIMARYSCALE1    =$00000000; { Scale 1 is primary scale  }
  1239.     SLS_PRIMARYSCALE2    =$00000400; { Scale 2 is primary scale  }
  1240.  
  1241.    {********************************************************************}
  1242.    { Message attributes for setting and querying slider components      }
  1243.    {********************************************************************}
  1244.     SMA_SCALE1               =$0001;
  1245.     SMA_SCALE2               =$0002;
  1246.     SMA_SHAFTDIMENSIONS      =$0000;
  1247.     SMA_SHAFTPOSITION        =$0001;
  1248.     SMA_SLIDERARMDIMENSIONS  =$0002;
  1249.     SMA_SLIDERARMPOSITION    =$0003;
  1250.     SMA_RANGEVALUE           =$0000;
  1251.     SMA_INCREMENTVALUE       =$0001;
  1252.     SMA_SETALLTICKS          =$FFFF;
  1253.  
  1254.    {********************************************************************}
  1255.    { Ownerdraw flag definitions                                         }
  1256.    {********************************************************************}
  1257.     SDA_RIBBONSTRIP          =$0001;
  1258.     SDA_SLIDERSHAFT          =$0002;
  1259.     SDA_BACKGROUND           =$0003;
  1260.     SDA_SLIDERARM            =$0004;
  1261.  
  1262.    {********************************************************************}
  1263.    { Error return codes                                                 }
  1264.    {********************************************************************}
  1265.     PMERR_UPDATE_IN_PROGRESS     =$1f06;
  1266.     SLDERR_INVALID_PARAMETERS    =-1;
  1267.  
  1268.    {********************************************************************}
  1269.    {                                                                    }
  1270.    {                         V A L U E   S E T                          }
  1271.    {                                                                    }
  1272.    {********************************************************************}
  1273.  
  1274.    {********************************************************************}
  1275.    { Define messages for the value set control                          }
  1276.    {********************************************************************}
  1277. CONST
  1278.     VM_QUERYITEM           =$0375;   { Query item at location    }
  1279.     VM_QUERYITEMATTR       =$0376;   { Query item attributes     }
  1280.     VM_QUERYMETRICS        =$0377;   { Query metrics of control  }
  1281.     VM_QUERYSELECTEDITEM   =$0378;   { Query selected item       }
  1282.     VM_SELECTITEM          =$0379;   { Set selected item         }
  1283.     VM_SETITEM             =$037a;   { Set item at location      }
  1284.     VM_SETITEMATTR         =$037b;   { Set item attributes       }
  1285.     VM_SETMETRICS          =$037c;   { Set metrics of control    }
  1286.  
  1287.     VN_SELECT              =120;     { Item selected by user     }
  1288.     VN_ENTER               =121;     { Item entered by user      }
  1289.     VN_DRAGLEAVE           =122;     { Drag left control         }
  1290.     VN_DRAGOVER            =123;     { Drag is over item         }
  1291.     VN_DROP                =124;     { Drop occurred on item     }
  1292.     VN_DROPHELP            =125;     { Request help for drop     }
  1293.     VN_INITDRAG            =126;     { Drag initiated on item    }
  1294.     VN_SETFOCUS            =127;     { Value set gaining focus   }
  1295.     VN_KILLFOCUS           =128;     { Value set losing focus    }
  1296.     VN_HELP                =129;     { Help requested by user    }
  1297.  
  1298.    {********************************************************************}
  1299.    { Value set control data structure                                   }
  1300.    {********************************************************************}
  1301. TYPE
  1302.    PVSCDATA=^VSCDATA;
  1303.    VSCDATA=RECORD
  1304.                  cbSize:ULONG;         { Size of control block             }
  1305.                  usRowCount:USHORT;    { Number of rows in value set       }
  1306.                  usColumnCount:USHORT; { Number of columns in value set    }
  1307.            END;
  1308.  
  1309.    {********************************************************************}
  1310.    { Value set drag initialization structure                            }
  1311.    {********************************************************************}
  1312. TYPE
  1313.    PVSDRAGINIT=^VSDRAGINIT;
  1314.    VSDRAGINIT=RECORD
  1315.                     hwnd:HWND;      { Window handle of value set control}
  1316.                     x:LONG;          { X coordinate of pointer on desktop}
  1317.                     y:LONG;          { Y coordinate of pointer on desktop}
  1318.                     cx:LONG;         { X offset from pointer hot spot    }
  1319.                     cy:LONG;         { Y offset from pointer hot spot    }
  1320.                     usRow:USHORT;    { Number of rows in value set       }
  1321.                     usColumn:USHORT; { Number of columns in value set    }
  1322.               END;
  1323.  
  1324.       {*****************************************************************}
  1325.       { Value set drag information structure                            }
  1326.       {*****************************************************************}
  1327. TYPE
  1328.       PVSDRAGINFO=^VSDRAGINFO;
  1329.       VSDRAGINFO=RECORD
  1330.                        pDragInfo:PDRAGINFO; { Pointer to a drag info structure }
  1331.                        usRow:USHORT;         { Number of rows in value set      }
  1332.                        usColumn:USHORT;      { Number of columns in value set   }
  1333.                  END;
  1334.  
  1335.    {********************************************************************}
  1336.    { Value set query item text structure                                }
  1337.    {********************************************************************}
  1338. TYPE
  1339.    PVSTEXT=^VSTEXT;
  1340.    VSTEXT=RECORD
  1341.                pszItemText:PChar;   { Pointer to string for item text      }
  1342.                ulBufLen:ULONG;      { Length of buffer to copy string into }
  1343.           END;
  1344.  
  1345.    {********************************************************************}
  1346.    { Value set control style flag definition                            }
  1347.    {********************************************************************}
  1348. CONST
  1349.     VS_BITMAP       =$0001;  { Default all items to bitmaps      }
  1350.     VS_ICON         =$0002;  { Default all items to icons        }
  1351.     VS_TEXT         =$0004;  { Default all items to text strings }
  1352.     VS_RGB          =$0008;  { Default all items to color info   }
  1353.     VS_COLORINDEX   =$0010;  { Default all items to color indices}
  1354.     VS_BORDER       =$0020;  { Add a border around the control   }
  1355.     VS_ITEMBORDER   =$0040;  { Add a border around each item     }
  1356.     VS_SCALEBITMAPS =$0080;  { Scale bitmaps to cell size        }
  1357.     VS_RIGHTTOLEFT  =$0100;  { Support right to left ordering    }
  1358.     VS_OWNERDRAW    =$0200;  { Owner draws value set background  }
  1359.  
  1360.    {********************************************************************}
  1361.    { Value set item attribute definition                                }
  1362.    {********************************************************************}
  1363.     VIA_BITMAP       =$0001; { If set, item contains a bitmap    }
  1364.     VIA_ICON         =$0002; { If set, item contains an icon     }
  1365.     VIA_TEXT         =$0004; { If set, item contains text string }
  1366.     VIA_RGB          =$0008; { If set, item contains color value }
  1367.     VIA_COLORINDEX   =$0010; { If set, item contains color index }
  1368.     VIA_OWNERDRAW    =$0020; { If set, item is ownerdraw         }
  1369.     VIA_DISABLED     =$0040; { If set, item is unselectable      }
  1370.     VIA_DRAGGABLE    =$0080; { If set, item can be source of drag}
  1371.     VIA_DROPONABLE   =$0100; { If set, item can be target of drop}
  1372.  
  1373.    {********************************************************************}
  1374.    { Message parameter attributes for sizing and spacing of items       }
  1375.    {********************************************************************}
  1376.     VMA_ITEMSIZE             =$0001;
  1377.     VMA_ITEMSPACING          =$0002;
  1378.  
  1379.    {********************************************************************}
  1380.    { Ownerdraw flag definitions                                         }
  1381.    {********************************************************************}
  1382.     VDA_ITEM                 =$0001;
  1383.     VDA_ITEMBACKGROUND       =$0002;
  1384.     VDA_SURROUNDING          =$0003;
  1385.     VDA_BACKGROUND           =$0004;
  1386.  
  1387.    {********************************************************************}
  1388.    { Error return codes                                                 }
  1389.    {********************************************************************}
  1390.     VSERR_INVALID_PARAMETERS    =-1;
  1391.  
  1392.    {********************************************************************}
  1393.    {                                                                    }
  1394.    {                          N O T E B O O K                           }
  1395.    {                                                                    }
  1396.    {********************************************************************}
  1397.  
  1398.    {********************************************************************}
  1399.    { Message ids                                                        }
  1400.    {********************************************************************}
  1401. CONST
  1402.     BKM_CALCPAGERECT         =$0353; { Calc book/page rectangle  }
  1403.     BKM_DELETEPAGE           =$0354; { Delete page(s)            }
  1404.     BKM_INSERTPAGE           =$0355; { Insert page               }
  1405.     BKM_INVALIDATETABS       =$0356; { Invalidate tab area       }
  1406.     BKM_TURNTOPAGE           =$0357; { Turn to page              }
  1407.     BKM_QUERYPAGECOUNT       =$0358; { Query number of pages     }
  1408.     BKM_QUERYPAGEID          =$0359; { Query page identifier     }
  1409.     BKM_QUERYPAGEDATA        =$035a; { Query page user data      }
  1410.     BKM_QUERYPAGEWINDOWHWND  =$035b; { Query page window handle  }
  1411.     BKM_QUERYTABBITMAP       =$035c; { Query tab bitmap handle   }
  1412.     BKM_QUERYTABTEXT         =$035d; { Query tab text pointer    }
  1413.     BKM_SETDIMENSIONS        =$035e; { Set tab/dogear dimensions }
  1414.     BKM_SETPAGEDATA          =$035f; { Set page user data        }
  1415.     BKM_SETPAGEWINDOWHWND    =$0360; { Set page window handle    }
  1416.     BKM_SETSTATUSLINETEXT    =$0361; { Set status line text      }
  1417.     BKM_SETTABBITMAP         =$0362; { Set tab bitmap            }
  1418.     BKM_SETTABTEXT           =$0363; { Set tab text              }
  1419.     BKM_SETNOTEBOOKCOLORS    =$0364; { Set Notebook colors       }
  1420.     BKM_QUERYPAGESTYLE       =$0365; { Query page style          }
  1421.     BKM_QUERYSTATUSLINETEXT  =$0366; { Query status line text    }
  1422.  
  1423.     BKN_PAGESELECTED         =130;   { New page selected by user }
  1424.     BKN_NEWPAGESIZE          =131;   { App page size changed     }
  1425.     BKN_HELP                 =132;   { Help notification         }
  1426.     BKN_PAGEDELETED          =133;   { Page deleted notification }
  1427.  
  1428.    {********************************************************************}
  1429.    { Page deletion flags (usDeleteFlag)                                 }
  1430.    {********************************************************************}
  1431.     BKA_ALL                  =$0001; { all pages                 }
  1432.     BKA_SINGLE               =$0002; { single page               }
  1433.     BKA_TAB                  =$0004; { minor/major section       }
  1434.  
  1435.    {********************************************************************}
  1436.    { Page insertion/query order (usPageOrder, usQueryOrder)             }
  1437.    {********************************************************************}
  1438.     BKA_LAST                 =$0002; { Insert/Query last page    }
  1439.     BKA_FIRST                =$0004; { Insert/Query first page   }
  1440.     BKA_NEXT                 =$0008; { Insert/Query after page   }
  1441.     BKA_PREV                 =$0010; { Insert/Query before page  }
  1442.     BKA_TOP                  =$0020; { Query topmost page        }
  1443.  
  1444.    {********************************************************************}
  1445.    { Notebook region types (usBookRegion, usType)                       }
  1446.    {********************************************************************}
  1447.     BKA_MAJORTAB             =$0001; { Major Tab                 }
  1448.     BKA_MINORTAB             =$0002; { Minor Tab                 }
  1449.     BKA_PAGEBUTTON           =$0100; { Page Turning Button       }
  1450.  
  1451.    {********************************************************************}
  1452.    { Page insertion/query styles (usPageStyle,usQueryEnd)               }
  1453.    {********************************************************************}
  1454.     BKA_STATUSTEXTON         =$0001; { status area text          }
  1455.     BKA_MAJOR                =$0040; { Major Tab                 }
  1456.     BKA_MINOR                =$0080; { Minor Tab                 }
  1457.     BKA_AUTOPAGESIZE         =$0100; { Page window position/size }
  1458.     BKA_END                  =$0200; { Query to end of book      }
  1459.  
  1460.    {********************************************************************}
  1461.    { Tab window contents (usTabDisplay)                                 }
  1462.    {********************************************************************}
  1463.     BKA_TEXT                 =$0400; { text data                 }
  1464.     BKA_BITMAP               =$0800; { bitmap                    }
  1465.  
  1466.    {********************************************************************}
  1467.    { Notebook window styles (ulNotebookStyles)                          }
  1468.    {********************************************************************}
  1469.  
  1470.    {********************************************************************}
  1471.    { Backpage Orientation                                               }
  1472.    {********************************************************************}
  1473.     BKS_BACKPAGESBR          =$00000001; { Bottom right          }
  1474.     BKS_BACKPAGESBL          =$00000002; { Bottom left           }
  1475.     BKS_BACKPAGESTR          =$00000004; { Top right             }
  1476.     BKS_BACKPAGESTL          =$00000008; { Top left              }
  1477.  
  1478.    {********************************************************************}
  1479.    { Major Tab Side                                                     }
  1480.    {********************************************************************}
  1481.     BKS_MAJORTABRIGHT        =$00000010; { Major tabs right      }
  1482.     BKS_MAJORTABLEFT         =$00000020; { Major tabs left       }
  1483.     BKS_MAJORTABTOP          =$00000040; { Major tabs top        }
  1484.     BKS_MAJORTABBOTTOM       =$00000080; { Major tabs bottom     }
  1485.  
  1486.    {********************************************************************}
  1487.    { Tab Type                                                           }
  1488.    {********************************************************************}
  1489.     BKS_SQUARETABS           =$00000000; { Square edged tabs     }
  1490.     BKS_ROUNDEDTABS          =$00000100; { Round edged tabs      }
  1491.     BKS_POLYGONTABS          =$00000200; { Polygon edged tabs    }
  1492.  
  1493.    {********************************************************************}
  1494.    { Binding type                                                       }
  1495.    {********************************************************************}
  1496.     BKS_SOLIDBIND            =$00000000; { Solid binding         }
  1497.     BKS_SPIRALBIND           =$00000400; { Spiral binding        }
  1498.     BKS_COLORTABS            =$00000800; { Color tabs}
  1499.  
  1500.    {********************************************************************}
  1501.    { Status line text justification                                     }
  1502.    {********************************************************************}
  1503.     BKS_STATUSTEXTLEFT       =$00000000; { Left justify text     }
  1504.     BKS_STATUSTEXTRIGHT      =$00001000; { Right justify text    }
  1505.     BKS_STATUSTEXTCENTER     =$00002000; { Center text           }
  1506.  
  1507.    {********************************************************************}
  1508.    { Tab text justification                                             }
  1509.    {********************************************************************}
  1510.     BKS_TABTEXTLEFT          =$00000000; { Left justify tab text }
  1511.     BKS_TABTEXTRIGHT         =$00004000; { Right justify tab text}
  1512.     BKS_TABTEXTCENTER        =$00008000; { Center tab text       }
  1513.  
  1514.    {********************************************************************}
  1515.    { Notebook color presentation param attributes                       }
  1516.    {********************************************************************}
  1517.     BKA_BACKGROUNDPAGECOLORINDEX  =$0001;{ Page Background       }
  1518.     BKA_BACKGROUNDPAGECOLOR       =$0002;
  1519.     BKA_BACKGROUNDMAJORCOLORINDEX =$0003;{ Major Tab Background  }
  1520.     BKA_BACKGROUNDMAJORCOLOR      =$0004;
  1521.     BKA_BACKGROUNDMINORCOLORINDEX =$0005;{ Minor Tab Background  }
  1522.     BKA_BACKGROUNDMINORCOLOR      =$0006;
  1523.     BKA_FOREGROUNDMAJORCOLORINDEX =$0007;{ Major Tab Text        }
  1524.     BKA_FOREGROUNDMAJORCOLOR      =$0008;
  1525.     BKA_FOREGROUNDMINORCOLORINDEX =$0009;{ Minor Tab Text        }
  1526.     BKA_FOREGROUNDMINORCOLOR      =$000A;
  1527.  
  1528.    {********************************************************************}
  1529.    { Error message ids                                                  }
  1530.    {********************************************************************}
  1531.     BOOKERR_INVALID_PARAMETERS  =-1; { Invalid parameters        }
  1532.  
  1533.    {********************************************************************}
  1534.    { BKM_QUERYTABTEXT and BKM_QUERYSTATUSLINETEXT message structure     }
  1535.    {********************************************************************}
  1536. TYPE
  1537.    PBOOKTEXT=^BOOKTEXT;
  1538.    BOOKTEXT=RECORD
  1539.                  apString:PChar;             { ptr to string buffer      }
  1540.                  textLen:ULONG;              { length of string to query }
  1541.             END;
  1542.  
  1543.    {********************************************************************}
  1544.    { BKN_PAGEDELETED notify message structure                           }
  1545.    {********************************************************************}
  1546. TYPE
  1547.    PDELETENOTIFY=^DELETENOTIFY;
  1548.    DELETENOTIFY=RECORD
  1549.                      hwndBook:HWND;          { Notebook window handle    }
  1550.                      hwndPage:HWND;          { App. page window handle   }
  1551.                      ulAppPageData:ULONG;    { App. page data            }
  1552.                      hbmTab:HBITmAP;         { App. tab bitmap handle    }
  1553.                 END;
  1554.  
  1555.    {********************************************************************}
  1556.    { BKN_PAGESELECTED notify message structure                          }
  1557.    {********************************************************************}
  1558. TYPE
  1559.    PPAGESELECTNOTIFY=^PAGESELECTNOTIFY;
  1560.    PAGESELECTNOTIFY=RECORD
  1561.                          hwndBook:HWND;      { Notebook window handle    }
  1562.                          ulPageIdCur:ULONG;  { Previous top page id      }
  1563.                          ulPageIdNew:ULONG;  { New top Page id           }
  1564.                     END;
  1565.  
  1566.  
  1567. IMPORTS
  1568.  
  1569. FUNCTION WinFileDlg(hwndP,hwndO:HWND;VAR pfild:FILEDLG):HWND;
  1570.                     APIENTRY;                'PMCTLS' index 4;
  1571. FUNCTION WinDefFileDlgProc(ahwnd:HWND;msg:ULONG;mp1,mp2:MPARAM):MRESULT;
  1572.                     APIENTRY;                'PMCTLS' index 5;
  1573. FUNCTION WinFreeFileDlgList(papszFQFilename:PAPSZ):BOOL;
  1574.                     APIENTRY;                'PMCTLS' index 6;
  1575. FUNCTION WinFontDlg(hwndP,hwndO:HWND;VAR pfntd:FONTDLG):HWND;
  1576.                     APIENTRY;                'PMCTLS' index 2;
  1577. FUNCTION WinDefFontDlgProc(ahwnd:HWND;msg:ULONG;mp1,mp2:MPARAM):MRESULT;
  1578.                     APIENTRY;                'PMCTLS' index 3;
  1579. FUNCTION DrgAcceptDroppedFiles(ahwnd:HWND;VAR pszPath,pszTypes:PSZ;
  1580.                                ulDefaultOp,ulRsvd:ULONG):BOOL;
  1581.                     APIENTRY;                'PMDRAG' index 66;
  1582. FUNCTION DrgAllocDragInfo(cditem:ULONG):PDRAGINFO;
  1583.                     APIENTRY;                'PMDRAG' index 34;
  1584. FUNCTION DrgAllocDragtransfer(cdxfer:ULONG):PDRAGTRANSFER;
  1585.                     APIENTRY;                'PMDRAG' index 35;
  1586. FUNCTION DrgDrag(hwndSource:HWND;VAR pdinfo:DRAGINFO;VAR pdimg:DRAGIMAGE;
  1587.                  cdimg:ULONG;vkTerminate:LONG;VAR pRsvd):HWND;
  1588.                     APIENTRY;                'PMDRAG' index 38;
  1589. FUNCTION DrgDragFiles(ahwnd:HWND;VAR apszFiles,apszTypes,apszTargets:PSZ;
  1590.                       cFiles:ULONG;hptrDrag:HPOINTER;vkTerm:ULONG;
  1591.                       fSourceRender:BOOL;ulRsvd:ULONG):BOOL;
  1592.                     APIENTRY;                'PMDRAG' index 65;
  1593. FUNCTION DrgPostTransferMsg(ahwnd:HWND;msg:ULONG;VAR pdxfer:DRAGTRANSFER;
  1594.                             fl,ulRsvd:ULONG;fRetry:BOOL):BOOL;
  1595.                     APIENTRY;                'PMDRAG' index 42;
  1596. FUNCTION DrgQueryDragitem(VAR pdinfo:DRAGINFO;cbBuffer:ULONG;
  1597.                           VAR pditem:DRAGITEM;iItem:ULONG):BOOL;
  1598.                     APIENTRY;                'PMDRAG' index 44;
  1599. FUNCTION DrgQueryDragitemCount(VAR pdinfo:DRAGINFO):ULONG;
  1600.                     APIENTRY;                'PMDRAG' index 45;
  1601. FUNCTION DrgQueryDragitemPtr(VAR pdinfo:DRAGINFO;i:ULONG):PDRAGITEM;
  1602.                     APIENTRY;                'PMDRAG' index 46;
  1603. FUNCTION DrgQueryNativeRMF(VAR pditem:DRAGITEM;cbBuffer:ULONG;
  1604.                            VAR pBuffer):BOOL;
  1605.                     APIENTRY;                'PMDRAG' index 47;
  1606. FUNCTION DrgQueryNativeRMFLen(VAR pditem:DRAGITEM):ULONG;
  1607.                     APIENTRY;                'PMDRAG' index 48;
  1608. FUNCTION DrgQueryStrName(ahstr:HSTR;cbBuffer:ULONG;VAR pBuffer:PSZ):ULONG;
  1609.                     APIENTRY;                'PMDRAG' index 49;
  1610. FUNCTION DrgQueryStrNameLen(ahstr:HSTR):ULONG;
  1611.                     APIENTRY;                'PMDRAG' index 50;
  1612. FUNCTION DrgQueryTrueType(VAR pditem:DRAGITEM;cbBuffer:ULONG;
  1613.                           VAR pBuffer:PSZ):BOOL;
  1614.                     APIENTRY;                'PMDRAG' index 51;
  1615. FUNCTION DrgQueryTrueTypeLen(VAR pditem:DRAGITEM):ULONG;
  1616.                     APIENTRY;                'PMDRAG' index 52;
  1617. FUNCTION DrgSendTransferMsg(ahwnd:HWND;msg:ULONG;mp1,mp2:MPARAM):MRESULT;
  1618.                     APIENTRY;                'PMDRAG' index 54;
  1619. FUNCTION DrgSetDragitem(VAR pdinfo:DRAGINFO;VAR pditem:DRAGITEM;
  1620.                         cbBuffer,iItem:ULONG):BOOL;
  1621.                     APIENTRY;                'PMDRAG' index 57;
  1622. FUNCTION DrgSetDragImage(VAR pdinfo:DRAGINFO;VAR pdimg:DRAGIMAGE;
  1623.                          cdimg:ULONG;VAR pRsvd):BOOL;
  1624.                     APIENTRY;                'PMDRAG' index 56;
  1625. FUNCTION DrgVerifyTypeSet(VAR pditem:DRAGITEM;VAR pszType:PSZ;cbMatch:ULONG;
  1626.                           VAR pszMatch:PSZ):BOOL;
  1627.                     APIENTRY;                'PMDRAG' index 62;
  1628. FUNCTION DrgAccessDraginfo(pdinfo:PDRAGINFO):BOOL;
  1629.                     APIENTRY;                'PMDRAG' index 32;
  1630. FUNCTION DrgAddStrHandle(VAR apsz:PSZ):HSTR;
  1631.                     APIENTRY;                'PMDRAG' index 33;
  1632. FUNCTION DrgDeleteDraginfoStrHandles(VAR pdinfo:DRAGINFO):BOOL;
  1633.                     APIENTRY;                'PMDRAG' index 36;
  1634. FUNCTION DrgDeleteStrHandle(ahstr:HSTR):BOOL;
  1635.                     APIENTRY;                'PMDRAG' index 37;
  1636. FUNCTION DrgFreeDraginfo(pdinfo:PDRAGINFO):BOOL;
  1637.                     APIENTRY;                'PMDRAG' index 39;
  1638. FUNCTION DrgFreeDragtransfer(VAR pdxfer:DRAGTRANSFER):BOOL;
  1639.                     APIENTRY;                'PMDRAG' index 40;
  1640. FUNCTION DrgGetPS(ahwnd:HWND):HPS;
  1641.                     APIENTRY;                'PMDRAG' index 41;
  1642. FUNCTION DrgPushDraginfo(VAR pdinfo:DRAGINFO;hwndDest:HWND):BOOL;
  1643.                     APIENTRY;                'PMDRAG' index 43;
  1644. FUNCTION DrgReleasePS(ahps:HPS):BOOL;
  1645.                     APIENTRY;                'PMDRAG' index 53;
  1646. FUNCTION DrgSetDragPointer(VAR pdinfo:DRAGINFO;hptr:HPOINTER):BOOL;
  1647.                     APIENTRY;                'PMDRAG' index 55;
  1648. FUNCTION DrgVerifyNativeRMF(VAR pditem:DRAGITEM;VAR pszRMF:PSZ):BOOL;
  1649.                     APIENTRY;                'PMDRAG' index 58;
  1650. FUNCTION DrgVerifyRMF(VAR pditem:DRAGITEM;VAR pszMech,pszFmt:PSZ):BOOL;
  1651.                     APIENTRY;                'PMDRAG' index 59;
  1652. FUNCTION DrgVerifyTrueType(VAR pditem:DRAGITEM;VAR pszType:PSZ):BOOL;
  1653.                     APIENTRY;                'PMDRAG' index 60;
  1654. FUNCTION DrgVerifyType(VAR pditem:DRAGITEM;VAR pszType:PSZ):BOOL;
  1655.                     APIENTRY;                'PMDRAG' index 61;
  1656. END;
  1657.  
  1658. IMPLEMENTATION
  1659.  
  1660. BEGIN
  1661. END.
  1662.