Example #1
0
BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
					 )
{
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
		hook3();
		break;
	case DLL_THREAD_ATTACH:
	case DLL_THREAD_DETACH:
	case DLL_PROCESS_DETACH:
		break;
	}
	return TRUE;
}
void test1()
 {
  Memo1 obj1;
  Memo1 obj2;
  Memo1 obj3;

  ObjMaster master1(obj1,"obj1");
  ObjMaster master2(obj2,"obj2");
  ObjMaster master3(obj3,"obj3");

  ObjMaster_delete master4(new Memo2(),"obj4");
  ObjMaster_delete master5(new Memo2(),"obj5");

  ObjHook hook1("obj1");
  ObjHook hook2("obj2");
  ObjHook hook3("obj3");
  ObjHook hook4("obj4");
  ObjHook hook5("obj5");

  Putch(Con,'\n');

  Memo1::Show(hook1.cast<Memo1>());
  Memo1::Show(hook2.cast<Memo1>());
  Memo1::Show(hook3.cast<Memo1>());
  Memo1::Show(hook4.cast<Memo1>());
  Memo1::Show(hook5.cast<Memo1>());

  Putch(Con,'\n');

  {
   ObjHost::List<ObjInfo> list;

   list.build();

   Show("ObjInfo",Range(list));
  }

  {
   ObjHost::List<ObjInfo_obj> list;

   list.build();

   Show("ObjInfo_obj",Range(list));
  }

  {
   ObjHost::List<ObjInfo_if<Memo1> > list;

   list.build();

   Show("ObjInfo_if",Range(list));
  }

  {
   ObjHost::List<ObjInfo_obj_if<Memo2> > list;

   list.build();

   Show("ObjInfo_obj_if",Range(list));
  }
 }