initial
This commit is contained in:
51
public/wintab/wntab32x/xlibmod.h
Normal file
51
public/wintab/wntab32x/xlibmod.h
Normal file
@ -0,0 +1,51 @@
|
||||
#define MODULE_TEMPLATE2(mod, fname) \
|
||||
\
|
||||
\
|
||||
static HMODULE hMod = NULL; \
|
||||
static PROCDATA *pList = NULL; \
|
||||
\
|
||||
static TCHAR szMod[] = TEXT( #fname ); \
|
||||
\
|
||||
void __ ## mod ## dynlink(PROCDATA *p) \
|
||||
{ \
|
||||
PROCDATA *head; \
|
||||
\
|
||||
if (!hMod) { \
|
||||
UINT errmode = SetErrorMode(SEM_NOOPENFILEERRORBOX \
|
||||
| SEM_FAILCRITICALERRORS); \
|
||||
hMod = LoadLibrary(szMod); \
|
||||
SetErrorMode(errmode); \
|
||||
} \
|
||||
if (hMod) { \
|
||||
if (p->ord) \
|
||||
p->fp = GetProcAddress(hMod, (LPCSTR)(p->ord)); \
|
||||
else \
|
||||
p->fp = GetProcAddress(hMod, p->name); \
|
||||
} \
|
||||
if (p->fp) { \
|
||||
head = pList; \
|
||||
pList = p; \
|
||||
p->next = head; \
|
||||
} \
|
||||
} \
|
||||
\
|
||||
void __ ## mod ## unlink(void) \
|
||||
{ \
|
||||
if (hMod) { \
|
||||
FreeLibrary(hMod); \
|
||||
hMod = NULL; \
|
||||
\
|
||||
while(pList) { \
|
||||
PROCDATA *head; \
|
||||
pList->fp = NULL; \
|
||||
head = pList->next; \
|
||||
pList->next = NULL; \
|
||||
pList = head; \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
\
|
||||
void _Unlink ## mod(void) {__ ## mod ## unlink();}
|
||||
|
||||
#define MODULE_TEMPLATE(mod, fname) MODULE_TEMPLATE2(mod, fname)
|
||||
|
Reference in New Issue
Block a user