Listing 12 int_cdecl_purecall()


/* /////////////////////////////////////////////////////////////
 * ...
 *
 * Extract from purecall.c
 *
 * Copyright (C) 2002, Synesis Software Pty Ltd.
 * (Licensed under the Synesis Software Standard Source License:
 *  http://www.synesis.com.au/licenses/ssssl.html)
 *
 * ...
 * ////////////////////////////////////////////////////////// */

int __cdecl _purecall(void)
{
typedef int (WINAPI *PfnMsgBoxA)(HWND , LPCSTR , LPCSTR , UINT );

    HINSTANCE   hlib    =   LoadLibraryA("USER32.DLL");
    PfnMsgBoxA  pfn     =   (PfnMsgBoxA)GetProcAddress(hlib, 
                                    "MessageBoxA");

    if(pfn)
    {
        pfn(NULL,
            "A pure virtual function was called. "
            "This is a fatal error, and indicates "
            "a serious error in the implementation "
            "of the application",
            "PureCall",
            MB_ICONSTOP | MB_TASKMODAL);
    }

    ExitProcess(1);

    return 0;
}