windows-nt/Source/XPSP1/NT/multimedia/media/avi/inc/wrkbench.h
2020-09-26 16:20:57 +08:00

246 lines
7.6 KiB
C

/* (C) Copyright Microsoft Corporation 1991. All rights reserved. */
/*
* WORKBENCH INCLUDE FILE
*
* This is the public include for the workbench. All workbench client
* applications and handler DLLs will need to include this file.
*
* The following must be included before this file:
* windows.h
* wincom.h
* mediaman.h
*
*/
#ifndef _WRKBENCH_H_
#define _WRKBENCH_H_
#ifndef EXPORT
#define EXPORT FAR PASCAL
#endif
/******* VERSION FOR USE IN INFO STRUCTURES *******/
#define WRK_VERSION 0x100
/******* RANDOM FUNCTIONS *******/
BOOL EXPORT wrkClientInit( void );
BOOL EXPORT wrkClientExit( void );
WORD EXPORT wrkGetVariable(WORD w);
BOOL EXPORT wrkSetVariable(WORD w, WORD wVariable);
BOOL EXPORT wrkLoadDll(LPSTR lpszDllName);
HWND EXPORT wrkCreateIntroWindow(HANDLE hInstApp,
WORD wString1Id,
WORD wString2Id,
WORD wString3Id,
WORD wBitmapId);
BOOL EXPORT wrkDestroyIntroWindow(HWND hwndIntro);
VOID EXPORT wrkShowAboutDialog(HANDLE hInstApp,
HWND hwndParent,
WORD wCaptionId,
WORD wString1Id,
WORD wString2Id,
WORD wString3Id,
WORD wBitmapId);
#define WRKV_DEBUG 0
#define WRKV_CONFIRMCONVERT 2
#define WRKV_HINSTWORKBENCH 4
/********* EXTENSION LIST *********/
typedef DWORD EXTENSION;
typedef HANDLE ExtensionList;
WORD EXPORT wrkGetExtSize(ExtensionList extList);
EXTENSION EXPORT wrkGetExtElement(ExtensionList extList,
WORD wElement);
WORD EXPORT wrkGetExtString(ExtensionList extList,
LPSTR lpszBuf, WORD wSize);
EXTENSION EXPORT wrkStringToExtension(LPSTR lpszString);
BOOL EXPORT wrkExtInList(ExtensionList extList,
EXTENSION extension);
/********* INSTALLED TOOL FUNCTIONS *************/
#ifndef _WRKI_H_
typedef HANDLE InstalledTool;
#endif
InstalledTool EXPORT wrkRegisterLoader(HANDLE hModDll,
MEDTYPE typeModule, MEDTYPE typeLogical,
LPSTR lpszExtensions, LPSTR lpszTitle, WORD wFlags);
InstalledTool EXPORT wrkRegisterHandler(HANDLE hModDll, MEDTYPE typeLogical,
LPSTR lpszTitle, WORD wFlags);
InstalledTool EXPORT wrkRegisterUtility(LPSTR lpszExeName,
LPSTR lpszTitle, WORD wFlags);
InstalledTool EXPORT wrkRegisterEditor(LPSTR lpszExeName, MEDTYPE typeLogical,
LPSTR lpszTitle, WORD wFlags);
InstalledTool EXPORT wrkIterTools(InstalledTool instTool, WORD wType);
InstalledTool EXPORT wrkVerifyHandler(MEDTYPE typeLogical, LPSTR lpszSuggest);
BOOL EXPORT wrkRealizeModule(InstalledTool tool);
/* Defined tool/module types - for wrkIterTools */
#define TOOL_LOADER 0x0001
#define TOOL_EDITOR 0x0002
#define TOOL_HANDLER 0x0004
#define TOOL_UTILITY 0x0008
#define TOOL_PROCTOOL 0x0010 // not implemented!
#define TOOL_ALLTYPES 0xffff
/* Flags for registerLoader */
#define LOADF_DOESLOAD 0x0001
#define LOADF_DOESSAVE 0x0002
#define LOADF_FILEBASED 0x0004
#define LOADF_CONVERTTOOL 0x0008
#define LOADF_MANAGERTOOL 0x0010
/******* Installed tool Information functions *******/
typedef struct _InstalledToolInfo {
WORD wVersion;
WORD wType;
WORD wFlags;
WORD wUsage;
MEDTYPE typeModule;
MEDTYPE typeLogical;
ExtensionList exten;
} InstalledToolInfo;
typedef InstalledToolInfo FAR *FPInstalledToolInfo;
BOOL EXPORT wrkGetToolInfo(InstalledTool tool, FPInstalledToolInfo fpInfo);
WORD EXPORT wrkGetToolType(InstalledTool tool);
BOOL EXPORT wrkGetToolTitle(InstalledTool tool, LPSTR lpszBuf, WORD wLen);
BOOL EXPORT wrkGetToolModname(InstalledTool tool, LPSTR lpszBuf, WORD wLen);
BOOL EXPORT wrkGetLogicalExtensions(MEDTYPE typeLogical, WORD wFlags,
LPSTR lpszBuf, WORD wLen);
/******* TOOL ARRAY FUNCTIONS *******/
#ifndef _WRKI_H_
typedef WORD ToolArray;
#endif
ToolArray EXPORT wrkCreateToolArray(WORD wSize);
BOOL EXPORT wrkDestroyToolArray(ToolArray toolArr);
WORD EXPORT wrkAddToToolArray(ToolArray toolArr,
InstalledTool tool, BOOL fNoDup);
WORD EXPORT wrkGetToolArraySize(ToolArray toolArr);
InstalledTool EXPORT wrkGetToolArrayEntry(ToolArray toolArr, WORD wIndex);
WORD EXPORT wrkToolChooseDlg(HWND hwnd, ToolArray toolArr, WORD wInitial,
LPSTR lpszTitle, LPSTR lpszFirst, WORD wFlags);
#define TCD_NOSELECTION 0xffff
/******* INSTANCE FUNCTIONS ********/
typedef HANDLE ToolInstance;
ToolInstance EXPORT wrkAddInstance(InstalledTool toolHandle, HWND hwnd,
LPSTR lpszInstTitle, WORD wFlags);
BOOL EXPORT wrkRemoveInstance(ToolInstance toolInst);
LONG EXPORT wrkInstSendMessage(ToolInstance toolInst, unsigned msg,
WORD wParam, LONG lParam);
BOOL EXPORT wrkInstPostMessage(ToolInstance toolInst, unsigned msg,
WORD wParam, LONG lParam);
BOOL EXPORT wrkBroadcastMessage(BOOL fPost, unsigned msg,
WORD wParam, LONG lParam);
ToolInstance EXPORT wrkGetNextInst(ToolInstance toolInst);
/* Tool instance info functions */
typedef struct _ToolInstanceInfo {
WORD wVersion;
WORD wAction;
InstalledTool toolClass;
WORD wInstFlags;
HWND hwndTool;
} ToolInstanceInfo;
typedef ToolInstanceInfo FAR *FPToolInstanceInfo;
/* Action codes for wrkSetInstInfo structure */
#define WRKINFO_INSTFLAGS 0x0002
#define WRKINFO_HWND 0x0008
#define WRKINFO_ALL 0x00FF
InstalledTool EXPORT wrkGetInstToolType(ToolInstance toolInst);
BOOL EXPORT wrkSetInstInfo(ToolInstance toolInst, FPToolInstanceInfo fpInfo);
BOOL EXPORT wrkGetInstInfo(ToolInstance toolInst, FPToolInstanceInfo fpInfo);
BOOL EXPORT wrkSetInstTitle(ToolInstance toolInst, LPSTR lpszInstTitle);
BOOL EXPORT wrkGetInstTitle(ToolInstance toolInst, LPSTR lpszBuf, WORD wLen);
/* Flags for SetInstInfo & AddInstance */
#define WRK_NOINSTNOTIFY 0x0001
/********* RESOURCE ACCESS **************/
WORD EXPORT wrkOpenFilename(LPSTR lpszFilename, FPMedReturn medReturn,
MEDTYPE typeLogical, WORD wFlags, HWND hwnd, LPSTR lpszTitle);
WORD EXPORT wrkOpenDialog(FPMedReturn medReturn, MEDTYPE typeLogical,
WORD wFlags, HWND hwnd, LPSTR lpszTitle);
WORD EXPORT wrkSaveDialog(MEDID medid, FPMedReturn medReturn,
WORD wFlags, HWND hwnd, LPSTR lpszTitle);
BOOL EXPORT wrkShowResError(HWND hwnd, LPSTR lpszTitle);
/* Flags for FileLoading/Saving functions */
#define WRK_SHOWERROR 0x0001
#define WRK_SAVEASDIALOG 0x0002
#define WRK_NONSHARED 0x2000
#define WRK_SHAREDONLY 0x1000
/********* TOOL INSTANCE STARTING *********/
ToolInstance EXPORT wrkRunTool(InstalledTool tool, LPSTR lpszArguments,
WORD wCmdShow, HWND hwndParent, WORD wFlags);
#define WRK_NOGETINSTHANDLE 0x0080
/*
* Messages sent to client tools
*/
#define WRK_MINMESSAGE 0xB000
#define WRK_MAXMESSAGE 0xBFFF
/* Notification messages */
#define WRK_NEWINSTANCE (WRK_MINMESSAGE + 3)
#define WRK_DELETEINSTANCE (WRK_MINMESSAGE + 4)
#define WRK_CHANGEINSTANCE (WRK_MINMESSAGE + 5)
#define WRK_NEWTOOL (WRK_MINMESSAGE + 6)
#define WRK_DELETETOOL (WRK_MINMESSAGE + 7)
/* Control messages - instance related */
#define WRK_CLOSEINST (WRK_MINMESSAGE + 10)
#define WRK_ACTIVATEINST (WRK_MINMESSAGE + 11)
#define WRK_DEACTIVATEINST (WRK_MINMESSAGE + 12)
/* Control messages - resource related */
#define WRK_SETRESOURCE (WRK_MINMESSAGE + 19)
/* Flags for WRK_CHANGEINSTANCE message */
#define WRKINST_FLAGS 1L
#define WRKINST_TITLE 4L
#define WRKINST_HWND 8L
/*
* Workbench Error messages
*/
#define WRKERR_NOERROR (MMERR_MAXERROR + 0)
#define WRKERR_NOPROFWRITE (MMERR_MAXERROR + 1)
#define WRKERR_HANDLERNOTAVAIL (MMERR_MAXERROR + 10)
#define WRKERR_COULDNOTLOADMOD (MMERR_MAXERROR + 11)
#define WRKERR_USERCANCEL (MMERR_MAXERROR + 12)
#define WRKERR_NOLOADERSAVAIL (MMERR_MAXERROR + 13)
#define WRKERR_COULDNOTRUNTOOL (MMERR_MAXERROR + 14)
#define WRKERR_NOSAVERSAVAIL (MMERR_MAXERROR + 15)
#define WRKERR_UNNAMEDRES (MMERR_MAXERROR + 16)
#define WRKERR_NOCONVERTTOOL (MMERR_MAXERROR + 17)
#define WRKERR_ALREADYACCESSED (MMERR_MAXERROR + 18)
/* This endif must be the last line of the file */
#endif /* _WRKBENCH_H_ */