컴포넌트(COM)
-
C++로 Aggregation 구현하기컴포넌트(COM)/Aggregation 2008. 11. 26. 22:18
#include interface ICalcu : IUnknown { virtual int __stdcall Sum(int x, int y) = 0; virtual int __stdcall Sub(int x, int y) = 0; virtual int __stdcall Mul(int x, int y) = 0; virtual double __stdcall Div(int x, int y) = 0; }; interface IRadius : IUnknown { virtual double __stdcall Radius(int x, int y) = 0; }; HRESULT __stdcall CFactory::CreateInstance(IUnknown* pUnknownOuter, const IID& iid, void..
-
C++ 로 Containment 구현하기컴포넌트(COM)/Containment 2008. 11. 26. 21:31
#include interface ICalcu : IUnknown { virtual int __stdcall Sum(int x, int y) = 0; virtual int __stdcall Sub(int x, int y) = 0; virtual int __stdcall Mul(int x, int y) = 0; virtual double __stdcall Div(int x, int y) = 0; }; interface IRadius : IUnknown { virtual double __stdcall Radius(int x, int y) = 0; }; HRESULT __stdcall CFactory::CreateInstance(IUnknown* pUnknownOuter, const IID& iid, void..
-
MFC로 커스텀 interface COM 클래스 만들기 - IDL, In Process컴포넌트(COM)/MFC 2008. 11. 22. 13:52
[Regular DLL using shared MFC DLL] 타입으로 새로운 프로젝트를 생성한다. ; SpcCom.def : Declares the module parameters for the DLL. LIBRARY "SpcCom" DESCRIPTION 'SpcCom Windows Dynamic Link Library' EXPORTS ; Explicit exports can go here DllCanUnloadNow @1 PRIVATE DllGetClassObject @2 PRIVATE DllRegisterServer @3 PRIVATE DllUnregisterServer @4 PRIVATE CLSID_STR_CLASSID 는 스트링 리소스이다. #include BOOL CSpcComApp::Init..
-
MFC로 커스텀 interface COM 클래스 만들기 - IDL, Out Of Process컴포넌트(COM)/MFC 2008. 11. 21. 23:35
#include BOOL CSpcLocalApp::InitInstance() { ... // { if (!AfxOleInit()) { AfxMessageBox("Could not initialize OLE subsystem."); return FALSE; } // } #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif // { CCommandLineInfo CmdInfo; ParseCommandLine(CmdInfo); // Check to see if launched ..
-
커스텀 인터페이스 COM 클래스 - C++컴포넌트(COM)/COM 2008. 11. 20. 00:07
IDL GUID 생성 도구 UUIDGEN.EXE(Console) GUIDGEN.EXE(GUI) CoTaskMemAlloc() Win32 Dynamic-Link Library 형식의 프로젝트를 만든다. #include //#include static HMODULE s_hModule = NULL ; static long s_cServerLocks = 0; BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { // { switch(ul_reason_for_call) { case DLL_PROCESS_ATTACH: s_hModule = (HMODULE)hModule; break; } // } return TRU..
-
커스텀 인터페이스 COM 클래스 - ATL컴포넌트(COM)/COM 2008. 11. 19. 23:45
CComObjectRoot CComObjectRootEx .InernalAddRef() .InernalRelease() .InernalQueryInterface() CComCoClass 클래스 팩토리 CComObject IUnknown .CreateInstance() // static CComEnum IEnum{XXX} .Init() AtlFlagCopy 1. [ATL COM AppWizard] 옵션으로 DLL 타입의 새로운 프로젝트를 생성한다. 2. [ATL Object Wizard] 로 COM 클래스를 생성한다. // [Insert / New ATL Objects] [Objects|Simple Object] 항목 [Names|C++|Short Name]에 이름을 준다. 3. 생성된 인터페이스의 콘텍스..
-
MFC로 커스텀 interface COM 클래스 만들기 - No IDL, In Process컴포넌트(COM)/MFC 2008. 11. 19. 01:33
; SpcCom.def : Declares the module parameters for the DLL. LIBRARY "SpcCom" DESCRIPTION 'SpcCom Windows Dynamic Link Library' EXPORTS ; Explicit exports can go here DllCanUnloadNow @1 PRIVATE DllGetClassObject @2 PRIVATE DllRegisterServer @3 PRIVATE DllUnregisterServer @4 PRIVATE CLSID_STR_CLASSID 는 스트링 리소스이다. #include BOOL CSpcComApp::InitInstance() { // TODO: Add your specialized code here and..