#ifndef pack2_h__ #define pack2_h__ #define INC_OLE2 // Prevent windows.h from pulling in OLE 1 #include #include #include #include // ;Internal #include // ;Internal #include #include // ;Internal #include #include // #include // don't use CRT libs #include // #include // in ccshell\inc // #include // in ccshell\inc // #include // in ccshell\inc // #include // in ccshell\inc #include "packutil.h" #include "packguid.h" #include "ids.h" HRESULT CPackage_CreateInstnace(IUnknown ** ppunk); ////////////////////////////////// // External Variables // extern UINT g_cRefThisDll; // per-instance extern HINSTANCE g_hinst; extern UINT g_cfFileContents; extern UINT g_cfFileDescriptor; extern UINT g_cfObjectDescriptor; extern UINT g_cfEmbedSource; extern UINT g_cfFileNameW; extern INT g_cxIcon; extern INT g_cyIcon; extern INT g_cxArrange; extern INT g_cyArrange; extern HFONT g_hfontTitle; ////////////////////////////////// // Global Constants // #define HIMETRIC_PER_INCH 2540 // Number of HIMETRIC units per inch #define DEF_LOGPIXELSX 96 // Default values for pixels per #define DEF_LOGPIXELSY 96 // logical inch #define CBCMDLINKMAX 500 // num chars in cmdline package #define FILE_SHARE_READWRITE (FILE_SHARE_READ | FILE_SHARE_WRITE) #define OLEIVERB_EDITPACKAGE (OLEIVERB_PRIMARY+1) #define OLEIVERB_FIRST_CONTEXT (OLEIVERB_PRIMARY+2) #define OLEIVERB_LAST_CONTEXT (OLEIVERB_PRIMARY+0xFFFF) #define PACKWIZ_NUM_PAGES 3 // number of pages in our wizard ////////////////////////////////// // Clipboard Formats // #define CF_FILECONTENTS g_cfFileContents #define CF_FILEDESCRIPTOR g_cfFileDescriptor #define CF_OBJECTDESCRIPTOR g_cfObjectDescriptor #define CF_EMBEDSOURCE g_cfEmbedSource #define CF_FILENAMEW g_cfFileNameW #define CFSTR_EMBEDSOURCE TEXT("Embed Source") #define CFSTR_OBJECTDESCRIPTOR TEXT("Object Descriptor") ////////////////////////////////// // String constants // #define SZUSERTYPE L"OLE Package" #define SZCONTENTS L"\001Ole10Native" #define SZAPPNAME TEXT("Object Packager") ////////////////////////////////// // Old packager junk... // // NOTE: This enumeration is used to determine what kind of information // is stored in a packager object. Currently, the new packager on supports // ICON and PEMBED. We will probably want to implement CMDLINK and PICTURE // to remain back compatible with the old packager. // typedef enum { NOTHING, CMDLINK, ICON, PEMBED, PICTURE, PACKAGE } PANETYPE; ////////////////////////////////// // Embedded File structure // // NOTE: This is similar to the structure used by the old packager to store // information about the embedded file, however it is slightly different. // Most notably, I use a FILEDESCRIPTOR structure to hold onto the filename // and filesize so this information can be easily transferred in a GetData call // Also, I've deleted some uncessary fields that the old packager used to // deal with OLE 1 ways of dealing with things. typedef struct _EMBED // embed { FILEDESCRIPTOR fd; // file descriptor of embedded file LPTSTR pszTempName; // temp. file name used when shellexec'ing HANDLE hTask; // handle to task on shellexec'ed objects LPOLEOBJECT poo; // oleobject interface on running contents BOOL fIsOleFile; // TRUE if OLE can activate this type of file } EMBED, *LPEMBED; ////////////////////////////////// // Command line structure // // NOTE: This is the structure the old packager used when implementing // the command line packages. It will be best to use this structure for // the new packager for ease of use in reading and writing old packager // formats. // typedef struct _CML // cml { BOOL fCmdIsLink; TCHAR szCommandLine[CBCMDLINKMAX]; } CML, *LPCML; //////////////////////////////// // PackageInfo Structure // // NOTE: This structure is used by the Create New Package Wizard and the // Edit Package dialogs. We use it to hold onto package information, so that // the CPackage Object can initialize/reinitialize itself after one of these // calls. // typedef struct _packageInfo { TCHAR szLabel[MAX_PATH]; TCHAR szFilename[MAX_PATH]; TCHAR szIconPath[MAX_PATH]; int iIcon; // must be an int for PickIconDlg } PACKAGER_INFO, *LPPACKAGER_INFO; //////////////////////////////// // PersistStorage enumeration // typedef enum { PSSTATE_UNINIT = 0, //Uninitialized PSSTATE_SCRIBBLE, //Scribble PSSTATE_ZOMBIE, //No scribble PSSTATE_HANDSOFF //Hand-off } PSSTATE; #endif #include "debug.h" #define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))