Population of oledlg.

diff --git a/include/oledlg.h b/include/oledlg.h
index 1b937fc..b4dfdb3 100644
--- a/include/oledlg.h
+++ b/include/oledlg.h
@@ -5,37 +5,801 @@
 #ifndef __WINE_OLEDLG_H
 #define __WINE_OLEDLG_H
 
+#include "commdlg.h"
+#include "prsht.h"
+#include "windef.h"
+#include "oleidl.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+typedef struct IOleUILinkContainerA IOleUILinkContainerA, *POLEUILINKCONTAINERA, *LPOLEUILINKCONTAINERA;
+typedef struct IOleUILinkContainerW IOleUILinkContainerW, *POLEUILINKCONTAINERW, *LPOLEUILINKCONTAINERW;
+
+typedef struct IOleUILinkInfoA IOleUILinkInfoA, *POLEUILINKINFOA, *LPOLEUILINKINFOA;
+typedef struct IOleUILinkInfoW IOleUILinkInfoW, *POLEUILINKINFOW, *LPOLEUILINKINFOW;
+
+typedef struct IOleUIObjInfoA IOleUIObjInfoA, *POLEUIOBJINFOA, *LPOLEUIOBJINFOA;
+typedef struct IOleUIObjInfoW IOleUIObjInfoW, *POLEUIOBJINFOW, *LPOLEUIOBJINFOW;
+
+#define CSF_SHOWHELP                    0x00000001L
+#define CSF_VALIDSOURCE                 0x00000002L
+#define CSF_ONLYGETSOURCE               0x00000004L
+#define CSF_EXPLORER                    0x00000008L
+
+#define PSF_SHOWHELP                    0x00000001L
+#define PSF_SELECTPASTE                 0x00000002L
+#define PSF_SELECTPASTELINK             0x00000004L
+#define PSF_CHECKDISPLAYASICON          0x00000008L
+#define PSF_DISABLEDISPLAYASICON        0x00000010L
+#define PSF_HIDECHANGEICON              0x00000020L
+#define PSF_STAYONCLIPBOARDCHANGE       0x00000040L
+#define PSF_NOREFRESHDATAOBJECT         0x00000080L
+
+#define IOF_SHOWHELP                    0x00000001L
+#define IOF_SELECTCREATENEW             0x00000002L
+#define IOF_SELECTCREATEFROMFILE        0x00000004L
+#define IOF_CHECKLINK                   0x00000008L
+#define IOF_CHECKDISPLAYASICON          0x00000010L
+#define IOF_CREATENEWOBJECT             0x00000020L
+#define IOF_CREATEFILEOBJECT            0x00000040L
+#define IOF_CREATELINKOBJECT            0x00000080L
+#define IOF_DISABLELINK                 0x00000100L
+#define IOF_VERIFYSERVERSEXIST          0x00000200L
+#define IOF_DISABLEDISPLAYASICON        0x00000400L
+#define IOF_HIDECHANGEICON              0x00000800L
+#define IOF_SHOWINSERTCONTROL           0x00001000L
+#define IOF_SELECTCREATECONTROL         0x00002000L
+
+#define CF_SHOWHELPBUTTON               0x00000001L
+#define CF_SETCONVERTDEFAULT            0x00000002L
+#define CF_SETACTIVATEDEFAULT           0x00000004L
+#define CF_SELECTCONVERTTO              0x00000008L
+#define CF_SELECTACTIVATEAS             0x00000010L
+#define CF_DISABLEDISPLAYASICON         0x00000020L
+#define CF_DISABLEACTIVATEAS            0x00000040L
+#define CF_HIDECHANGEICON               0x00000080L
+#define CF_CONVERTONLY                  0x00000100L
+
+#define CIF_SHOWHELP                    0x00000001L
+#define CIF_SELECTCURRENT               0x00000002L
+#define CIF_SELECTDEFAULT               0x00000004L
+#define CIF_SELECTFROMFILE              0x00000008L
+#define CIF_USEICONEXE                  0x00000010L
+
 #define OLEUI_FALSE   0
 #define OLEUI_SUCCESS 1 /* Same as OLEUI_OK */
 #define OLEUI_OK      1 /* OK button pressed */ 
 #define OLEUI_CANCEL  2 /* Cancel button pressed */
 
-typedef void *LPOLEUIINSERTOBJECTA; /* FIXME: stub */
-typedef void *LPOLEUIINSERTOBJECTW; /* FIXME: stub */
 
-typedef void *LPOLEUIPASTESPECIALA;  /* FIXME: stub */
-typedef void *LPOLEUIPASTESPECIALW;  /* FIXME: stub */
+typedef UINT (CALLBACK *LPFNOLEUIHOOK)(HWND, UINT, WPARAM, LPARAM);
 
-typedef void *LPOLEUIEDITLINKSA;  /* FIXME: stub */
-typedef void *LPOLEUIEDITLINKSW;  /* FIXME: stub */
+/*****************************************************************************
+ * INSERT OBJECT DIALOG
+ */
+typedef struct tagOLEUIINSERTOBJECTA
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    HWND            hWndOwner;      
+    LPCSTR          lpszCaption;    
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    HINSTANCE       hInstance;      
+    LPCSTR          lpszTemplate;   
+    HRSRC           hResource;      
+    CLSID           clsid;          
+    LPSTR           lpszFile;       
+    UINT            cchFile;        
+    UINT            cClsidExclude;  
+    LPCLSID         lpClsidExclude; 
+    IID             iid;            
+    DWORD           oleRender;      
+    LPFORMATETC     lpFormatEtc;    
+    LPOLECLIENTSITE lpIOleClientSite;   
+    LPSTORAGE       lpIStorage;     
+    LPVOID          *ppvObj;        
+    SCODE           sc;             
+    HGLOBAL         hMetaPict;      
+} OLEUIINSERTOBJECTA, *POLEUIINSERTOBJECTA, *LPOLEUIINSERTOBJECTA;
 
-typedef void *LPOLEUICHANGEICONA; /* FIXME: stub */
-typedef void *LPOLEUICHANGEICONW; /* FIXME: stub */
+typedef struct tagOLEUIINSERTOBJECTW
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    HWND            hWndOwner;      
+    LPCWSTR         lpszCaption;    
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    HINSTANCE       hInstance;      
+    LPCWSTR         lpszTemplate;   
+    HRSRC           hResource;      
+    CLSID           clsid;          
+    LPWSTR          lpszFile;       
+    UINT            cchFile;        
+    UINT            cClsidExclude;  
+    LPCLSID         lpClsidExclude; 
+    IID             iid;            
+    DWORD           oleRender;      
+    LPFORMATETC     lpFormatEtc;    
+    LPOLECLIENTSITE lpIOleClientSite;   
+    LPSTORAGE       lpIStorage;     
+    LPVOID          *ppvObj;        
+    SCODE           sc;             
+    HGLOBAL         hMetaPict;      
+} OLEUIINSERTOBJECTW, *POLEUIINSERTOBJECTW, *LPOLEUIINSERTOBJECTW;
 
-typedef void *LPOLEUICONVERTA; /* FIXME: stub */
-typedef void *LPOLEUICONVERTW; /* FIXME: stub */
+DECL_WINELIB_TYPE_AW(OLEUIINSERTOBJECT)
+DECL_WINELIB_TYPE_AW(POLEUIINSERTOBJECT)
+DECL_WINELIB_TYPE_AW(LPOLEUIINSERTOBJECT)
 
-typedef void *LPOLEUIBUSYA; /* FIXME: stub */
-typedef void *LPOLEUIBUSYW; /* FIXME: stub */
 
-typedef void *LPOLEUILINKCONTAINERA; /* FIXME: stub */
-typedef void *LPOLEUILINKCONTAINERW; /* FIXME: stub */
+/*****************************************************************************
+ * CONVERT DIALOG
+ */
+typedef struct tagOLEUICONVERTA
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    HWND            hWndOwner;      
+    LPCSTR          lpszCaption;    
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    HINSTANCE       hInstance;      
+    LPCSTR          lpszTemplate;   
+    HRSRC           hResource;      
+    CLSID           clsid;          
+    CLSID           clsidConvertDefault;    
+    CLSID           clsidActivateDefault;   
+    CLSID           clsidNew;       
+    DWORD           dvAspect;       
+    WORD            wFormat;        
+    BOOL            fIsLinkedObject;
+    HGLOBAL         hMetaPict;      
+    LPSTR           lpszUserType;   
+    BOOL            fObjectsIconChanged; 
+    LPSTR           lpszDefLabel;   
+    UINT            cClsidExclude;  
+    LPCLSID         lpClsidExclude; 
+} OLEUICONVERTA, *POLEUICONVERTA, *LPOLEUICONVERTA;
 
-typedef void *LPOLEUIOBJECTPROPSA; /* FIXME: stub */
-typedef void *LPOLEUIOBJECTPROPSW; /* FIXME: stub */
+typedef struct tagOLEUICONVERTW
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    HWND            hWndOwner;      
+    LPCWSTR         lpszCaption;    
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    HINSTANCE       hInstance;      
+    LPCWSTR         lpszTemplate;   
+    HRSRC           hResource;      
+    CLSID           clsid;          
+    CLSID           clsidConvertDefault;    
+    CLSID           clsidActivateDefault;   
+    CLSID           clsidNew;       
+    DWORD           dvAspect;       
+    WORD            wFormat;        
+    BOOL            fIsLinkedObject;
+    HGLOBAL         hMetaPict;      
+    LPWSTR          lpszUserType;   
+    BOOL            fObjectsIconChanged; 
+    LPWSTR          lpszDefLabel;   
+    UINT            cClsidExclude;  
+    LPCLSID         lpClsidExclude; 
+} OLEUICONVERTW, *POLEUICONVERTW, *LPOLEUICONVERTW;
 
-typedef void *LPOLEUICHANGESOURCEA; /* FIXME: stub */
-typedef void *LPOLEUICHANGESOURCEW; /* FIXME: stub */
+DECL_WINELIB_TYPE_AW(OLEUICONVERT)
+DECL_WINELIB_TYPE_AW(POLEUICONVERT)
+DECL_WINELIB_TYPE_AW(LPOLEUICONVERT)
+
+/*****************************************************************************
+ * CHANGE ICON DIALOG
+ */
+typedef struct tagOLEUICHANGEICONA
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    HWND            hWndOwner;      
+    LPCSTR          lpszCaption;    
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    HINSTANCE       hInstance;      
+    LPCSTR          lpszTemplate;   
+    HRSRC           hResource;      
+    HGLOBAL         hMetaPict;      
+    CLSID           clsid;          
+    CHAR            szIconExe[MAX_PATH];    
+    INT             cchIconExe;     
+} OLEUICHANGEICONA, *POLEUICHANGEICONA, *LPOLEUICHANGEICONA;
+
+typedef struct tagOLEUICHANGEICONW
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    HWND            hWndOwner;      
+    LPCWSTR         lpszCaption;    
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    HINSTANCE       hInstance;      
+    LPCWSTR         lpszTemplate;   
+    HRSRC           hResource;      
+    HGLOBAL         hMetaPict;      
+    CLSID           clsid;          
+    WCHAR           szIconExe[MAX_PATH];    
+    INT             cchIconExe;     
+} OLEUICHANGEICONW, *POLEUICHANGEICONW, *LPOLEUICHANGEICONW;
+
+DECL_WINELIB_TYPE_AW(OLEUICHANGEICON)
+DECL_WINELIB_TYPE_AW(POLEUICHANGEICON)
+DECL_WINELIB_TYPE_AW(LPOLEUICHANGEICON)
+
+
+/*****************************************************************************
+ * PASTE SPECIAL DIALOG
+ */
+
+typedef enum tagOLEUIPASTEFLAG
+{
+   OLEUIPASTE_ENABLEICON    = 2048,     
+   OLEUIPASTE_PASTEONLY     = 0,
+   OLEUIPASTE_PASTE         = 512,
+   OLEUIPASTE_LINKANYTYPE   = 1024,
+   OLEUIPASTE_LINKTYPE1     = 1,
+   OLEUIPASTE_LINKTYPE2     = 2,
+   OLEUIPASTE_LINKTYPE3     = 4,
+   OLEUIPASTE_LINKTYPE4     = 8,
+   OLEUIPASTE_LINKTYPE5     = 16,
+   OLEUIPASTE_LINKTYPE6     = 32,
+   OLEUIPASTE_LINKTYPE7     = 64,
+   OLEUIPASTE_LINKTYPE8     = 128
+} OLEUIPASTEFLAG;    
+
+typedef struct tagOLEUIPASTEENTRYA
+{
+   FORMATETC        fmtetc;         
+   LPCSTR           lpstrFormatName;
+   LPCSTR           lpstrResultText;
+   DWORD            dwFlags;        
+   DWORD            dwScratchSpace; 
+} OLEUIPASTEENTRYA, *POLEUIPASTEENTRYA, *LPOLEUIPASTEENTRYA;
+
+typedef struct tagOLEUIPASTEENTRYW
+{
+   FORMATETC        fmtetc;         
+   LPCWSTR          lpstrFormatName;
+   LPCWSTR          lpstrResultText;
+   DWORD            dwFlags;        
+   DWORD            dwScratchSpace; 
+} OLEUIPASTEENTRYW, *POLEUIPASTEENTRYW, *LPOLEUIPASTEENTRYW;
+
+DECL_WINELIB_TYPE_AW(OLEUIPASTEENTRY)
+DECL_WINELIB_TYPE_AW(POLEUIPASTEENTRY)
+DECL_WINELIB_TYPE_AW(LPOLEUIPASTEENTRY)
+
+typedef struct tagOLEUIPASTESPECIALA
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    HWND            hWndOwner;      
+    LPCSTR          lpszCaption;    
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    HINSTANCE       hInstance;      
+    LPCSTR          lpszTemplate;   
+    HRSRC           hResource;      
+    LPDATAOBJECT    lpSrcDataObj;   
+    LPOLEUIPASTEENTRYA arrPasteEntries;
+    INT             cPasteEntries;  
+    UINT*           arrLinkTypes;   
+    INT             cLinkTypes;     
+    UINT            cClsidExclude;  
+    LPCLSID         lpClsidExclude; 
+    INT             nSelectedIndex; 
+    BOOL            fLink;          
+    HGLOBAL         hMetaPict;      
+    SIZEL           sizel;          
+} OLEUIPASTESPECIALA, *POLEUIPASTESPECIALA, *LPOLEUIPASTESPECIALA;
+
+typedef struct tagOLEUIPASTESPECIALW
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    HWND            hWndOwner;      
+    LPCWSTR         lpszCaption;    
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    HINSTANCE       hInstance;      
+    LPCWSTR         lpszTemplate;   
+    HRSRC           hResource;      
+    LPDATAOBJECT    lpSrcDataObj;   
+    LPOLEUIPASTEENTRYW arrPasteEntries;
+    INT             cPasteEntries;  
+    UINT*           arrLinkTypes;   
+    INT             cLinkTypes;     
+    UINT            cClsidExclude;  
+    LPCLSID         lpClsidExclude; 
+    INT             nSelectedIndex; 
+    BOOL            fLink;          
+    HGLOBAL         hMetaPict;      
+    SIZEL           sizel;          
+} OLEUIPASTESPECIALW, *POLEUIPASTESPECIALW, *LPOLEUIPASTESPECIALW;
+
+DECL_WINELIB_TYPE_AW(OLEUIPASTESPECIAL)
+DECL_WINELIB_TYPE_AW(POLEUIPASTESPECIAL)
+DECL_WINELIB_TYPE_AW(LPOLEUIPASTESPECIAL)
+
+#define PSF_SHOWHELP                    0x00000001L
+#define PSF_SELECTPASTE                 0x00000002L
+#define PSF_SELECTPASTELINK             0x00000004L
+
+#define PSF_CHECKDISPLAYASICON          0x00000008L
+#define PSF_DISABLEDISPLAYASICON        0x00000010L
+#define PSF_HIDECHANGEICON              0x00000020L
+#define PSF_STAYONCLIPBOARDCHANGE       0x00000040L
+#define PSF_NOREFRESHDATAOBJECT         0x00000080L
+
+#define OLEUI_IOERR_SRCDATAOBJECTINVALID    (OLEUI_ERR_STANDARDMAX+0)
+#define OLEUI_IOERR_ARRPASTEENTRIESINVALID  (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_IOERR_ARRLINKTYPESINVALID     (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_PSERR_CLIPBOARDCHANGED        (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_PSERR_GETCLIPBOARDFAILED      (OLEUI_ERR_STANDARDMAX+4)
+
+typedef struct tagOLEUIEDITLINKSW
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    HWND            hWndOwner;      
+    LPCWSTR         lpszCaption;    
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    HINSTANCE       hInstance;      
+    LPCWSTR         lpszTemplate;   
+    HRSRC           hResource;      
+    LPOLEUILINKCONTAINERW lpOleUILinkContainer;  
+} OLEUIEDITLINKSW, *POLEUIEDITLINKSW, *LPOLEUIEDITLINKSW;
+
+typedef struct tagOLEUIEDITLINKSA
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    HWND            hWndOwner;      
+    LPCSTR          lpszCaption;    
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    HINSTANCE       hInstance;      
+    LPCSTR          lpszTemplate;   
+    HRSRC           hResource;      
+    LPOLEUILINKCONTAINERA lpOleUILinkContainer;  
+} OLEUIEDITLINKSA, *POLEUIEDITLINKSA, *LPOLEUIEDITLINKSA;
+
+DECL_WINELIB_TYPE_AW(OLEUIEDITLINKS)
+DECL_WINELIB_TYPE_AW(POLEUIEDITLINKS)
+DECL_WINELIB_TYPE_AW(LPOLEUIEDITLINKS)
+
+
+/***********************************************************************************
+ * BUSY DIALOG
+ */
+typedef struct tagOLEUIBUSYA
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    HWND            hWndOwner;      
+    LPCSTR          lpszCaption;    
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    HINSTANCE       hInstance;      
+    LPCSTR          lpszTemplate;   
+    HRSRC           hResource;      
+    HTASK           hTask;          
+    HWND*           lphWndDialog;   
+} OLEUIBUSYA, *POLEUIBUSYA, *LPOLEUIBUSYA;
+
+typedef struct tagOLEUIBUSYW
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    HWND            hWndOwner;      
+    LPCWSTR         lpszCaption;    
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    HINSTANCE       hInstance;      
+    LPCWSTR         lpszTemplate;   
+    HRSRC           hResource;      
+    HTASK           hTask;          
+    HWND*           lphWndDialog;   
+} OLEUIBUSYW, *POLEUIBUSYW, *LPOLEUIBUSYW;
+
+DECL_WINELIB_TYPE_AW(OLEUIBUSY)
+DECL_WINELIB_TYPE_AW(POLEUIBUSY)
+DECL_WINELIB_TYPE_AW(LPOLEUIBUSY)
+
+
+struct tagOLEUIOBJECTPROPSW;
+struct tagOLEUIOBJECTPROPSA;
+
+typedef struct tagOLEUIGNRLPROPSA
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    DWORD           dwReserved1[2];
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    DWORD           dwReserved2[3];
+    struct tagOLEUIOBJECTPROPSA* lpOP;   
+
+} OLEUIGNRLPROPSA, *POLEUIGNRLPROPSA, *LPOLEUIGNRLPROPSA;
+
+typedef struct tagOLEUIGNRLPROPSW
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    DWORD           dwReserved1[2];
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    DWORD           dwReserved2[3];
+    struct tagOLEUIOBJECTPROPSW* lpOP;   
+} OLEUIGNRLPROPSW, *POLEUIGNRLPROPSW, *LPOLEUIGNRLPROPSW;
+
+DECL_WINELIB_TYPE_AW(OLEUIGNRLPROPS)
+DECL_WINELIB_TYPE_AW(POLEUIGNRLPROPS)
+DECL_WINELIB_TYPE_AW(LPOLEUIGNRLPROPS)
+
+typedef struct tagOLEUIVIEWPROPSA
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    DWORD           dwReserved1[2];
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    DWORD           dwReserved2[3];
+    struct tagOLEUIOBJECTPROPSA* lpOP; 
+    INT             nScaleMin;      
+    INT             nScaleMax;
+} OLEUIVIEWPROPSA, *POLEUIVIEWPROPSA, *LPOLEUIVIEWPROPSA;
+
+typedef struct tagOLEUIVIEWPROPSW
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    DWORD           dwReserved1[2];
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    DWORD           dwReserved2[3];
+    struct tagOLEUIOBJECTPROPSW* lpOP; 
+    INT             nScaleMin;      
+    INT             nScaleMax;
+} OLEUIVIEWPROPSW, *POLEUIVIEWPROPSW, *LPOLEUIVIEWPROPSW;
+
+DECL_WINELIB_TYPE_AW(OLEUIVIEWPROPS)
+DECL_WINELIB_TYPE_AW(POLEUIVIEWPROPS)
+DECL_WINELIB_TYPE_AW(LPOLEUIVIEWPROPS)
+
+
+#define VPF_SELECTRELATIVE          0x00000001L 
+#define VPF_DISABLERELATIVE         0x00000002L 
+#define VPF_DISABLESCALE            0x00000004L 
+
+typedef struct tagOLEUILINKPROPSA
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    DWORD           dwReserved1[2];
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    DWORD           dwReserved2[3];
+    struct tagOLEUIOBJECTPROPSA* lpOP; 
+} OLEUILINKPROPSA, *POLEUILINKPROPSA, *LPOLEUILINKPROPSA;
+
+typedef struct tagOLEUILINKPROPSW
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    DWORD           dwReserved1[2];
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    DWORD           dwReserved2[3];
+    struct tagOLEUIOBJECTPROPSW* lpOP; 
+} OLEUILINKPROPSW, *POLEUILINKPROPSW, *LPOLEUILINKPROPSW;
+
+DECL_WINELIB_TYPE_AW(OLEUILINKPROPS)
+DECL_WINELIB_TYPE_AW(POLEUILINKPROPS)
+DECL_WINELIB_TYPE_AW(LPOLEUILINKPROPS)
+
+typedef struct tagOLEUIOBJECTPROPSA
+{
+    DWORD                cbStruct;       
+    DWORD                dwFlags;        
+    LPPROPSHEETHEADERA   lpPS;         
+    DWORD                dwObject;       
+    LPOLEUIOBJINFOA      lpObjInfo;      
+    DWORD                dwLink;         
+    LPOLEUILINKINFOA     lpLinkInfo;     
+    LPOLEUIGNRLPROPSA    lpGP;          
+    LPOLEUIVIEWPROPSA    lpVP;          
+    LPOLEUILINKPROPSA    lpLP;          
+} OLEUIOBJECTPROPSA, *POLEUIOBJECTPROPSA, *LPOLEUIOBJECTPROPSA;
+
+typedef struct tagOLEUIOBJECTPROPSW
+{
+    DWORD                cbStruct;       
+    DWORD                dwFlags;        
+    LPPROPSHEETHEADERW   lpPS;         
+    DWORD                dwObject;       
+    LPOLEUIOBJINFOW      lpObjInfo;      
+    DWORD                dwLink;         
+    LPOLEUILINKINFOW     lpLinkInfo;     
+    LPOLEUIGNRLPROPSW    lpGP;          
+    LPOLEUIVIEWPROPSW    lpVP;          
+    LPOLEUILINKPROPSW    lpLP;          
+} OLEUIOBJECTPROPSW, *POLEUIOBJECTPROPSW, *LPOLEUIOBJECTPROPSW;
+
+DECL_WINELIB_TYPE_AW(OLEUIOBJECTPROPS)
+DECL_WINELIB_TYPE_AW(POLEUIOBJECTPROPS)
+DECL_WINELIB_TYPE_AW(LPOLEUIOBJECTPROPS)
+
+/************************************************************************************
+ * CHANGE SOURCE DIALOG
+ */
+
+
+typedef struct tagOLEUICHANGESOURCEW
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    HWND            hWndOwner;      
+    LPCWSTR         lpszCaption;    
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    HINSTANCE       hInstance;      
+    LPCWSTR         lpszTemplate;   
+    HRSRC           hResource;      
+    OPENFILENAMEW*lpOFN;          
+    DWORD           dwReserved1[4]; 
+    LPOLEUILINKCONTAINERW lpOleUILinkContainer;  
+    DWORD           dwLink;         
+    LPWSTR          lpszDisplayName;
+    ULONG           nFileLength;    
+    LPWSTR          lpszFrom;       
+    LPWSTR          lpszTo;         
+} OLEUICHANGESOURCEW, *POLEUICHANGESOURCEW, *LPOLEUICHANGESOURCEW;
+
+
+typedef struct tagOLEUICHANGESOURCEA
+{
+    DWORD           cbStruct;       
+    DWORD           dwFlags;        
+    HWND            hWndOwner;      
+    LPCSTR          lpszCaption;    
+    LPFNOLEUIHOOK   lpfnHook;       
+    LPARAM          lCustData;      
+    HINSTANCE       hInstance;      
+    LPCSTR          lpszTemplate;   
+    HRSRC           hResource;      
+    OPENFILENAMEA*  lpOFN;          
+    DWORD           dwReserved1[4]; 
+    LPOLEUILINKCONTAINERA lpOleUILinkContainer;  
+    DWORD           dwLink;         
+    LPSTR           lpszDisplayName;
+    ULONG           nFileLength;    
+    LPSTR           lpszFrom;       
+    LPSTR           lpszTo;         
+} OLEUICHANGESOURCEA, *POLEUICHANGESOURCEA, *LPOLEUICHANGESOURCEA;
+
+
+DECL_WINELIB_TYPE_AW(OLEUICHANGESOURCE)
+DECL_WINELIB_TYPE_AW(POLEUICHANGESOURCE)
+DECL_WINELIB_TYPE_AW(LPOLEUICHANGESOURCE)
+
+
+/*****************************************************************************
+ * IOleUILinkContainer interface
+ */
+#define ICOM_INTERFACE   IOleUILinkContainerA
+#define IOleUILinkContainerA_METHODS \
+    ICOM_METHOD1(DWORD,GetNextLink,               DWORD,dwLink) \
+    ICOM_METHOD2(HRESULT,SetLinkUpdateOptions,    DWORD,dwLink,  DWORD,dwUpdateOpt) \
+    ICOM_METHOD2(HRESULT,GetLinkUpdateOptions,    DWORD,dwLink,  DWORD*,lpdwUpdateOpt) \
+    ICOM_METHOD5(HRESULT,SetLinkSource,           DWORD,dwLink,  LPSTR,lpszDisplayName, \
+                ULONG,lenFileName,  ULONG*,pchEaten,  BOOL,fValidateSource) \
+    ICOM_METHOD7(HRESULT,GetLinkSource,           DWORD,dwLink, \
+                LPSTR*,lplpszDisplayName,  ULONG*,lplenFileName, \
+                LPSTR*,lplpszFullLinkType,  LPSTR*,lplpszShortLinkType, \
+                BOOL*,lpfSourceAvailable,  BOOL*,lpfIsSelected) \
+    ICOM_METHOD1(HRESULT,OpenLinkSource,          DWORD,dwLink) \
+    ICOM_METHOD3(HRESULT,UpdateLink,              DWORD,dwLink, \
+                BOOL,fErrorMessage,  BOOL,fReserved) \
+    ICOM_METHOD1(HRESULT,CancelLink,							DWORD,dwLink)
+#define IOleUILinkContainerA_IMETHODS \
+    IUnknown_IMETHODS \
+    IOleUILinkContainerA_METHODS
+ICOM_DEFINE(IOleUILinkContainerA, IUnknown)
+#undef ICOM_INTERFACE
+
+#define ICOM_INTERFACE   IOleUILinkContainerW
+#define IOleUILinkContainerW_METHODS \
+    ICOM_METHOD1(DWORD,GetNextLink,               DWORD,dwLink) \
+    ICOM_METHOD2(HRESULT,SetLinkUpdateOptions,    DWORD,dwLink,  DWORD,dwUpdateOpt) \
+    ICOM_METHOD2(HRESULT,GetLinkUpdateOptions,    DWORD,dwLink,  DWORD*,lpdwUpdateOpt) \
+    ICOM_METHOD5(HRESULT,SetLinkSource,           DWORD,dwLink,  LPWSTR,lpszDisplayName, \
+                ULONG,lenFileName,  ULONG*,pchEaten,  BOOL,fValidateSource) \
+    ICOM_METHOD7(HRESULT,GetLinkSource,           DWORD,dwLink, \
+                LPWSTR*,lplpszDisplayName,  ULONG*,lplenFileName, \
+                LPWSTR*,lplpszFullLinkType,  LPWSTR*,lplpszShortLinkType, \
+                BOOL*,lpfSourceAvailable,  BOOL*,lpfIsSelected) \
+    ICOM_METHOD1(HRESULT,OpenLinkSource,          DWORD,dwLink) \
+    ICOM_METHOD3(HRESULT,UpdateLink,              DWORD,dwLink, \
+                BOOL,fErrorMessage,  BOOL,fReserved) \
+    ICOM_METHOD1(HRESULT,CancelLink,							DWORD,dwLink)
+#define IOleUILinkContainerW_IMETHODS \
+    IUnknown_IMETHODS \
+    IOleUILinkContainerW_METHODS 
+ICOM_DEFINE(IOleUILinkContainerW, IUnknown)
+#undef ICOM_INTERFACE
+
+DECL_WINELIB_TYPE_AW(IOleUILinkContainer)
+DECL_WINELIB_TYPE_AW(POLEUILINKCONTAINER)
+DECL_WINELIB_TYPE_AW(LPOLEUILINKCONTAINER)
+
+#if ICOM_INTERFACE
+/*** IUnknown methods ***/
+#define IOleUILinkContainer_QueryInterface(p,a,b)          ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleUILinkContainer_AddRef(p)                      ICOM_CALL (AddRef,p)
+#define IOleUILinkContainer_Release(p)                     ICOM_CALL (Release,p)
+/*** IOleUILinkContainer methods ***/
+#define IOleUILinkContainer_GetNextLink(p,a)               ICOM_CALL1(GetNextLink,p,a)
+#define IOleUILinkContainer_SetLinkUpdateOptions(p,a,b)    ICOM_CALL2(SetLinkUpdateOptions,p,a,b)
+#define IOleUILinkContainer_GetLinkUpdateOptions(p,a,b)    ICOM_CALL2(GetLinkUpdateOptions,p,a,b)
+#define IOleUILinkContainer_SetLinkSource(p,a,b,c,d,e)     ICOM_CALL5(SetLinkSource,p,a,b,c,d,e)
+#define IOleUILinkContainer_GetLinkSource(p,a,b,c,d,e,f,g) ICOM_CALL7(GetLinkSource,p,a,b,c,d,e,f,g)
+#define IOleUILinkContainer_OpenLinkSource(p,a)            ICOM_CALL1(OpenLinkSource,p,a)
+#define IOleUILinkContainer_UpdateLink(p,a,b,c)            ICOM_CALL3(UpdateLink,p,a,b,c)        
+#define IOleUILinkContainer_CancelLink(p,a)                ICOM_CALL1(CancelLink,p,a)           
+#endif
+
+
+/*****************************************************************************
+ * IOleUILinkInfo interface
+ */
+#define ICOM_INTERFACE   IOleUILinkInfoA
+#define IOleUILinkInfoA_METHODS \
+    ICOM_METHOD2(HRESULT,GetLastUpdate,           DWORD,dwLink,  FILETIME*,lpLastUpdate)
+#define IOleUILinkInfoA_IMETHODS \
+    IOleUILinkContainerA_IMETHODS \
+    IOleUILinkInfoA_METHODS 
+ICOM_DEFINE(IOleUILinkInfoA, IOleUILinkContainerA)
+#undef ICOM_INTERFACE
+
+#define ICOM_INTERFACE   IOleUILinkInfoW
+#define IOleUILinkInfoW_METHODS \
+    ICOM_METHOD2(HRESULT,GetLastUpdate,           DWORD,dwLink,  FILETIME*,lpLastUpdate)
+#define IOleUILinkInfoW_IMETHODS \
+    IOleUILinkContainerW_IMETHODS \
+    IOleUILinkInfoW_METHODS 
+ICOM_DEFINE(IOleUILinkInfoW, IOleUILinkContainerW)
+#undef  ICOM_INTERFACE
+
+DECL_WINELIB_TYPE_AW(IOleUILinkInfo)
+DECL_WINELIB_TYPE_AW(POLEUILINKINFO)
+DECL_WINELIB_TYPE_AW(LPOLEUILINKINFO)
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IOleUILinkInfo_QueryInterface(p,a,b)          ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleUILinkInfo_AddRef(p)                      ICOM_CALL (AddRef,p)
+#define IOleUILinkInfo_Release(p)                     ICOM_CALL (Release,p)
+/*** IOleUILinkContainer methods ***/
+#define IOleUILinkInfo_GetNextLink(p,a)               ICOM_CALL1(GetNextLink,p,a)
+#define IOleUILinkInfo_SetLinkUpdateOptions(p,a,b)    ICOM_CALL2(SetLinkUpdateOptions,p,a,b)
+#define IOleUILinkInfo_GetLinkUpdateOptions(p,a,b)    ICOM_CALL2(GetLinkUpdateOptions,p,a,b)
+#define IOleUILinkInfo_SetLinkSource(p,a,b,c,d,e)     ICOM_CALL5(SetLinkSource,p,a,b,c,d,e)
+#define IOleUILinkInfo_GetLinkSource(p,a,b,c,d,e,f,g) ICOM_CALL7(GetLinkSource,p,a,b,c,d,e,f,g)
+#define IOleUILinkInfo_OpenLinkSource(p,a)            ICOM_CALL1(OpenLinkSource,p,a)
+#define IOleUILinkInfo_UpdateLink(p,a,b,c)            ICOM_CALL3(UpdateLink,p,a,b,c)
+#define IOleUILinkInfo_CancelLink(p,a)                ICOM_CALL1(CancelLink,p,a)
+/*** IOleUILinkInfo methods ***/                                                                 
+#define IOleUILinkInfo_GetLastUpdate(p,a,b)           ICOM_CALL2(GetLastUpdate,p,a,b)                        
+#endif
+
+
+/*****************************************************************************
+ * IOleUIObjInfo interface
+ */
+#define ICOM_INTERFACE   IOleUIObjInfoA
+#define IOleUIObjInfoA_METHODS \
+    ICOM_METHOD6(HRESULT,GetObjectInfo,            DWORD,dwObject, DWORD*,lpdwObjSize, LPSTR*,lplpszLabel, \
+                LPSTR*,lplpszType, LPSTR*,lplpszShortType, LPSTR*,lplpszLocation) \
+    ICOM_METHOD6(HRESULT,GetConvertInfo,           DWORD,dwObject, CLSID*,lpClassID, WORD*,lpwFormat, \
+                CLSID*,lpConvertDefaultClassID, LPCLSID*,lplpClsidExclude, UINT*,lpcClsidExclude) \
+    ICOM_METHOD2(HRESULT,ConvertObject,            DWORD,dwObject,  REFCLSID,clsidNew) \
+    ICOM_METHOD4(HRESULT,GetViewInfo,              DWORD,dwObject, \
+                HGLOBAL*,phMetaPict,  DWORD*,pdvAspect,  INT*,pnCurrentScale) \
+    ICOM_METHOD5(HRESULT,SetViewInfo,              DWORD,dwObject, \
+                HGLOBAL,hMetaPict,  DWORD,dvAspect, \
+                INT,nCurrentScale,  BOOL,bRelativeToOrig)
+#define IOleUIObjInfoA_IMETHODS \
+    IUnknown_IMETHODS \
+    IOleUIObjInfoA_METHODS 
+ICOM_DEFINE(IOleUIObjInfoA, IUnknown)
+#undef ICOM_INTERFACE
+
+#define ICOM_INTERFACE   IOleUIObjInfoW
+#define IOleUIObjInfoW_METHODS \
+    ICOM_METHOD6(HRESULT,GetObjectInfo,            DWORD,dwObject, DWORD*,lpdwObjSize, LPWSTR*,lplpszLabel, \
+                LPWSTR*,lplpszType,  LPWSTR*,lplpszShortType,  LPWSTR*,lplpszLocation) \
+    ICOM_METHOD6(HRESULT,GetConvertInfo,           DWORD,dwObject, CLSID*,lpClassID, WORD*,lpwFormat, \
+                CLSID*,lpConvertDefaultClassID, LPCLSID*,lplpClsidExclude, UINT*,lpcClsidExclude) \
+    ICOM_METHOD2(HRESULT,ConvertObject,            DWORD,dwObject,  REFCLSID,clsidNew) \
+    ICOM_METHOD4(HRESULT,GetViewInfo,              DWORD,dwObject, \
+                HGLOBAL*,phMetaPict,  DWORD*,pdvAspect,  INT*,pnCurrentScale) \
+    ICOM_METHOD5(HRESULT,SetViewInfo,              DWORD,dwObject, \
+                HGLOBAL,hMetaPict,  DWORD,dvAspect, \
+                INT,nCurrentScale,  BOOL,bRelativeToOrig)
+#define IOleUIObjInfoW_IMETHODS \
+    IUnknown_IMETHODS \
+    IOleUIObjInfoW_METHODS 
+ICOM_DEFINE(IOleUIObjInfoW, IUnknown)
+#undef ICOM_INTERFACE
+
+DECL_WINELIB_TYPE_AW(IOleUIObjInfo)
+DECL_WINELIB_TYPE_AW(POLEUIOBJINFO)
+DECL_WINELIB_TYPE_AW(LPOLEUIOBJINFO)
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IOleUIObjInfo_QueryInterface(p,a,b)            ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleUIObjInfo_AddRef(p)                        ICOM_CALL (AddRef,p)
+#define IOleUIObjInfo_Release(p)                       ICOM_CALL (Release,p)
+/*** IOleUIObjInfo methods ***/
+#define IOleUIObjInfo_GetObjectInfo(p,a,b,c,d,e,f)     ICOM_CALL6(GetObjectInfo,p,a,b,c,d,e,f)
+#define IOleUIObjInfo_GetConvertInfo(p,a,b,c,d,e,f)    ICOM_CALL6(GetConvertInfo,p,a,b,c,d,e,f)
+#define IOleUIObjInfo_ConvertObject(p,a,b)             ICOM_CALL2(ConvertObject,p,a,b)
+#define IOleUIObjInfo_GetViewInfo(p,a,b,c,d)           ICOM_CALL4(GetViewInfo,p,a,b,c,d)
+#define IOleUIObjInfo_SetViewInfo(p,a,b,c,d,e)         ICOM_CALL5(SetViewInfo,p,a,b,c,d,e)
+#endif        
+
+UINT WINAPI  OleUIInsertObjectW(LPOLEUIINSERTOBJECTW);
+UINT WINAPI  OleUIInsertObjectA(LPOLEUIINSERTOBJECTA);
+#define      OleUIInsertObject WINELIB_NAME_AW(OleUIInsertObject)
+UINT WINAPI  OleUIConvertA(LPOLEUICONVERTA);
+UINT WINAPI  OleUIConvertW(LPOLEUICONVERTW);
+#define      OleUIConvert WINELIB_NAME_AW(OleUIConvert)
+UINT WINAPI  OleUIChangeIconA(LPOLEUICHANGEICONA);
+UINT WINAPI  OleUIChangeIconW(LPOLEUICHANGEICONW);
+#define      OleUIChangeIcon WINELIB_NAME_AW(OleUIChangeIcon)
+UINT WINAPI  OleUIBusyA(LPOLEUIBUSYA);
+UINT WINAPI  OleUIBusyW(LPOLEUIBUSYW);
+#define      OleUIBusy WINELIB_NAME_AW(OleUIBusy)
+UINT WINAPI  OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA);
+UINT WINAPI  OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW);
+#define      OleUIObjectProperties WINELIB_NAME_AW(OleUIObjectProperties)
+UINT WINAPI  OleUIChangeSourceW(LPOLEUICHANGESOURCEW);
+UINT WINAPI  OleUIChangeSourceA(LPOLEUICHANGESOURCEA);
+#define      OleUIChangeSource WINELIB_NAME_AW(OleUIChangeSource)
+UINT WINAPI  OleUIEditLinksA(LPOLEUIEDITLINKSA lpOleUIEditLinks);
+UINT WINAPI  OleUIEditLinksW(LPOLEUIEDITLINKSW lpOleUIEditLinks);
+#define      OleUIEditLinks WINELIB_NAME_AW(OleUIEditLinks)
+BOOL WINAPI  OleUIUpdateLinksA(LPOLEUILINKCONTAINERA lpOleUILinkCntr, HWND hwndParent, LPSTR lpszTitle, INT cLinks);
+BOOL WINAPI  OleUIUpdateLinksW(LPOLEUILINKCONTAINERW lpOleUILinkCntr, HWND hwndParent, LPWSTR lpszTitle, INT cLinks);
+#define      OleUIUpdateLinks WINELIB_NAME_AW(OleUIUpdateLinks)
+BOOL WINAPI  OleUIAddVerbMenuA(LPOLEOBJECT lpOleObj, LPCSTR lpszShortType, HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax,
+  BOOL bAddConvert, UINT idConvert, HMENU *lphMenu);
+BOOL WINAPI  OleUIAddVerbMenuW(LPOLEOBJECT lpOleObj, LPCWSTR lpszShortType, HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax,
+  BOOL bAddConvert, UINT idConvert, HMENU *lphMenu);
+#define      OleUIAddVerbMenu WINELIB_NAME_AW(OleUIAddVerbMenu)
+UINT WINAPI  OleUIPasteSpecialA(LPOLEUIPASTESPECIALA lpOleUIPasteSpecial);
+UINT WINAPI  OleUIPasteSpecialW(LPOLEUIPASTESPECIALW lpOleUIPasteSpecial);
+#define      OleUIPasteSpecial WINELIB_NAME_AW(OleUIPasteSpecial) 
+
+
+#ifdef __cplusplus
+} /* Extern "C" */
+#endif
+
 
 #endif  /* __WINE_OLEDLG_H */