⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vfwmod.h

📁 用于机器人自动低分辨路的地图测绘程序。用于机器人控制测绘。分为远端控制端和本地控制端。控制电机为标准舵机。
💻 H
📖 第 1 页 / 共 5 页
字号:
    // return nonzero means abort operation in progress    LONG (CALLBACK *Status) (LPARAM lParam, UINT message, LONG l);} ICSETSTATUSPROC;/************************************************************************************************************************************************/#define ICDECOMPRESS_HURRYUP      0x80000000L   // don't draw just buffer (hurry up!)#define ICDECOMPRESS_UPDATE       0x40000000L   // don't draw just update screen#define ICDECOMPRESS_PREROLL      0x20000000L   // this frame is before real start#define ICDECOMPRESS_NULLFRAME    0x10000000L   // repeat last frame#define ICDECOMPRESS_NOTKEYFRAME  0x08000000L   // this frame is not a key frametypedef struct {    DWORD               dwFlags;    // flags (from AVI index...)    LPBITMAPINFOHEADER  lpbiInput;  // BITMAPINFO of compressed data                                    // biSizeImage has the chunk size    LPVOID              lpInput;    // compressed data    LPBITMAPINFOHEADER  lpbiOutput; // DIB to decompress to    LPVOID              lpOutput;    DWORD		ckid;	    // ckid from AVI file} ICDECOMPRESS;typedef struct {    //    // same as ICM_DECOMPRESS    //    DWORD               dwFlags;    LPBITMAPINFOHEADER  lpbiSrc;    // BITMAPINFO of compressed data    LPVOID              lpSrc;      // compressed data    LPBITMAPINFOHEADER  lpbiDst;    // DIB to decompress to    LPVOID              lpDst;      // output data    //    // new for ICM_DECOMPRESSEX    //    int                 xDst;       // destination rectangle    int                 yDst;    int                 dxDst;    int                 dyDst;    int                 xSrc;       // source rectangle    int                 ySrc;    int                 dxSrc;    int                 dySrc;} ICDECOMPRESSEX;/************************************************************************************************************************************************/#define ICDRAW_QUERY        0x00000001L   // test for support#define ICDRAW_FULLSCREEN   0x00000002L   // draw to full screen#define ICDRAW_HDC          0x00000004L   // draw to a HDC/HWND#define ICDRAW_ANIMATE	    0x00000008L	  // expect palette animation#define ICDRAW_CONTINUE	    0x00000010L	  // draw is a continuation of previous draw#define ICDRAW_MEMORYDC	    0x00000020L	  // DC is offscreen, by the way#define ICDRAW_UPDATING	    0x00000040L	  // We're updating, as opposed to playing#define ICDRAW_RENDER       0x00000080L   // used to render data not draw it#define ICDRAW_BUFFER       0x00000100L   // please buffer this data offscreen, we will need to update ittypedef struct {    DWORD               dwFlags;        // flags    HPALETTE            hpal;           // palette to draw with    HWND                hwnd;           // window to draw to    HDC                 hdc;            // HDC to draw to    int                 xDst;           // destination rectangle    int                 yDst;    int                 dxDst;    int                 dyDst;    LPBITMAPINFOHEADER  lpbi;           // format of frame to draw    int                 xSrc;           // source rectangle    int                 ySrc;    int                 dxSrc;    int                 dySrc;    DWORD               dwRate;         // frames/second = (dwRate/dwScale)    DWORD               dwScale;} ICDRAWBEGIN;/************************************************************************************************************************************************/#define ICDRAW_HURRYUP      0x80000000L   // don't draw just buffer (hurry up!)#define ICDRAW_UPDATE       0x40000000L   // don't draw just update screen#define ICDRAW_PREROLL	    0x20000000L	  // this frame is before real start#define ICDRAW_NULLFRAME    0x10000000L	  // repeat last frame#define ICDRAW_NOTKEYFRAME  0x08000000L   // this frame is not a key frametypedef struct {    DWORD               dwFlags;        // flags    LPVOID		lpFormat;       // format of frame to decompress    LPVOID              lpData;         // frame data to decompress    DWORD               cbData;    LONG                lTime;          // time in drawbegin units (see dwRate and dwScale)} ICDRAW;typedef struct {    LPBITMAPINFOHEADER	lpbiIn;		// format to be drawn    LPBITMAPINFOHEADER	lpbiSuggest;	// location for suggested format (or NULL to get size)    int			dxSrc;		// source extent or 0    int			dySrc;    int			dxDst;		// dest extent or 0    int			dyDst;    HIC			hicDecompressor;// decompressor you can talk to} ICDRAWSUGGEST;/************************************************************************************************************************************************/typedef struct {    DWORD               dwFlags;    // flags (from AVI index...)    int                 iStart;     // first palette to change    int                 iLen;       // count of entries to change.    LPPALETTEENTRY      lppe;       // palette} ICPALETTE;/************************************************************************    ICM function declarations	************************************************************************/BOOL    VFWAPI ICInfo(DWORD fccType, DWORD fccHandler, ICINFO FAR * lpicinfo);BOOL    VFWAPI ICInstall(DWORD fccType, DWORD fccHandler, LPARAM lParam, LPSTR szDesc, UINT wFlags);BOOL    VFWAPI ICRemove(DWORD fccType, DWORD fccHandler, UINT wFlags);LRESULT VFWAPI ICGetInfo(HIC hic, ICINFO FAR *picinfo, DWORD cb);HIC     VFWAPI ICOpen(DWORD fccType, DWORD fccHandler, UINT wMode);HIC     VFWAPI ICOpenFunction(DWORD fccType, DWORD fccHandler, UINT wMode, FARPROC lpfnHandler);LRESULT VFWAPI ICClose(HIC hic);LRESULT VFWAPI  ICSendMessage(HIC hic, UINT msg, DWORD dw1, DWORD dw2);#ifndef _WIN32//this function is unsupported on Win32 as it is non-portable.LRESULT VFWAPIV ICMessage(HIC hic, UINT msg, UINT cb, ...);#endif/* Values for wFlags of ICInstall() */#define ICINSTALL_UNICODE       0x8000#define ICINSTALL_FUNCTION      0x0001  // lParam is a DriverProc (function ptr)#define ICINSTALL_DRIVER        0x0002  // lParam is a driver name (string)#define ICINSTALL_HDRV          0x0004  // lParam is a HDRVR (driver handle)#define ICINSTALL_DRIVERW       0x8002  // lParam is a unicode driver name/************************************************************************    query macros************************************************************************/#define ICMF_CONFIGURE_QUERY     0x00000001#define ICMF_ABOUT_QUERY         0x00000001#define ICQueryAbout(hic) \    (ICSendMessage(hic, ICM_ABOUT, (DWORD) -1, ICMF_ABOUT_QUERY) == ICERR_OK)#define ICAbout(hic, hwnd) \    ICSendMessage(hic, ICM_ABOUT, (DWORD)(UINT)(hwnd), 0)#define ICQueryConfigure(hic) \    (ICSendMessage(hic, ICM_CONFIGURE, (DWORD) -1, ICMF_CONFIGURE_QUERY) == ICERR_OK)#define ICConfigure(hic, hwnd) \    ICSendMessage(hic, ICM_CONFIGURE, (DWORD)(UINT)(hwnd), 0)/************************************************************************    get/set state macros	************************************************************************/#define ICGetState(hic, pv, cb) \    ICSendMessage(hic, ICM_GETSTATE, (DWORD)(LPVOID)(pv), (DWORD)(cb))#define ICSetState(hic, pv, cb) \    ICSendMessage(hic, ICM_SETSTATE, (DWORD)(LPVOID)(pv), (DWORD)(cb))#define ICGetStateSize(hic) \    ICGetState(hic, NULL, 0)/************************************************************************    get value macros************************************************************************/static DWORD dwICValue;#define ICGetDefaultQuality(hic) \    (ICSendMessage(hic, ICM_GETDEFAULTQUALITY, (DWORD)(LPVOID)&dwICValue, sizeof(DWORD)), dwICValue)#define ICGetDefaultKeyFrameRate(hic) \    (ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, (DWORD)(LPVOID)&dwICValue, sizeof(DWORD)), dwICValue)/************************************************************************    draw window macro	************************************************************************/#define ICDrawWindow(hic, prc) \    ICSendMessage(hic, ICM_DRAW_WINDOW, (DWORD)(LPVOID)(prc), sizeof(RECT))/************************************************************************    compression functions************************************************************************//* *  ICCompress() * *  compress a single frame * */DWORD VFWAPIV ICCompress(    HIC                 hic,    DWORD               dwFlags,        // flags    LPBITMAPINFOHEADER  lpbiOutput,     // output format    LPVOID              lpData,         // output data    LPBITMAPINFOHEADER  lpbiInput,      // format of frame to compress    LPVOID              lpBits,         // frame data to compress    LPDWORD             lpckid,         // ckid for data in AVI file    LPDWORD             lpdwFlags,      // flags in the AVI index.    LONG                lFrameNum,      // frame number of seq.    DWORD               dwFrameSize,    // reqested size in bytes. (if non zero)    DWORD               dwQuality,      // quality within one frame    LPBITMAPINFOHEADER  lpbiPrev,       // format of previous frame    LPVOID              lpPrev);        // previous frame/* *  ICCompressBegin() * *  start compression from a source format (lpbiInput) to a dest *  format (lpbiOuput) is supported. * */#define ICCompressBegin(hic, lpbiInput, lpbiOutput) \    ICSendMessage(hic, ICM_COMPRESS_BEGIN, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))/* *  ICCompressQuery() * *  determines if compression from a source format (lpbiInput) to a dest *  format (lpbiOuput) is supported. * */#define ICCompressQuery(hic, lpbiInput, lpbiOutput) \    ICSendMessage(hic, ICM_COMPRESS_QUERY, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))/* *  ICCompressGetFormat() * *  get the output format, (format of compressed data) *  if lpbiOutput is NULL return the size in bytes needed for format. * */#define ICCompressGetFormat(hic, lpbiInput, lpbiOutput) \    ICSendMessage(hic, ICM_COMPRESS_GET_FORMAT, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))#define ICCompressGetFormatSize(hic, lpbi) \    ICCompressGetFormat(hic, lpbi, NULL)/* *  ICCompressSize() * *  return the maximal size of a compressed frame * */#define ICCompressGetSize(hic, lpbiInput, lpbiOutput) \    ICSendMessage(hic, ICM_COMPRESS_GET_SIZE, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))#define ICCompressEnd(hic) \    ICSendMessage(hic, ICM_COMPRESS_END, 0, 0)/************************************************************************    decompression functions************************************************************************//* *  ICDecompress() * *  decompress a single frame * */#define ICDECOMPRESS_HURRYUP    0x80000000L     // don't draw just buffer (hurry up!)DWORD VFWAPIV ICDecompress(    HIC                 hic,    DWORD               dwFlags,    // flags (from AVI index...)    LPBITMAPINFOHEADER  lpbiFormat, // BITMAPINFO of compressed data                                    // biSizeImage has the chunk size    LPVOID              lpData,     // data    LPBITMAPINFOHEADER  lpbi,       // DIB to decompress to    LPVOID              lpBits);/* *  ICDecompressBegin() * *  start compression from a source format (lpbiInput) to a dest *  format (lpbiOutput) is supported. * */#define ICDecompressBegin(hic, lpbiInput, lpbiOutput) \    ICSendMessage(hic, ICM_DECOMPRESS_BEGIN, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))/* *  ICDecompressQuery() * *  determines if compression from a source format (lpbiInput) to a dest *  format (lpbiOutput) is supported. * */#define ICDecompressQuery(hic, lpbiInput, lpbiOutput) \    ICSendMessage(hic, ICM_DECOMPRESS_QUERY, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))/* *  ICDecompressGetFormat() * *  get the output format, (format of un-compressed data) *  if lpbiOutput is NULL return the size in bytes needed for format. * */#define ICDecompressGetFormat(hic, lpbiInput, lpbiOutput) \    ((LONG) ICSendMessage(hic, ICM_DECOMPRESS_GET_FORMAT, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput)))#define ICDecompressGetFormatSize(hic, lpbi) \    ICDecompressGetFormat(hic, lpbi, NULL)/* *  ICDecompressGetPalette() * *  get the output palette * */#define ICDecompressGetPalette(hic, lpbiInput, lpbiOutput) \    ICSendMessage(hic, ICM_DECOMPRESS_GET_PALETTE, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))#define ICDecompressSetPalette(hic, lpbiPalette) \    ICSendMessage(hic, ICM_DECOMPRESS_SET_PALETTE, (DWORD)(LPVOID)(lpbiPalette), 0)#define ICDecompressEnd(hic) \    ICSendMessage(hic, ICM_DECOMPRESS_END, 0, 0)/************************************************************************    decompression (ex) functions************************************************************************///// on Win16 these functions are macros that call ICMessage. ICMessage will// not work on NT. rather than add new entrypoints we have given// them as static inline functions///* *  ICDecompressEx() * *  decompress a single frame * */static __inline LRESULT VFWAPIICDecompressEx(            HIC hic,            DWORD dwFlags,            LPBITMAPINFOHEADER lpbiSrc,            LPVOID lpSrc,            int xSrc,            int ySrc,            int dxSrc,            int dySrc,            LPBITMAPINFOHEADER lpbiDst,            LPVOID lpDst,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -