/*
   cdstruc.h

   Base definitions

   Copyright (C) 1996 Free Software Foundation, Inc.

   This file is part of the Windows32 API Library.

   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public
   License as published by the Free Software Foundation; either
   version 2 of the License, or (at your option) any later version.

   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Library General Public License for more details.

   If you are interested in a warranty or support for this source code,
   contact Scott Christley <scottc@net-community.com> for more information.

   You should have received a copy of the GNU Library General Public
   License along with this library; see the file COPYING.LIB.
   If not, write to the Free Software Foundation,
   59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

   -----------
   DAL 2003 - this file modified extensively for my compiler.  New
   definitionswnwn added as well.
*/
#pragma pack(1)

typedef UINT (CALLBACK *LPOFNHOOKPROC) (HWND, UINT, WPARAM, LPARAM);


typedef struct tagOFN {
   DWORD        lStructSize;
   HWND         hwndOwner;
   HINSTANCE    hInstance;
   LPCTSTR       lpstrFilter;
   LPTSTR        lpstrCustomFilter;
   DWORD        nMaxCustFilter;
   DWORD        nFilterIndex;
   LPTSTR        lpstrFile;
   DWORD        nMaxFile;
   LPTSTR        lpstrFileTitle;
   DWORD        nMaxFileTitle;
   LPCTSTR       lpstrInitialDir;
   LPCTSTR       lpstrTitle;
   DWORD        Flags;
   WORD         nFileOffset;
   WORD         nFileExtension;
   LPCTSTR       lpstrDefExt;
   LPARAM       lCustData;
   LPOFNHOOKPROC lpfnHook;
   LPCTSTR       lpTemplateName;
#if (_WIN32_WINNT >= 0x0500)
   void *       pvReserved;
   DWORD        dwReserved;
   DWORD        FlagsEx;
#endif
} OPENFILENAME, *LPOPENFILENAME;

#define OPENFILENAME_SIZE_VERSION_400  CDSIZEOF_STRUCT(OPENFILENAME,lpTemplateName)

typedef UINT (CALLBACK *LPCCHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
typedef struct
_OFNOTIFY
{
        NMHDR           hdr;
        LPOPENFILENAME lpOFN;
        LPSTR           pszFile;
} OFNOTIFY, FAR *LPOFNOTIFY;

typedef struct _OFNOTIFYEX
{
        NMHDR           hdr;
        LPOPENFILENAME lpOFN;
        LPVOID          psf;
        LPVOID          pidl;
} OFNOTIFYEX, FAR *LPOFNOTIFYEX;

typedef struct tagCHOOSECOLOR {
   DWORD        lStructSize;
   HWND         hwndOwner;
   HWND         hInstance;
   COLORREF     rgbResult;
   COLORREF*    lpCustColors;
   DWORD        Flags;
   LPARAM       lCustData;
   LPCCHOOKPROC lpfnHook;
   LPCTSTR       lpTemplateName;
} CHOOSECOLOR, *LPCHOOSECOLOR;

typedef UINT (CALLBACK *LPFRHOOKPROC) (HWND, UINT, WPARAM, LPARAM);

typedef struct tagFINDREPLACE {
   DWORD        lStructSize;
   HWND         hwndOwner;
   HINSTANCE    hInstance;

   DWORD        Flags;
   LPTSTR        lpstrFindWhat;
   LPTSTR        lpstrReplaceWith;
   WORD         wFindWhatLen;
   WORD         wReplaceWithLen;
   LPARAM       lCustData;
   LPFRHOOKPROC lpfnHook;
   LPCSTR       lpTemplateName;
} FINDREPLACE, *LPFINDREPLACE;

typedef UINT (CALLBACK *LPCFHOOKPROC) (HWND, UINT, WPARAM, LPARAM);

typedef struct tagCHOOSEFONT {
   DWORD           lStructSize;
   HWND            hwndOwner;
   HDC             hDC;
   LPLOGFONT       lpLogFont;
   INT             iPointSize;
   DWORD           Flags;
   COLORREF        rgbColors;
   LPARAM          lCustData;
   LPCFHOOKPROC    lpfnHook;
   LPCSTR          lpTemplateName;
   HINSTANCE       hInstance;

   LPTSTR           lpszStyle;

   WORD            nFontType;

   WORD            ___MISSING_ALIGNMENT__;
   INT             nSizeMin;
   INT             nSizeMax;

} CHOOSEFONT, *LPCHOOSEFONT;

typedef UINT (CALLBACK *LPPRINTHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
typedef UINT (CALLBACK *LPSETUPHOOKPROC) (HWND, UINT, WPARAM, LPARAM);

typedef struct tagPD {
   DWORD            lStructSize;
   HWND             hwndOwner;
   HGLOBAL          hDevMode;
   HGLOBAL          hDevNames;
   HDC              hDC;
   DWORD            Flags;
   WORD             nFromPage;
   WORD             nToPage;
   WORD             nMinPage;
   WORD             nMaxPage;
   WORD             nCopies;
   HINSTANCE        hInstance;
   LPARAM           lCustData;
   LPPRINTHOOKPROC  lpfnPrintHook;
   LPSETUPHOOKPROC  lpfnSetupHook;
   LPCTSTR           lpPrintTemplateName;
   LPCTSTR           lpSetupTemplateName;
   HGLOBAL          hPrintTemplate;
   HGLOBAL          hSetupTemplate;
} PRINTDLG, *LPPRINTDLG;

typedef struct tagPRINTPAGERANGE {
   DWORD  nFromPage;
   DWORD  nToPage;
} PRINTPAGERANGE, *LPPRINTPAGERANGE;

typedef struct tagPDEX {
   DWORD                 lStructSize;
   HWND                  hwndOwner;
   HGLOBAL               hDevMode;
   HGLOBAL               hDevNames;
   HDC                   hDC;
   DWORD                 Flags;
   DWORD                 Flags2;
   DWORD                 ExclusionFlags;
   DWORD                 nPageRanges;
   DWORD                 nMaxPageRanges;
   LPPRINTPAGERANGE      lpPageRanges;
   DWORD                 nMinPage;
   DWORD                 nMaxPage;
   DWORD                 nCopies;
   HINSTANCE             hInstance;
   LPCTSTR                lpPrintTemplateName;
   LPUNKNOWN             lpCallback;
   DWORD                 nPropertyPages;
   HPROPSHEETPAGE       *lphPropertyPages;
   DWORD                 nStartPage;
   DWORD                 dwResultAction;
} PRINTDLGEX, *LPPRINTDLGEX;
typedef struct tagDEVNAMES {
   WORD wDriverOffset;
   WORD wDeviceOffset;
   WORD wOutputOffset;
   WORD wDefault;
} DEVNAMES, *LPDEVNAMES;

typedef UINT (CALLBACK* LPPAGEPAINTHOOK)( HWND, UINT, WPARAM, LPARAM );
typedef UINT (CALLBACK* LPPAGESETUPHOOK)( HWND, UINT, WPARAM, LPARAM );

typedef struct tagPSD
{
    DWORD           lStructSize;
    HWND            hwndOwner;
    HGLOBAL         hDevMode;
    HGLOBAL         hDevNames;
    DWORD           Flags;
    POINT           ptPaperSize;
    RECT            rtMinMargin;
    RECT            rtMargin;
    HINSTANCE       hInstance;
    LPARAM          lCustData;
    LPPAGESETUPHOOK lpfnPageSetupHook;
    LPPAGEPAINTHOOK lpfnPagePaintHook;
    LPCTSTR          lpPageSetupTemplateName;
    HGLOBAL         hPageSetupTemplate;
} PAGESETUPDLG, * LPPAGESETUPDLG;

#pragma pack()
