home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tricks of the Windows Gam…ming Gurus (2nd Edition)
/
Disc2.iso
/
msdn_vcb
/
samples
/
vc98
/
sdk
/
graphics
/
video
/
textout
/
drvproc.c
next >
Wrap
C/C++ Source or Header
|
1997-10-05
|
4KB
|
169 lines
/**************************************************************************
*
* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
* KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
* PURPOSE.
*
* Copyright (C) 1992 - 1997 Microsoft Corporation. All Rights Reserved.
*
**************************************************************************/
/****************************************************************************
*
* drvproc.c
*
***************************************************************************/
#include <windows.h>
#include <windowsx.h>
#include <mmsystem.h>
#include <vfw.h>
#include "TxtOut.h"
HMODULE ghModule;
/***************************************************************************
*
* DriverProc The entry point for an installable driver.
*
***************************************************************************/
LRESULT WINAPI DriverProc(
DWORD dwDriverID,
HDRVR hDriver,
UINT uiMessage,
LPARAM lParam1,
LPARAM lParam2)
{
INSTINFO *pi = (INSTINFO *)(UINT)dwDriverID;
switch (uiMessage)
{
case DRV_LOAD:
return (LRESULT) Load();
case DRV_FREE:
Free();
return (LRESULT)1L;
case DRV_OPEN:
// if being opened with no open struct, then return a non-zero
// value without actually opening
if (lParam2 == 0L)
return 0xFFFF0000;
return (LRESULT)(DWORD)(UINT)Open((ICOPEN FAR *) lParam2);
case DRV_CLOSE:
if (dwDriverID != 0xFFFF0000)
Close(pi);
return (LRESULT)1L;
/*********************************************************************
state messages
*********************************************************************/
case DRV_QUERYCONFIGURE: // configuration from drivers applet
return (LRESULT)0L;
case DRV_CONFIGURE:
return DRV_OK;
case ICM_CONFIGURE:
//
// return ICERR_OK if you will do a configure box, error otherwise
//
if (lParam1 == -1)
return QueryConfigure(pi) ? ICERR_OK : ICERR_UNSUPPORTED;
else
return Configure(pi, (HWND)lParam1);
case ICM_ABOUT:
//
// return ICERR_OK if you will do a about box, error otherwise
//
if (lParam1 == -1)
return QueryAbout(pi) ? ICERR_OK : ICERR_UNSUPPORTED;
else
return About(pi, (HWND)lParam1);
case ICM_GETSTATE:
return GetState(pi, (LPVOID)lParam1, (DWORD)lParam2);
case ICM_SETSTATE:
return SetState(pi, (LPVOID)lParam1, (DWORD)lParam2);
case ICM_GETINFO:
return GetInfo(pi, (ICINFO FAR *)lParam1, (DWORD)lParam2);
/*********************************************************************
draw messages
*********************************************************************/
case ICM_DRAW_QUERY:
return DrawQuery(pi, (LPVOID FAR *)lParam1);
case ICM_DRAW_BEGIN:
return DrawBegin(pi,(ICDRAWBEGIN FAR *)lParam1, (DWORD)lParam2);
case ICM_DRAW:
return Draw(pi,(ICDRAW FAR *)lParam1, (DWORD)lParam2);
case ICM_DRAW_END:
return DrawEnd(pi);
/*********************************************************************
standard driver messages
*********************************************************************/
case DRV_DISABLE:
case DRV_ENABLE:
return (LRESULT)1L;
case DRV_INSTALL:
case DRV_REMOVE:
return (LRESULT)DRV_OK;
}
if (uiMessage < DRV_USER)
return DefDriverProc(dwDriverID, hDriver, uiMessage,
lParam1,lParam2);
else
return ICERR_UNSUPPORTED;
}
/****************************************************************************
*
* DllMain Library initialization code.
*
***************************************************************************/
APIENTRY DllMain(HANDLE, DWORD, LPVOID);
APIENTRY DllMain(
HANDLE hModule,
DWORD dwReason,
LPVOID lpReserved )
{
switch( dwReason)
{
case DLL_PROCESS_ATTACH:
if(ghModule == NULL)
ghModule = (HMODULE)hModule;
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}