ANIDEFS.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:9k
源码类别:

Windows编程

开发平台:

Visual C++

  1. /*
  2.  * Common includes
  3.  *
  4.  */
  5. #include "anicur.h"
  6. #include "anidlgs.h"
  7. #include "animsg.h"
  8. /*
  9.  * Constants
  10.  *
  11.  */
  12. #define CMS_WAIT_FOR_PROCESS    (60 * 1000) // one minute
  13. #define AIM_PROCESSTERM         (WM_USER + 0x0FFF)
  14. #define AIM_SETCHILDAPP         (AIM_PROCESSTERM + 1)
  15. #define CCH_TITLE    80
  16. #define CCH_CREATOR  80
  17. #define CCH_JIF      10         /* Numbers are small even in German! */
  18. #define CTRL_C  (TEXT(('C' - 'A') + 1))
  19. #define CTRL_V  (TEXT(('V' - 'A') + 1))
  20. #define CTRL_X  (TEXT(('X' - 'A') + 1))
  21. #define TITL_ERROR  (DWORD)(-1)
  22. #define szPREVIEW   TEXT("AniEditPreviewClass")
  23. #define szBNTBAR    TEXT("AniEditBtnBarClass")
  24. #define PM_NEWCURSOR            (WM_USER + 0x4a50)
  25. #define PM_PAUSEANIMATION       (PM_NEWCURSOR + 1)
  26. #define PM_UNPAUSEANIMATION     (PM_NEWCURSOR + 2)
  27. #define PM_SETSTEP              (PM_NEWCURSOR + 3)
  28. #define ID_PREVIEWTIMER         (0x0050)
  29. #define MULTISEL        1       /* listbox is mutliple selction */
  30. /*
  31.  * Structure defintions
  32.  *
  33.  */
  34. typedef struct _FRAME *PFRAME;
  35. typedef struct _FRAME {
  36.     int         cRef;           /* refrence count */
  37.     int         iFrame;
  38.     PFRAME      pfrmNext;
  39.     DWORD       dwCheckSum;     /* checksum of the icon data.  Used to
  40.                                  * compare new imported icons against existing
  41.                                  * ones to see if we can sequence them.
  42.                                  */
  43.     HICON       hcur;           /* icon representation of raw data below */
  44.     WORD        xHotSpot;
  45.     WORD        yHotSpot;
  46.     RTAG        rtag;           /* icon chunk as it appears in file */
  47.     BYTE        abIcon[1];
  48. } FRAME;
  49. typedef struct _STEP *PSTEP;
  50. typedef struct _STEP {
  51.     JIF     jif;
  52.     PFRAME  pfrmFrame;
  53. } STEP;
  54. typedef struct _THDDATA {
  55.     HWND    hwndCaller;
  56.     HWND    hwndMonitor;
  57.     HANDLE  hprocMonitor;
  58. } THDDATA, *PTHDDATA;
  59. typedef struct _ANICUR {
  60.     ANIHEADER anih;
  61.     BOOL      fDirty;
  62.     CHAR      azTitle[CCH_TITLE];
  63.     CHAR      azCreator[CCH_CREATOR];
  64.     TCHAR     szFile[MAX_PATH];
  65. } ANICUR;
  66. typedef struct _CLPBRDDAT *PCLPBRDDAT;
  67. typedef struct _CLPBRDDAT {
  68.     PCLPBRDDAT pcbdNext;
  69.     STEP    stp;
  70. } CLPBRDDAT;
  71. //
  72. // Structure that contains data used within a preview window.  This
  73. // data is unique for each preview window, and is used to optimize
  74. // the painting.
  75. //
  76. typedef struct
  77. {
  78.     HDC hdcMem;
  79.     HBITMAP hbmMem;
  80.     HBITMAP hbmOld;
  81.     HICON   hcur;
  82.     DWORD   iFrame;
  83.     WORD    xHot;
  84.     WORD    yHot;
  85. } PREVIEWDATA, *PPREVIEWDATA;
  86. typedef struct {
  87.     int id;
  88.     int idSys;
  89. } RADIOCOLOR;
  90. /*
  91.  * Header of the resource file in the new format
  92.  */
  93. #pragma pack(2)
  94. typedef struct tagNEWHEADER {
  95.     WORD reserved;
  96.     WORD rt;
  97.     WORD cResources;
  98. } NEWHEADER, *LPNEWHEADER;
  99. typedef struct tagICONDIR {
  100.     BYTE Width;            /* 16, 32, 64 */
  101.     BYTE Height;           /* 16, 32, 64 */
  102.     BYTE ColorCount;       /* 2, 8, 16 */
  103.     BYTE reserved;
  104. } ICONDIR;
  105. typedef struct tagCURSORDIR {
  106.     WORD Width;
  107.     WORD Height;
  108. } CURSORDIR;
  109. typedef struct tagRESDIR {
  110.     union {
  111.         ICONDIR Icon;
  112.         CURSORDIR Cursor;
  113.     } ResInfo;
  114.     WORD Planes;
  115.     WORD BitCount;
  116.     DWORD BytesInRes;
  117.     WORD idIcon;
  118. } RESDIR;
  119. typedef RESDIR *LPRESDIR;
  120. typedef struct _ICONFILERESDIR {    // ird
  121.     BYTE bWidth;
  122.     BYTE bHeight;
  123.     BYTE bColorCount;
  124.     BYTE bReserved;
  125.     WORD xHotspot;
  126.     WORD yHotspot;
  127.     DWORD dwDIBSize;
  128.     DWORD dwDIBOffset;
  129. } ICONFILERESDIR;
  130. typedef struct tagCURSORRESOURCE {
  131.     WORD xHotspot;
  132.     WORD yHotspot;
  133.     BITMAPINFOHEADER bih;
  134. } CURSORRESOURCE, *PCURSORRESOURCE;
  135. #pragma pack()
  136. /*
  137.  * Globals
  138.  *
  139.  */
  140. extern HANDLE hInst;
  141. extern HWND ghwndMain;
  142. extern HWND ghwndLB;
  143. extern int gcyCursor, gcxCursor;
  144. extern HBRUSH ghbrHighlight, ghbrWindow, ghbrPrevBackgnd;
  145. extern COLORREF gcrHighlightText;
  146. extern ANICUR ganiAcon;
  147. extern TCHAR gszTempFile[];
  148. extern BOOL gfEditFrame;
  149. extern TCHAR gszWindowTitle[];
  150. extern TCHAR gszDots[];
  151. extern PFRAME   gpfrmFrames;
  152. extern PCLPBRDDAT gpbdClipBoard;
  153. extern TCHAR gszCursorEditor[MAX_PATH];
  154. extern int giradColor;
  155. RADIOCOLOR garadColor[];
  156. /*
  157.  * String table pointers
  158.  */
  159. extern LPTSTR gpszAniFilter;
  160. extern LPTSTR gpszImagEdit;
  161. extern LPTSTR gpszCUR;
  162. extern LPTSTR gpszANI;
  163. extern LPTSTR gpszUnknownError;
  164. extern LPTSTR gpszCurFilter;
  165. extern LPTSTR gpszUntitled;
  166. extern LPTSTR gpszImport;
  167. /*
  168.  * Macros
  169.  *
  170.  */
  171. #if 0
  172. #   include <stdio.h>
  173. #   define DPRINT(p)   if(1){ printf p; fflush(stdout); } else
  174. #else
  175. #   define DPRINT(p)
  176. #endif
  177. #define WRITEME(hwnd)       
  178.             MessageBox(hwnd, "This function is not yet implemented",    
  179.             NULL, MB_OK | MB_ICONSTOP)
  180. #define FALLTHRU(label)
  181. #define COUNTOF(sz)     (sizeof(sz) / sizeof((sz)[0]))
  182. #define FreeMem(pv)     LocalFree((HLOCAL)pv)
  183. #define IsValidPS(ps)   (((ps) != (PSTEP)LB_ERR) && ((ps) != NULL))
  184. #define PADUP(cb)       (((cb) + 1) & ~1)
  185. #define RET_CLOSE_IF_ERR( func, hf )  
  186.         if( !func ) {CloseHandle(hf); return FALSE;} else
  187. #define GetStep(hwnd, iSel) (PSTEP)SendDlgItemMessage(hwnd, 
  188.         DLG_MAIN_FRAMELIST, LB_GETITEMDATA, iSel, 0)
  189. #define GetStepCount(hwnd) SendDlgItemMessage(hwnd, 
  190.         DLG_MAIN_FRAMELIST, LB_GETCOUNT, 0, 0)
  191. #define GetSelStepCount(hwnd) SendDlgItemMessage(hwnd, 
  192.         DLG_MAIN_FRAMELIST, LB_GETSELCOUNT, 0, 0)
  193. #define ResumePreview(hwnd, id) 
  194.     SendDlgItemMessage(hwnd, id, PM_UNPAUSEANIMATION, 0, 0)
  195. #define PausePreview(hwnd, id) 
  196.     SendDlgItemMessage(hwnd, id, PM_PAUSEANIMATION, 0, 0)
  197. #define SetPreviewStep(hwnd, id, iStep) 
  198.     SendDlgItemMessage(hwnd, id, PM_SETSTEP, iStep, 0)
  199. #define PreviewCursor(hwnd, id) 
  200.     SendDlgItemMessage(hwnd, id, PM_NEWCURSOR, 0, 0)
  201. #define FmtFree( psz ) if((psz) != gszDots) LocalFree(psz); else
  202. #define UpdateStepSel( hWnd )                                    
  203.     SendMessage(hWnd, WM_COMMAND, MAKEWPARAM( DLG_MAIN_FRAMELIST, 
  204.             LBN_SELCHANGE), (LPARAM)(GetDlgItem(hWnd,             
  205.             DLG_MAIN_FRAMELIST)))
  206. #define SetStepSel(hWnd, iMin, iMax)    (               
  207.     SendDlgItemMessage(hWnd, DLG_MAIN_FRAMELIST,        
  208.             LB_SELITEMRANGE, TRUE, MAKELPARAM((iMin), (iMax))), 
  209.     UpdateStepSel(hWnd)                                 
  210. )
  211. /*
  212.  * Function Prototypes
  213.  *
  214.  */
  215. /*
  216.  * In aniedit.c
  217.  */
  218. BOOL InitApplication(HANDLE);
  219. BOOL InitInstance(HANDLE, int);
  220. INT  APIENTRY GetHeightFromPoints( int pts);
  221. BOOL APIENTRY MainWndProc(HWND hWnd, UINT message, UINT wParam, LONG lParam);
  222. void DrawCursorListItem( DRAWITEMSTRUCT *pdis );
  223. int FmtMessageBox( HWND hwnd, DWORD dwTitleID, LPTSTR pszTitleStr,
  224.     UINT fuStyle, BOOL fSound, DWORD dwTextID, ... );
  225. LPTSTR FmtSprintf( DWORD id, ... );
  226. PVOID AllocMem( DWORD cb );
  227. LRESULT CALLBACK PreviewWndProc( HWND hwnd, UINT msg, WPARAM wParam,
  228.         LPARAM lParam );
  229. VOID NextFrame( HWND hwnd, BOOL fRun );
  230. VOID SetWindowFileTitle(HWND hWnd, LPTSTR szFileTitle);
  231. void AniAddFontModule(HINSTANCE hInst);
  232. VOID ReadRegistry( VOID );
  233. VOID WriteRegistry( VOID );
  234. LRESULT CALLBACK BtnBarWndProc( HWND hwnd, UINT msg, WPARAM wParam,
  235.         LPARAM lParam);
  236. #ifdef DBCS
  237. BOOL LoadResourceStr( VOID );
  238. #endif
  239. /*
  240.  * In anicmd.c
  241.  */
  242. void LoadAniFile(HWND hWnd, HANDLE hfCursor, LPTSTR szFileTitle, LPTSTR szFile);
  243. BOOL DoCommand( HWND hWnd, UINT wParam, LONG lParam );
  244. VOID ExitCommand(HWND hWnd);
  245. BOOL CheckDirty(HWND hWnd);
  246. void NewAniCursor( HWND hwnd );
  247. BOOL ExecProgram( HWND hwndCaller, LPTSTR pszCmdLine );
  248. BOOL GetCurrentSel( HWND hwnd, int id, int *paiSel, int ciSel, int *pcSel );
  249. VOID SetCurrentSel( HWND hwnd, int id, BOOL fExtend, int iSel);
  250. VOID EditFrame(HWND hWnd, BOOL fEditFrame);
  251. PSTEP NewStep( void );
  252. VOID DestroyStep( PSTEP ps );
  253. VOID CopyStep( PSTEP psDst, PSTEP psSrc );
  254. VOID LinkStepFrame(PSTEP ps, PFRAME pf );
  255. VOID DestroyFrame( PFRAME pf );
  256. PCLPBRDDAT NewClpBrdDat( void );
  257. VOID DestroyClpBrdDat(PCLPBRDDAT pcbd);
  258. int __cdecl RevCompInts(const void *elm1, const void *elm2);
  259. BOOL APIENTRY About(HWND, UINT, UINT, LONG);
  260. BOOL APIENTRY OptionsProc( HWND hDlg, UINT message, UINT wParam, LONG lParam);
  261. void ClearStepSel( HWND hWnd );
  262. /*
  263.  * In anifile.c
  264.  */
  265. BOOL CreateFrameFromCursorFile(HWND hwnd,  LPTSTR pszFile, BOOL fEdit);
  266. HANDLE PromptAndOpenFile( HWND hwnd, DWORD  cchFileTitle, LPTSTR pszFileTitle,
  267.     DWORD cchFileName, LPTSTR pszFileName, LPTSTR pszFilter);
  268. BOOL PromptForFile( HWND hwnd, DWORD  cchFileTitle, LPTSTR pszFileTitle,
  269.     DWORD  cchFileName, LPTSTR pszFile, LPTSTR pszFilter, LPTSTR pszDlgTitle,
  270.     BOOL fSave );
  271. BOOL ReadAniFile( HWND hwnd, HANDLE hf );
  272. PFRAME ReadIconFromFile(HWND hwnd, HANDLE hf, DWORD ckSize);
  273. BOOL ReadTag( HANDLE hf, PRTAG ptag);
  274. BOOL ReadChunk( HANDLE hf, PRTAG ptag, PVOID pv);
  275. BOOL ReadChunkN( HANDLE hf, PRTAG ptag, PVOID pv, DWORD cbMax);
  276. BOOL SkipChunk( HANDLE hf, PRTAG ptag);
  277. DWORD CalcCheckSum( PBYTE pb, DWORD cb );
  278. HICON ConvertDataToIcon( PFRAME pf, WORD *pxHotSave, WORD *pyHotSave );
  279. BOOL GetTempCursorFileName( LPTSTR pszName );
  280. BOOL SaveAniFile( HWND hwnd, HANDLE hf );
  281. BOOL WriteTag(HANDLE hf, PRTAG prtag);
  282. BOOL WriteType(HANDLE hf, FOURCC ckID );
  283. BOOL WriteTagData(HANDLE hf, PRTAG prtag, VOID *pvData );
  284. VOID SaveFile(HWND hwnd, BOOL fPrompt);