home *** CD-ROM | disk | FTP | other *** search
- /* myhooks.c -- set up layers vector stealing */
-
- typedef LONG (*PFL)();
-
- struct hook {
- LONG hk_SysFunc;
- PFL hk_MyFunc;
- PFL hk_Entry; /* unique entry point */
- WORD hk_Test;
- LONG hk_LVO;
- };
-
- void drawShadowSignal();
-
- /* unique entry points */
- long entry0();
- long entry1();
- long entry2();
- long entry3();
- long entry4();
- long entry5();
- long entry6();
-
- struct hook myhooks[] = {
- { 0,
- (PFL) drawShadowSignal,
- entry0,
- 0,
- -48, /* upfront */
- },
- { 0,
- (PFL) drawShadowSignal,
- entry1,
- 0,
- -42 /* create behind */
- },
- { 0,
- (PFL) drawShadowSignal,
- entry2,
- 0,
- -36 /* create upfront */
- },
- { 0,
- (PFL) drawShadowSignal,
- entry3,
- 0,
- -90 /* delete */
- },
- { 0,
- (PFL) drawShadowSignal,
- entry4,
- 0,
- -54 /* behind */
- },
- { 0,
- (PFL) drawShadowSignal,
- entry5,
- 0,
- -66 /* size */
- },
- { 0,
- (PFL) drawShadowSignal,
- entry6,
- 0,
- -60 /* move */
- }
- };
-
- #define NUMHOOKS (sizeof (myhooks)/ sizeof (struct hook))
-
- extern long LayersBase;
-
- setup_hooks()
- {
- int i;
-
- /* install the hooks */
- Forbid();
- for (i = 0; i < NUMHOOKS; ++i)
- {
- myhooks[i].hk_SysFunc =
- SetFunction(LayersBase, myhooks[i].hk_LVO, myhooks[i].hk_Entry);
- }
- Permit();
- }
-
- cleanup_hooks()
- {
- int i;
-
- /* remove the hooks */
- /*** ZZZZ need to see if vectors are still mine ***/
- for (i = 0; i < NUMHOOKS; ++i)
- {
- SetFunction(LayersBase, myhooks[i].hk_LVO, myhooks[i].hk_SysFunc);
- }
-
- return (1); /* tell him it's ok to exit */
- }
-