📄 stopwatchclient.cpp
字号:
#include "iostream.h"
#include ".\timers\Stopwatch.h"
#include ".\timers\timers_i.c"
#include ".\timers\StopwatchClassFactory.h"
#define TIMERSDLL "..\\timers\\debug\\Timers.DLL"
typedef HRESULT (_stdcall *DLLGETCLASSOBJECT)(REFCLSID rclsid, REFIID riid,LPVOID* ppv);
typedef HRESULT (_stdcall *DLLCANUNLOADNOW)(VOID);
HINSTANCE hinstDll;
HRESULT CreateInstance(REFCLSID rclsid, REFIID riid,void** ppv)
{
HRESULT hr=E_FAIL;
DLLGETCLASSOBJECT DllGetClassObject;
IClassFactory *pClassFactory;
hinstDll = LoadLibrary(TIMERSDLL);
if (hinstDll==NULL)
::cout<<"Unable to load\""TIMERSDLL"\""<< ::endl;
else
{
DllGetClassObject=(DLLGETCLASSOBJECT)GetProcAddress(hinstDll,"DllGetClassObject");
if (DllGetClassObject!=NULL)
{
hr=DllGetClassObject(rclsid,IID_IClassFactory,(void**)&pClassFactory);
if (FAILED(hr)) ::cout<<"DllGetClassObject错了!!"<<::endl;
if(SUCCEEDED(hr))
{
hr=pClassFactory->CreateInstance(NULL,riid,ppv);
pClassFactory->Release();
}
pClassFactory=NULL;
}
}
return hr;
}
void UnloadDll()
{
DLLCANUNLOADNOW DllCanUnloadNow;
DllCanUnloadNow =(DLLCANUNLOADNOW)GetProcAddress(hinstDll,"DllCanUnloadNow");
if (DllCanUnloadNow!=NULL)
{
if((DllCanUnloadNow())==S_OK)
FreeLibrary(hinstDll);
}
}
void UseStopwatch(IStopwatch* const pStopwatch)
{
float nElapsedTime;
pStopwatch->Start();
pStopwatch->ElapsedTime(&nElapsedTime);
::cout<<"The overhead time is" << nElapsedTime<< ::endl;
}
int main(int argc,char *argv[])
{
//float nElapsedTime;
HRESULT hr;
IUnknown* pIUnknown=NULL;
IUnknown* pIUnknown2=NULL;
IStopwatch* pStopwatch=NULL;
hr=CreateInstance(CLSID_Stopwatch,IID_IUnknown,(void**)&pIUnknown);
if(!SUCCEEDED(hr))
::cout<<"ERROR:Unable to create Stopwatch!!! And I don't know why!!!";
else
{
pIUnknown2=pIUnknown;
hr=pIUnknown2->QueryInterface(IID_IStopwatch,(void**)&pStopwatch);
if(!SUCCEEDED(hr))
::cout<<"ERROR:Unable to retrieve Stopwatch interface!!!";
else
{
UseStopwatch(pStopwatch);
pStopwatch->Release();
pStopwatch=NULL;
}
pIUnknown->Release();
}
UnloadDll();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -