// labdriv.cpp : driver for the Labrador sample // // This is a part of the ActiveX Template Library. // Copyright (C) 1996 Microsoft Corporation // All rights reserved. // // This source code is only intended as a supplement to the // ActiveX Template Library Reference and related // electronic documentation provided with the library. // See these sources for detailed information regarding the // ActiveX Template Library product. #include "prelabdr.h" /////////////////////////////////////////////////////////////// // helper to do print traces void _cdecl Trace(LPCTSTR lpszFormat, ...) { va_list args; va_start(args, lpszFormat); int nBuf; TCHAR szBuffer[512]; nBuf = _vstprintf(szBuffer, lpszFormat, args); _ASSERTE(nBuf < sizeof(szBuffer)); _tprintf(szBuffer); OutputDebugString(szBuffer); va_end(args); } // helper function to do the work void _cdecl CallLabrador() { USHORT szTmp[32]; Trace(_T("\nSTARTING\n=============================\n")); Trace(_T("Calling CoCreateInstance()...\n")); IMammalPtr pMammal(__uuidof(Labrador)); Trace(_T("Calling through IMammal methods...\n")); pMammal->GetSpeciesName(szTmp); Trace(_T("Species name is <%ls>\n"), szTmp); LONG bIsAlive; pMammal->IsAlive(&bIsAlive); if (bIsAlive) Trace(_T("And it's alive!\n")); else Trace(_T("And it's dead!\n")); IDogPtr pDog = pMammal; Trace(_T("Calling through IDog methods...\n")); LONG bIsBarking; pDog->GetPetName(szTmp); Trace(_T("Dog's name is <%ls>\n"), szTmp); pDog->IsBarking(&bIsBarking); if (bIsBarking) printf("BARK! BARK! BARK! BARK!\n"); pDog->SetPetName(L"KIVA"); pDog->GetPetName(szTmp); printf("Dog's New name is <%ls>\n", szTmp); Trace(_T("Releasing Objects\n")); pDog = 0; pMammal = 0; Trace(_T("\nDONE!!!\n=============================\n")); } int main( int argc, char *argv[ ]) { if (FAILED(CoInitialize(NULL))) return -1; CallLabrador(); #ifdef _DEBUG _CrtDumpMemoryLeaks(); #endif CoUninitialize(); return 0; }