xxx.cpp
#include <windows.h>
#include <docobj.h>
#include <stdio.h>
WNDCLASS w;
HWND b; MSG c;
IStorage *m_pIStorage;IUnknown *m_pIUnknownObj;
HRESULT h;
char aa[100];
IOleObject *m_pIOleObject;
unsigned short ffile[512];
DWORD dw;
RECT rc;
void abc(char * p)
{
FILE *fp;
fp = fopen("d:\\xxx\\x.txt","a+");
fprintf(fp,"%s...\n",p);
fclose(fp);
}
class CIAdviseSink :public IAdviseSink
{
public :
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("11");return 0;}
unsigned long __stdcall AddRef()
{abc("12");return 0;}
unsigned long __stdcall Release()
{abc("13");return 0;}
void __stdcall OnDataChange(struct tagFORMATETC *,struct tagSTGMEDIUM *)
{abc("14");}
void __stdcall OnViewChange(unsigned long,long)
{abc("15");}
void __stdcall OnRename(struct IMoniker *)
{abc("16");}
void __stdcall OnSave()
{abc("17");}
void __stdcall OnClose()
{abc("OnClose");}
};
CIAdviseSink *m_pIAdviseSink;
class CIOleClientSite :public IOleClientSite
{
public:
long _stdcall QueryInterface(REFIID,void **);
unsigned long _stdcall AddRef(void)
{ abc("2");return 0 ;}
unsigned long _stdcall Release(void)
{ abc("3");return 0 ;}
long _stdcall SaveObject(void)
{ abc("4");return 0; }
long _stdcall GetMoniker(unsigned long,unsigned long,struct IMoniker ** )
{ abc("GetMoniker");return E_NOTIMPL; }
long _stdcall GetContainer(struct IOleContainer ** )
{ abc("GetContainer");return E_NOTIMPL; }
long _stdcall ShowObject(void)
{ abc("ShowObject");return 0 ;}
long _stdcall OnShowWindow(int)
{ abc("OnShowWindow");return 0 ;}
long _stdcall RequestNewObjectLayout(void)
{ abc("9");return 0 ;}
} ;
CIOleClientSite * m_pIOleClientSite;
class CIOleInPlaceSite :public IOleInPlaceSite
{ public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("21");return 0;}
unsigned long __stdcall AddRef()
{abc("22");return 0;}
unsigned long __stdcall Release()
{abc("23");return 0;}
long __stdcall GetWindow(void ** )
{abc("24");return 0;}
long __stdcall ContextSensitiveHelp(int)
{abc("25");return 0;}
long __stdcall CanInPlaceActivate()
{abc("26");return 0;}
long __stdcall OnInPlaceActivate()
{abc("27");return 0;}
long __stdcall OnUIActivate()
{abc("28");return 0;}
long __stdcall GetWindowContext(struct IOleInPlaceFrame ** ,struct IOleInPlaceUIWindow ** ,struct tagRECT *,struct tagRECT *,struct tagOIFI *)
{abc("29");return 0;}
long __stdcall Scroll(struct tagSIZE)
{abc("221");return 0;}
long __stdcall OnUIDeactivate(int)
{abc("222");return 0;}
long __stdcall OnInPlaceDeactivate()
{abc("223");return 0;}
long __stdcall DiscardUndoState()
{abc("224");return 0;}
long __stdcall DeactivateAndUndo()
{abc("225");return 0;}
long __stdcall OnPosRectChange(const struct tagRECT *)
{abc("226");return 0;}
};
CIOleInPlaceSite *m_pIOleInPlaceSite;
long _stdcall zzz(HWND, UINT, WPARAM, LPARAM);
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, char * k, int l)
{
abc("start");
w.hInstance=i;
w.lpszClassName="aaa";
w.lpfnWndProc=zzz;
w.lpszMenuName="mmm";
w.hbrBackground=GetStockObject(WHITE_BRUSH);
RegisterClass(&w);
b=CreateWindow("aaa","PB OLE",WS_OVERLAPPEDWINDOW, 1,1,100,200,0,0,i,0);
ShowWindow(b,1);
while(GetMessage(&c,0,0,0))
DispatchMessage(&c);
abc("end");
return 1;
}
long _stdcall zzz(HWND w, UINT x, WPARAM y, LPARAM z)
{
if (x == WM_COMMAND)
{
OleInitialize(0);
h=StgCreateDocfile(0,STGM_TRANSACTED|STGM_READWRITE|STGM_SHARE_EXCLUSIVE|STGM_CREATE,
0,&m_pIStorage);
sprintf(aa,"StgCreateDocfile..h=%p,m_pIStorage=%p",h,m_pIStorage);
abc(aa);
h=MultiByteToWideChar(0,0,"d:\\zzz.bmp",-1,ffile,512);
sprintf(aa,"MultiByteToWideChar..%p..",h);
abc(aa);
h=OleCreateFromFile(CLSID_NULL,ffile,IID_IUnknown,OLERENDER_NONE,0,0,m_pIStorage,(void **)&m_pIUnknownObj);
sprintf(aa,"OleCreateFromFile...h=%p..m_pIUnknownObj..%p",h,m_pIUnknownObj);
abc(aa);
h=m_pIUnknownObj->QueryInterface(IID_IOleObject,(void **)&m_pIOleObject);
sprintf(aa,"QueryInterface..h=%p..m_pIOleObject..%p",h,m_pIOleObject);
abc(aa);
m_pIOleClientSite = new CIOleClientSite ;
h=m_pIOleObject->SetClientSite(m_pIOleClientSite);
sprintf(aa,"CIOleClientSite..%p..",h);
abc(aa);
m_pIAdviseSink = new CIAdviseSink;
h = m_pIOleObject->Advise(m_pIAdviseSink,&dw);
sprintf(aa,"CIAdviseSink.m_pIAdviseSink..%p..dw..%ld..",h,dw);
abc(aa);
m_pIOleInPlaceSite = new CIOleInPlaceSite;
h=OleRun(m_pIOleObject);
sprintf(aa,"OleRun..h...%p",h);
abc(aa);
GetClientRect(b,&rc);
h=m_pIOleObject->DoVerb(OLEIVERB_SHOW,0,m_pIOleClientSite,0,b,&rc);
sprintf(aa,"DoVerb..%p..",h);
abc(aa);
MessageBox(0,"end","end",0);
}
if (x==WM_DESTROY)
PostQuitMessage(0);
return DefWindowProc(w,x,y,z);
}
long _stdcall CIOleClientSite::QueryInterface(REFIID iid,void **ppv)
{
if (iid == IID_IUnknown)
{ abc ("IUnknown ...Q1");
*ppv = this;
return 0;
}
if (iid == IID_IOleClientSite)
{
abc ("CIOleClientSite...Q2");
*ppv = m_pIOleClientSite;
return 0;
}
if (iid == IID_IAdviseSink)
abc ("Q3");
if (iid == IID_IOleWindow|| iid == IID_IOleInPlaceSite)
{ abc ("IOleWindow..IOleInPlaceSite..Q4");
*ppv = m_pIOleInPlaceSite;
return 0;
}
if (iid == IID_IOleInPlaceUIWindow||iid == IID_IOleInPlaceFrame)
{
abc ("Q5");
}
return E_NOINTERFACE;
}
xxx.rc
mmm MENU
begin
menuitem "Click",100
end
x.txt
start...
StgCreateDocfile..h=00000000,m_pIStorage=825B7F20...
MultiByteToWideChar..0000000B.....
OleCreateFromFile...h=00000000..m_pIUnknownObj..00421338...
QueryInterface..h=00000000..m_pIOleObject..00421324...
2...
CIOleClientSite..00000000.....
12...
CIAdviseSink.m_pIAdviseSink..00000000..dw..1.....
GetContainer...
CIOleClientSite...Q2...
IUnknown ...Q1...
2...
3...
2...
CIOleClientSite...Q2...
3...
CIOleClientSite...Q2...
3...
GetMoniker...
OleRun..h...00000000...
CIOleClientSite...Q2...
IUnknown ...Q1...
3...
3...
IOleWindow..IOleInPlaceSite..Q4...
23...
IOleWindow..IOleInPlaceSite..Q4...
26...
27...
24...
223...
ShowObject...
OnShowWindow...
DoVerb..00000000.....
OnShowWindow...
OnClose...
3...
23...
3...
3...
end...
xxx.cpp
#include <windows.h>
#include <docobj.h>
#include <stdio.h>
WNDCLASS w,w1;
HWND b,b1; MSG c;
IStorage *m_pIStorage;IUnknown *m_pIUnknownObj;
HRESULT h;
char aa[100];
IOleObject *m_pIOleObject;
unsigned short ffile[512];
DWORD dw;
RECT rc;
void abc(char * p)
{
FILE *fp;
fp = fopen("d:\\xxx\\x.txt","a+");
fprintf(fp,"%s...\n",p);
fclose(fp);
}
long _stdcall zzz1(HWND w, UINT x, WPARAM y, LPARAM z)
{
return DefWindowProc(w,x,y,z);
}
class CIAdviseSink :public IAdviseSink
{ public :
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("11");return 0;}
unsigned long __stdcall AddRef()
{abc("12");return 0;}
unsigned long __stdcall Release()
{abc("13");return 0;}
void __stdcall OnDataChange(struct tagFORMATETC *,struct tagSTGMEDIUM *)
{abc("14");}
void __stdcall OnViewChange(unsigned long,long)
{abc("15");}
void __stdcall OnRename(struct IMoniker *)
{abc("16");}
void __stdcall OnSave()
{abc("17");}
void __stdcall OnClose()
{abc("OnClose");}
};
CIAdviseSink *m_pIAdviseSink;
class CIOleClientSite :public IOleClientSite
{
public:
long _stdcall QueryInterface(REFIID,void **);
unsigned long _stdcall AddRef(void)
{ abc("2");return 0 ;}
unsigned long _stdcall Release(void)
{ abc("3");return 0 ;}
long _stdcall SaveObject(void)
{ abc("4");return 0; }
long _stdcall GetMoniker(unsigned long,unsigned long,struct IMoniker ** )
{ abc("GetMoniker");return E_NOTIMPL; }
long _stdcall GetContainer(struct IOleContainer ** )
{ abc("GetContainer");return E_NOTIMPL; }
long _stdcall ShowObject(void)
{ abc("ShowObject");return 0 ;}
long _stdcall OnShowWindow(int)
{ abc("OnShowWindow");return 0 ;}
long _stdcall RequestNewObjectLayout(void)
{ abc("9");return 0 ;}
} ;
CIOleClientSite * m_pIOleClientSite;
class CIOleInPlaceSite :public IOleInPlaceSite
{ public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("21");return 0;}
unsigned long __stdcall AddRef()
{abc("22");return 0;}
unsigned long __stdcall Release()
{abc("23");return 0;}
long __stdcall GetWindow(void ** );
long __stdcall ContextSensitiveHelp(int)
{abc("25");return 0;}
long __stdcall CanInPlaceActivate()
{abc("CanInPlaceActivate");return 0;}
long __stdcall OnInPlaceActivate()
{abc("OnInPlaceActivate");return 0;}
long __stdcall OnUIActivate()
{abc("28");return 0;}
long __stdcall GetWindowContext(struct IOleInPlaceFrame ** ,struct IOleInPlaceUIWindow ** ,struct tagRECT *,struct tagRECT *,struct tagOIFI *)
{abc("29");return 0;}
long __stdcall Scroll(struct tagSIZE)
{abc("221");return 0;}
long __stdcall OnUIDeactivate(int)
{abc("222");return 0;}
long __stdcall OnInPlaceDeactivate()
{abc("OnInPlaceDeactivate");return 0;}
long __stdcall DiscardUndoState()
{abc("224");return 0;}
long __stdcall DeactivateAndUndo()
{abc("225");return 0;}
long __stdcall OnPosRectChange(const struct tagRECT *)
{abc("226");return 0;}
};
CIOleInPlaceSite *m_pIOleInPlaceSite;
long _stdcall zzz(HWND, UINT, WPARAM, LPARAM);
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, char * k, int l)
{
abc("start");
w.hInstance=i;
w.lpszClassName="aaa";
w.lpfnWndProc=zzz;
w.lpszMenuName="mmm";
w.hbrBackground=GetStockObject(WHITE_BRUSH);
RegisterClass(&w);
b=CreateWindow("aaa","PB OLE",WS_OVERLAPPEDWINDOW, 1,1,100,200,0,0,i,0);
w1.hInstance=i;
w1.lpszClassName="aaa1";
w1.lpfnWndProc=zzz1;
w1.hbrBackground=GetStockObject(WHITE_BRUSH);
RegisterClass(&w1);
b1=CreateWindow("aaa1","PB OLE CHILD",
WS_CHILD|WS_CLIPCHILDREN|WS_VISIBLE|WS_CLIPSIBLINGS,
1,1,100,200,0,0,b,0);
ShowWindow(b,1);
while(GetMessage(&c,0,0,0))
DispatchMessage(&c);
abc("end");
return 1;
}
long _stdcall zzz(HWND w, UINT x, WPARAM y, LPARAM z)
{
if (x == WM_COMMAND)
{
OleInitialize(0);
h=StgCreateDocfile(0,STGM_TRANSACTED|STGM_READWRITE|STGM_SHARE_EXCLUSIVE|STGM_CREATE,
0,&m_pIStorage);
sprintf(aa,"StgCreateDocfile..h=%p,m_pIStorage=%p",h,m_pIStorage);
abc(aa);
h=MultiByteToWideChar(0,0,"d:\\zzz.bmp",-1,ffile,512);
sprintf(aa,"MultiByteToWideChar..%p..",h);
abc(aa);
h=OleCreateFromFile(CLSID_NULL,ffile,IID_IUnknown,OLERENDER_NONE,0,0,m_pIStorage,(void **)&m_pIUnknownObj);
sprintf(aa,"OleCreateFromFile...h=%p..m_pIUnknownObj..%p",h,m_pIUnknownObj);
abc(aa);
h=m_pIUnknownObj->QueryInterface(IID_IOleObject,(void **)&m_pIOleObject);
sprintf(aa,"QueryInterface..h=%p..m_pIOleObject..%p",h,m_pIOleObject);
abc(aa);
m_pIOleClientSite = new CIOleClientSite ;
h=m_pIOleObject->SetClientSite(m_pIOleClientSite);
sprintf(aa,"CIOleClientSite..%p..",h);
abc(aa);
m_pIAdviseSink = new CIAdviseSink;
h = m_pIOleObject->Advise(m_pIAdviseSink,&dw);
sprintf(aa,"CIAdviseSink.m_pIAdviseSink..%p..dw..%ld..",h,dw);
abc(aa);
m_pIOleInPlaceSite = new CIOleInPlaceSite;
h=OleRun(m_pIOleObject);
sprintf(aa,"OleRun..h...%p",h);
abc(aa);
GetClientRect(b,&rc);
h=m_pIOleObject->DoVerb(OLEIVERB_SHOW,0,m_pIOleClientSite,0,b,&rc);
sprintf(aa,"DoVerb..%p..",h);
abc(aa);
MessageBox(0,"end","end",0);
}
if (x==WM_DESTROY)
PostQuitMessage(0);
return DefWindowProc(w,x,y,z);
}
long _stdcall CIOleClientSite::QueryInterface(REFIID iid,void **ppv)
{
if (iid == IID_IUnknown)
{ abc ("IUnknown ...Q1");
*ppv = this;
return 0;
}
if (iid == IID_IOleClientSite)
{
abc ("CIOleClientSite...Q2");
*ppv = m_pIOleClientSite;
return 0;
}
if (iid == IID_IAdviseSink)
abc ("Q3");
if (iid == IID_IOleWindow|| iid == IID_IOleInPlaceSite)
{ abc ("IOleWindow..IOleInPlaceSite..Q4");
*ppv = m_pIOleInPlaceSite;
return 0;
}
if (iid == IID_IOleInPlaceUIWindow||iid == IID_IOleInPlaceFrame)
{
abc ("fQ5");
}
return E_NOINTERFACE;
}
long __stdcall CIOleInPlaceSite::GetWindow(void **hwnd )
{
abc("CIOleInPlaceSite::GetWindow");
*hwnd=b;
return 0;
}
xxx.rc
mmm MENU
begin
menuitem "Click",100
end
x.txt
start...
StgCreateDocfile..h=00000000,m_pIStorage=825C12F0...
MultiByteToWideChar..0000000B.....
OleCreateFromFile...h=00000000..m_pIUnknownObj..00421338...
QueryInterface..h=00000000..m_pIOleObject..00421324...
2...
CIOleClientSite..00000000.....
12...
CIAdviseSink.m_pIAdviseSink..00000000..dw..1.....
GetContainer...
CIOleClientSite...Q2...
IUnknown ...Q1...
2...
3...
2...
CIOleClientSite...Q2...
3...
CIOleClientSite...Q2...
3...
GetMoniker...
OleRun..h...00000000...
CIOleClientSite...Q2...
IUnknown ...Q1...
3...
3...
IOleWindow..IOleInPlaceSite..Q4...
23...
IOleWindow..IOleInPlaceSite..Q4...
CanInPlaceActivate...
OnInPlaceActivate...
CIOleInPlaceSite::GetWindow...
28...
29...
DoVerb..80010105.....
end...
xxx.cpp
#include <windows.h>
#include <docobj.h>
#include <stdio.h>
WNDCLASS w,w1;
HWND b,b1; MSG c;
IStorage *m_pIStorage;IUnknown *m_pIUnknownObj;
HRESULT h;
char aa[100];
IOleObject *m_pIOleObject;
unsigned short ffile[512];
DWORD dw;
RECT rc;
void abc(char * p)
{
FILE *fp;
fp = fopen("d:\\xxx\\x.txt","a+");
fprintf(fp,"%s...\n",p);
fclose(fp);
}
long _stdcall zzz1(HWND w, UINT x, WPARAM y, LPARAM z)
{
return DefWindowProc(w,x,y,z);
}
class CIOleInPlaceFrame:public IOleInPlaceFrame
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("41");return 0;}
unsigned long __stdcall AddRef()
{abc("42");return 0;}
unsigned long __stdcall Release(void)
{abc("43");return 0;}
long __stdcall GetWindow(void ** )
{abc("44");return 0;}
long __stdcall ContextSensitiveHelp(int)
{abc("45");return 0;}
long __stdcall GetBorder(struct tagRECT *)
{abc("46");return 0;}
long __stdcall RequestBorderSpace(const struct tagRECT *)
{abc("47");return 0;}
long __stdcall SetBorderSpace(const struct tagRECT *)
{abc("48");return 0;}
long __stdcall SetActiveObject(struct IOleInPlaceActiveObject *,const unsigned short *)
{abc("49");return 0;}
long __stdcall InsertMenus(void *,struct tagOleMenuGroupWidths *)
{abc("441");return 0;}
long __stdcall SetMenu(void *,void *,void *)
{abc("442");return 0;}
long __stdcall RemoveMenus(void *)
{abc("443");return 0;}
long __stdcall SetStatusText(const unsigned short *)
{abc("444");return 0;}
long __stdcall EnableModeless(int)
{abc("445");return 0;}
long __stdcall TranslateAcceleratorA(struct tagMSG *,unsigned short)
{abc("446");return 0;}
};
CIOleInPlaceFrame * m_pIOleInPlaceFrame;
class CIAdviseSink :public IAdviseSink
{ public :
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("11");return 0;}
unsigned long __stdcall AddRef()
{abc("12");return 0;}
unsigned long __stdcall Release()
{abc("13");return 0;}
void __stdcall OnDataChange(struct tagFORMATETC *,struct tagSTGMEDIUM *)
{abc("14");}
void __stdcall OnViewChange(unsigned long,long)
{abc("15");}
void __stdcall OnRename(struct IMoniker *)
{abc("16");}
void __stdcall OnSave()
{abc("17");}
void __stdcall OnClose()
{abc("OnClose");}
};
CIAdviseSink *m_pIAdviseSink;
class CIOleClientSite :public IOleClientSite
{
public:
long _stdcall QueryInterface(REFIID,void **);
unsigned long _stdcall AddRef(void)
{ abc("2");return 0 ;}
unsigned long _stdcall Release(void)
{ abc("3");return 0 ;}
long _stdcall SaveObject(void)
{ abc("4");return 0; }
long _stdcall GetMoniker(unsigned long,unsigned long,struct IMoniker ** )
{ abc("GetMoniker");return E_NOTIMPL; }
long _stdcall GetContainer(struct IOleContainer ** )
{ abc("GetContainer");return E_NOTIMPL; }
long _stdcall ShowObject(void)
{ abc("ShowObject");return 0 ;}
long _stdcall OnShowWindow(int)
{ abc("OnShowWindow");return 0 ;}
long _stdcall RequestNewObjectLayout(void)
{ abc("9");return 0 ;}
} ;
CIOleClientSite * m_pIOleClientSite;
class CIOleInPlaceSite :public IOleInPlaceSite
{ public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("21");return 0;}
unsigned long __stdcall AddRef()
{abc("22");return 0;}
unsigned long __stdcall Release()
{abc("23");return 0;}
long __stdcall GetWindow(void ** );
long __stdcall ContextSensitiveHelp(int)
{abc("25");return 0;}
long __stdcall CanInPlaceActivate()
{abc("CanInPlaceActivate");return 0;}
long __stdcall OnInPlaceActivate()
{abc("OnInPlaceActivate");return 0;}
long __stdcall OnUIActivate()
{abc("OnUIActivate");return 0;}
long __stdcall GetWindowContext(struct IOleInPlaceFrame ** ,struct IOleInPlaceUIWindow ** ,struct tagRECT *,struct tagRECT *,struct tagOIFI *);
long __stdcall Scroll(struct tagSIZE)
{abc("221");return 0;}
long __stdcall OnUIDeactivate(int)
{abc("222");return 0;}
long __stdcall OnInPlaceDeactivate()
{abc("OnInPlaceDeactivate");return 0;}
long __stdcall DiscardUndoState()
{abc("224");return 0;}
long __stdcall DeactivateAndUndo()
{abc("225");return 0;}
long __stdcall OnPosRectChange(const struct tagRECT *)
{abc("226");return 0;}
};
CIOleInPlaceSite *m_pIOleInPlaceSite;
long _stdcall zzz(HWND, UINT, WPARAM, LPARAM);
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, char * k, int l)
{
abc("start");
w.hInstance=i;
w.lpszClassName="aaa";
w.lpfnWndProc=zzz;
w.lpszMenuName="mmm";
w.hbrBackground=GetStockObject(WHITE_BRUSH);
RegisterClass(&w);
b=CreateWindow("aaa","PB OLE",WS_OVERLAPPEDWINDOW, 1,1,100,200,0,0,i,0);
w1.hInstance=i;
w1.lpszClassName="aaa1";
w1.lpfnWndProc=zzz1;
w1.hbrBackground=GetStockObject(WHITE_BRUSH);
RegisterClass(&w1);
b1=CreateWindow("aaa1","PB OLE CHILD",
WS_CHILD|WS_CLIPCHILDREN|WS_VISIBLE|WS_CLIPSIBLINGS,
1,1,100,200,0,0,b,0);
ShowWindow(b,1);
while(GetMessage(&c,0,0,0))
DispatchMessage(&c);
abc("end");
return 1;
}
long _stdcall zzz(HWND w, UINT x, WPARAM y, LPARAM z)
{
if (x == WM_COMMAND)
{
OleInitialize(0);
h=StgCreateDocfile(0,STGM_TRANSACTED|STGM_READWRITE|STGM_SHARE_EXCLUSIVE|STGM_CREATE,
0,&m_pIStorage);
sprintf(aa,"StgCreateDocfile..h=%p,m_pIStorage=%p",h,m_pIStorage);
abc(aa);
h=MultiByteToWideChar(0,0,"d:\\zzz.bmp",-1,ffile,512);
sprintf(aa,"MultiByteToWideChar..%p..",h);
abc(aa);
h=OleCreateFromFile(CLSID_NULL,ffile,IID_IUnknown,OLERENDER_NONE,0,0,m_pIStorage,(void **)&m_pIUnknownObj);
sprintf(aa,"OleCreateFromFile...h=%p..m_pIUnknownObj..%p",h,m_pIUnknownObj);
abc(aa);
h=m_pIUnknownObj->QueryInterface(IID_IOleObject,(void **)&m_pIOleObject);
sprintf(aa,"QueryInterface..h=%p..m_pIOleObject..%p",h,m_pIOleObject);
abc(aa);
m_pIOleClientSite = new CIOleClientSite ;
h=m_pIOleObject->SetClientSite(m_pIOleClientSite);
sprintf(aa,"CIOleClientSite..%p..",h);
abc(aa);
m_pIAdviseSink = new CIAdviseSink;
h = m_pIOleObject->Advise(m_pIAdviseSink,&dw);
sprintf(aa,"CIAdviseSink.m_pIAdviseSink..%p..dw..%ld..",h,dw);
abc(aa);
m_pIOleInPlaceSite = new CIOleInPlaceSite;
m_pIOleInPlaceFrame = new CIOleInPlaceFrame;
h=OleRun(m_pIOleObject);
sprintf(aa,"OleRun..h...%p",h);
abc(aa);
GetClientRect(b,&rc);
h=m_pIOleObject->DoVerb(OLEIVERB_SHOW,0,m_pIOleClientSite,0,b,&rc);
sprintf(aa,"DoVerb..%p..",h);
abc(aa);
MessageBox(0,"end","end",0);
}
if (x==WM_DESTROY)
PostQuitMessage(0);
return DefWindowProc(w,x,y,z);
}
long _stdcall CIOleClientSite::QueryInterface(REFIID iid,void **ppv)
{
if (iid == IID_IUnknown)
{ abc ("IUnknown ...Q1");
*ppv = this;
return 0;
}
if (iid == IID_IOleClientSite)
{
abc ("CIOleClientSite...Q2");
*ppv = m_pIOleClientSite;
return 0;
}
if (iid == IID_IAdviseSink)
abc ("Q3");
if (iid == IID_IOleWindow|| iid == IID_IOleInPlaceSite)
{ abc ("IOleWindow..IOleInPlaceSite..Q4");
*ppv = m_pIOleInPlaceSite;
return 0;
}
if (iid == IID_IOleInPlaceUIWindow||iid == IID_IOleInPlaceFrame)
{ abc("IOleInPlaceUIWindow..IOleInPlaceFrame");
*ppv = m_pIOleInPlaceFrame;
return 0;
}
return E_NOINTERFACE;
}
long __stdcall CIOleInPlaceSite::GetWindow(void **hwnd )
{
abc("CIOleInPlaceSite::GetWindow");
*hwnd=b;
return 0;
}
long __stdcall CIOleInPlaceSite::GetWindowContext
(struct IOleInPlaceFrame ** ioipf,struct IOleInPlaceUIWindow ** ioipuw,struct tagRECT * r1,struct tagRECT * r2,struct tagOIFI *f)
{
*ioipuw = NULL;
*ioipf = m_pIOleInPlaceFrame;
GetClientRect(b,r2);
*r1=*r2;
f->cb = sizeof(struct tagOIFI);
f->hwndFrame=b;
return 0;
}
xxx.rc
mmm MENU
begin
menuitem "Click",100
end
x.txt
start...
StgCreateDocfile..h=00000000,m_pIStorage=825CF0A8...
MultiByteToWideChar..0000000B.....
OleCreateFromFile...h=00000000..m_pIUnknownObj..00421338...
QueryInterface..h=00000000..m_pIOleObject..00421324...
2...
CIOleClientSite..00000000.....
12...
CIAdviseSink.m_pIAdviseSink..00000000..dw..1.....
GetContainer...
CIOleClientSite...Q2...
IUnknown ...Q1...
2...
3...
2...
CIOleClientSite...Q2...
3...
CIOleClientSite...Q2...
3...
GetMoniker...
OleRun..h...00000000...
CIOleClientSite...Q2...
IUnknown ...Q1...
3...
3...
IOleWindow..IOleInPlaceSite..Q4...
23...
IOleWindow..IOleInPlaceSite..Q4...
CanInPlaceActivate...
OnInPlaceActivate...
CIOleInPlaceSite::GetWindow...
OnUIActivate...
41...
43...
222...
OnInPlaceDeactivate...
ShowObject...
OnShowWindow...
DoVerb..00000000.....
OnShowWindow...
OnClose...
3...
23...
3...
3...
end...
xxx.cpp
#include <windows.h>
#include <docobj.h>
#include <stdio.h>
WNDCLASS w,w1;
HWND b,b1; MSG c;
IStorage *m_pIStorage;IUnknown *m_pIUnknownObj;
HRESULT h;
char aa[100];
IOleObject *m_pIOleObject;
unsigned short ffile[512];
DWORD dw;
RECT rc;
void abc(char * p)
{
FILE *fp;
fp = fopen("d:\\xxx\\x.txt","a+");
fprintf(fp,"%s...\n",p);
fclose(fp);
}
long _stdcall zzz1(HWND w, UINT x, WPARAM y, LPARAM z)
{ abc("in zzz1");
return DefWindowProc(w,x,y,z);
}
class CIOleInPlaceFrame:public IOleInPlaceFrame
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef()
{abc("42");return 0;}
unsigned long __stdcall Release(void)
{abc("43");return 0;}
long __stdcall GetWindow(void ** )
{abc("44");return 0;}
long __stdcall ContextSensitiveHelp(int)
{abc("45");return 0;}
long __stdcall GetBorder(struct tagRECT *)
{abc("46");return 0;}
long __stdcall RequestBorderSpace(const struct tagRECT *)
{abc("47");return 0;}
long __stdcall SetBorderSpace(const struct tagRECT *)
{abc("48");return 0;}
long __stdcall SetActiveObject(struct IOleInPlaceActiveObject *,const unsigned short *)
{abc("49");return 0;}
long __stdcall InsertMenus(void *,struct tagOleMenuGroupWidths *)
{abc("441");return 0;}
long __stdcall SetMenu(void *,void *,void *)
{abc("442");return 0;}
long __stdcall RemoveMenus(void *)
{abc("443");return 0;}
long __stdcall SetStatusText(const unsigned short *)
{abc("444");return 0;}
long __stdcall EnableModeless(int)
{abc("445");return 0;}
long __stdcall TranslateAcceleratorA(struct tagMSG *,unsigned short)
{abc("446");return 0;}
};
CIOleInPlaceFrame * m_pIOleInPlaceFrame;
class CIAdviseSink :public IAdviseSink
{ public :
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("11");return 0;}
unsigned long __stdcall AddRef()
{abc("12");return 0;}
unsigned long __stdcall Release()
{abc("13");return 0;}
void __stdcall OnDataChange(struct tagFORMATETC *,struct tagSTGMEDIUM *)
{abc("14");}
void __stdcall OnViewChange(unsigned long,long)
{abc("15");}
void __stdcall OnRename(struct IMoniker *)
{abc("16");}
void __stdcall OnSave()
{abc("17");}
void __stdcall OnClose()
{abc("OnClose");}
};
CIAdviseSink *m_pIAdviseSink;
class CIOleClientSite :public IOleClientSite
{
public:
long _stdcall QueryInterface(REFIID,void **);
unsigned long _stdcall AddRef(void)
{ abc("2");return 0 ;}
unsigned long _stdcall Release(void)
{ abc("3");return 0 ;}
long _stdcall SaveObject(void)
{ abc("4");return 0; }
long _stdcall GetMoniker(unsigned long,unsigned long,struct IMoniker ** )
{ abc("GetMoniker");return E_NOTIMPL; }
long _stdcall GetContainer(struct IOleContainer ** )
{ abc("GetContainer");return E_NOTIMPL; }
long _stdcall ShowObject(void)
{ abc("ShowObject");return 0 ;}
long _stdcall OnShowWindow(int)
{ abc("OnShowWindow");return 0 ;}
long _stdcall RequestNewObjectLayout(void)
{ abc("9");return 0 ;}
} ;
CIOleClientSite * m_pIOleClientSite;
class CIOleInPlaceSite :public IOleInPlaceSite
{ public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("21");return 0;}
unsigned long __stdcall AddRef()
{abc("22");return 0;}
unsigned long __stdcall Release()
{abc("23");return 0;}
long __stdcall GetWindow(void ** );
long __stdcall ContextSensitiveHelp(int)
{abc("25");return 0;}
long __stdcall CanInPlaceActivate()
{abc("CanInPlaceActivate");return 0;}
long __stdcall OnInPlaceActivate()
{abc("OnInPlaceActivate");return 0;}
long __stdcall OnUIActivate()
{abc("OnUIActivate");return 0;}
long __stdcall GetWindowContext(struct IOleInPlaceFrame ** ,struct IOleInPlaceUIWindow ** ,struct tagRECT *,struct tagRECT *,struct tagOIFI *);
long __stdcall Scroll(struct tagSIZE)
{abc("221");return 0;}
long __stdcall OnUIDeactivate(int)
{abc("OnUIDeactivate");return 0;}
long __stdcall OnInPlaceDeactivate()
{abc("OnInPlaceDeactivate");return 0;}
long __stdcall DiscardUndoState()
{abc("224");return 0;}
long __stdcall DeactivateAndUndo()
{abc("225");return 0;}
long __stdcall OnPosRectChange(const struct tagRECT *)
{abc("226");return 0;}
};
CIOleInPlaceSite *m_pIOleInPlaceSite;
long _stdcall zzz(HWND, UINT, WPARAM, LPARAM);
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, char * k, int l)
{
abc("start");
w.hInstance=i;
w.lpszClassName="aaa";
w.lpfnWndProc=zzz;
w.lpszMenuName="mmm";
w.hbrBackground=GetStockObject(WHITE_BRUSH);
RegisterClass(&w);
b=CreateWindow("aaa","PB OLE",WS_OVERLAPPEDWINDOW, 1,1,300,300,0,0,i,0);
w1.hInstance=i;
w1.lpszClassName="aaa1";
w1.lpfnWndProc=zzz1;
w1.hbrBackground=GetStockObject(WHITE_BRUSH);
RegisterClass(&w1);
b1=CreateWindow("aaa1","PB OLE CHILD",
WS_CHILD|WS_CLIPCHILDREN|WS_VISIBLE|WS_CLIPSIBLINGS,
1,1,100,200,0,0,b,0);
ShowWindow(b,3);
while(GetMessage(&c,0,0,0))
DispatchMessage(&c);
abc("end");
return 1;
}
long _stdcall zzz(HWND w, UINT x, WPARAM y, LPARAM z)
{
if (x == WM_COMMAND)
{
OleInitialize(0);
h=StgCreateDocfile(0,STGM_TRANSACTED|STGM_READWRITE|STGM_SHARE_EXCLUSIVE|STGM_CREATE,
0,&m_pIStorage);
sprintf(aa,"StgCreateDocfile..h=%p,m_pIStorage=%p",h,m_pIStorage);
abc(aa);
h=MultiByteToWideChar(0,0,"d:\\zzz.bmp",-1,ffile,512);
sprintf(aa,"MultiByteToWideChar..%p..",h);
abc(aa);
h=OleCreateFromFile(CLSID_NULL,ffile,IID_IUnknown,OLERENDER_NONE,0,0,m_pIStorage,(void **)&m_pIUnknownObj);
sprintf(aa,"OleCreateFromFile...h=%p..m_pIUnknownObj..%p",h,m_pIUnknownObj);
abc(aa);
h=m_pIUnknownObj->QueryInterface(IID_IOleObject,(void **)&m_pIOleObject);
sprintf(aa,"QueryInterface..h=%p..m_pIOleObject..%p",h,m_pIOleObject);
abc(aa);
m_pIOleClientSite = new CIOleClientSite ;
h=m_pIOleObject->SetClientSite(m_pIOleClientSite);
sprintf(aa,"CIOleClientSite..%p..",h);
abc(aa);
m_pIAdviseSink = new CIAdviseSink;
h = m_pIOleObject->Advise(m_pIAdviseSink,&dw);
sprintf(aa,"CIAdviseSink.m_pIAdviseSink..%p..dw..%ld..",h,dw);
abc(aa);
m_pIOleInPlaceSite = new CIOleInPlaceSite;
m_pIOleInPlaceFrame = new CIOleInPlaceFrame;
h=OleRun(m_pIOleObject);
sprintf(aa,"OleRun..h...%p",h);
abc(aa);
GetClientRect(b,&rc);
h=m_pIOleObject->DoVerb(OLEIVERB_SHOW,0,m_pIOleClientSite,0,b,&rc);
sprintf(aa,"DoVerb..%p..",h);
abc(aa);
MessageBox(0,"end","end",0);
}
if (x==WM_DESTROY)
PostQuitMessage(0);
return DefWindowProc(w,x,y,z);
}
long _stdcall CIOleClientSite::QueryInterface(REFIID iid,void **ppv)
{
if (iid == IID_IUnknown)
{ abc ("IUnknown ...Q1");
*ppv = this;
return 0;
}
if (iid == IID_IOleClientSite)
{
abc ("CIOleClientSite...Q2");
*ppv = m_pIOleClientSite;
return 0;
}
if (iid == IID_IAdviseSink)
abc ("Q3");
if (iid == IID_IOleWindow|| iid == IID_IOleInPlaceSite)
{ abc ("IOleWindow..IOleInPlaceSite..Q4");
*ppv = m_pIOleInPlaceSite;
return 0;
}
if (iid == IID_IOleInPlaceUIWindow||iid == IID_IOleInPlaceFrame)
{ abc("IOleInPlaceUIWindow..IOleInPlaceFrame");
*ppv = m_pIOleInPlaceFrame;
return 0;
}
return E_NOINTERFACE;
}
long __stdcall CIOleInPlaceSite::GetWindow(void **hwnd )
{
abc("CIOleInPlaceSite::GetWindow");
*hwnd=b;
return 0;
}
long __stdcall CIOleInPlaceSite::GetWindowContext
(struct IOleInPlaceFrame ** ioipf,struct IOleInPlaceUIWindow ** ioipuw,struct tagRECT * r1,struct tagRECT * r2,struct tagOIFI *f)
{
*ioipuw = NULL;
*ioipf = m_pIOleInPlaceFrame;
GetClientRect(b,r1);
*r2=*r1;
f->cb = sizeof(struct tagOIFI);
f->hwndFrame=b;
return 0;
}
long __stdcall CIOleInPlaceFrame::QueryInterface(REFIID iid,void **ppv )
{
return m_pIOleClientSite->QueryInterface(iid,ppv);
}
xxx.rc
mmm MENU
begin
menuitem "Click",100
end
x.txt
start...
StgCreateDocfile..h=00000000,m_pIStorage=825C02F0...
MultiByteToWideChar..0000000B.....
OleCreateFromFile...h=00000000..m_pIUnknownObj..00421338...
QueryInterface..h=00000000..m_pIOleObject..00421324...
2...
CIOleClientSite..00000000.....
12...
CIAdviseSink.m_pIAdviseSink..00000000..dw..1.....
GetContainer...
CIOleClientSite...Q2...
IUnknown ...Q1...
2...
3...
2...
CIOleClientSite...Q2...
3...
CIOleClientSite...Q2...
3...
GetMoniker...
OleRun..h...00000000...
CIOleClientSite...Q2...
IUnknown ...Q1...
3...
3...
IOleWindow..IOleInPlaceSite..Q4...
23...
IOleWindow..IOleInPlaceSite..Q4...
CanInPlaceActivate...
OnInPlaceActivate...
CIOleInPlaceSite::GetWindow...
OnUIActivate...
IOleInPlaceUIWindow..IOleInPlaceFrame...
IUnknown ...Q1...
3...
IOleInPlaceUIWindow..IOleInPlaceFrame...
43...
IOleInPlaceUIWindow..IOleInPlaceFrame...
43...
43...
441...
44...
49...
46...
48...
442...
ShowObject...
DoVerb..00000000.....
3...
23...
43...
3...
3...
end...
xxx.cpp
#include <windows.h>
#include <docobj.h>
#include <stdio.h>
WNDCLASS w,w1;
HWND b,b1,b2; MSG c;
IStorage *m_pIStorage;IUnknown *m_pIUnknownObj;
HRESULT h;
char aa[100];
IOleObject *m_pIOleObject;
unsigned short ffile[512];
DWORD dw;
RECT rc;
void abc(char * p)
{
FILE *fp;
fp = fopen("d:\\xxx\\x.txt","a+");
fprintf(fp,"%s...\n",p);
fclose(fp);
}
long _stdcall zzz1(HWND w, UINT x, WPARAM y, LPARAM z)
{ abc("in zzz1");
return DefWindowProc(w,x,y,z);
}
class CIOleInPlaceFrame:public IOleInPlaceFrame
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef()
{abc("42");return 0;}
unsigned long __stdcall Release(void)
{abc("43");return 0;}
long __stdcall GetWindow(void ** )
{abc("GetWindow");return 0;}
long __stdcall ContextSensitiveHelp(int)
{abc("45");return 0;}
long __stdcall GetBorder(struct tagRECT *)
{abc("GetBorder");return 0;}
long __stdcall RequestBorderSpace(const struct tagRECT *)
{abc("47");return 0;}
long __stdcall SetBorderSpace(const struct tagRECT *)
{abc("SetBorderSpace");return 0;}
long __stdcall SetActiveObject(struct IOleInPlaceActiveObject *,const unsigned short *);
long __stdcall InsertMenus(void *,struct tagOleMenuGroupWidths *)
{abc("InsertMenus");return 0;}
long __stdcall SetMenu(void *,void *,void *);
long __stdcall RemoveMenus(void *)
{abc("443");return 0;}
long __stdcall SetStatusText(const unsigned short *)
{abc("444");return 0;}
long __stdcall EnableModeless(int)
{abc("445");return 0;}
long __stdcall TranslateAcceleratorA(struct tagMSG *,unsigned short)
{abc("446");return 0;}
};
CIOleInPlaceFrame * m_pIOleInPlaceFrame;
class CIAdviseSink :public IAdviseSink
{ public :
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("11");return 0;}
unsigned long __stdcall AddRef()
{abc("12");return 0;}
unsigned long __stdcall Release()
{abc("13");return 0;}
void __stdcall OnDataChange(struct tagFORMATETC *,struct tagSTGMEDIUM *)
{abc("14");}
void __stdcall OnViewChange(unsigned long,long)
{abc("15");}
void __stdcall OnRename(struct IMoniker *)
{abc("16");}
void __stdcall OnSave()
{abc("17");}
void __stdcall OnClose()
{abc("OnClose");}
};
CIAdviseSink *m_pIAdviseSink;
class CIOleClientSite :public IOleClientSite
{
public:
long _stdcall QueryInterface(REFIID,void **);
unsigned long _stdcall AddRef(void)
{ abc("2");return 0 ;}
unsigned long _stdcall Release(void)
{ abc("3");return 0 ;}
long _stdcall SaveObject(void)
{ abc("4");return 0; }
long _stdcall GetMoniker(unsigned long,unsigned long,struct IMoniker ** )
{ abc("GetMoniker");return E_NOTIMPL; }
long _stdcall GetContainer(struct IOleContainer ** )
{ abc("GetContainer");return E_NOTIMPL; }
long _stdcall ShowObject(void)
{ abc("ShowObject");return 0 ;}
long _stdcall OnShowWindow(int)
{ abc("OnShowWindow");return 0 ;}
long _stdcall RequestNewObjectLayout(void)
{ abc("9");return 0 ;}
} ;
CIOleClientSite * m_pIOleClientSite;
class CIOleInPlaceSite :public IOleInPlaceSite
{ public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("21");return 0;}
unsigned long __stdcall AddRef()
{abc("22");return 0;}
unsigned long __stdcall Release()
{abc("23");return 0;}
long __stdcall GetWindow(void ** );
long __stdcall ContextSensitiveHelp(int)
{abc("25");return 0;}
long __stdcall CanInPlaceActivate()
{abc("CanInPlaceActivate");return 0;}
long __stdcall OnInPlaceActivate()
{abc("OnInPlaceActivate");return 0;}
long __stdcall OnUIActivate()
{abc("OnUIActivate");return 0;}
long __stdcall GetWindowContext(struct IOleInPlaceFrame ** ,struct IOleInPlaceUIWindow ** ,struct tagRECT *,struct tagRECT *,struct tagOIFI *);
long __stdcall Scroll(struct tagSIZE)
{abc("221");return 0;}
long __stdcall OnUIDeactivate(int)
{abc("OnUIDeactivate");return 0;}
long __stdcall OnInPlaceDeactivate()
{abc("OnInPlaceDeactivate");return 0;}
long __stdcall DiscardUndoState()
{abc("224");return 0;}
long __stdcall DeactivateAndUndo()
{abc("225");return 0;}
long __stdcall OnPosRectChange(const struct tagRECT *)
{abc("226");return 0;}
};
CIOleInPlaceSite *m_pIOleInPlaceSite;
long _stdcall zzz(HWND, UINT, WPARAM, LPARAM);
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, char * k, int l)
{
abc("start");
w.hInstance=i;
w.lpszClassName="aaa";
w.lpfnWndProc=zzz;
w.lpszMenuName="mmm";
w.hbrBackground=GetStockObject(WHITE_BRUSH);
RegisterClass(&w);
b=CreateWindow("aaa","PB OLE",WS_OVERLAPPEDWINDOW, 1,1,300,300,0,0,i,0);
w1.hInstance=i;
w1.lpszClassName="aaa1";
w1.lpfnWndProc=zzz1;
w1.hbrBackground=GetStockObject(WHITE_BRUSH);
RegisterClass(&w1);
b1=CreateWindow("aaa1","PB OLE CHILD",
WS_CHILD|WS_CLIPCHILDREN|WS_VISIBLE|WS_CLIPSIBLINGS,
1,1,100,200,0,0,b,0);
ShowWindow(b,3);
while(GetMessage(&c,0,0,0))
DispatchMessage(&c);
abc("end");
return 1;
}
long _stdcall zzz(HWND w, UINT x, WPARAM y, LPARAM z)
{
if (x == WM_COMMAND)
{
OleInitialize(0);
h=StgCreateDocfile(0,STGM_TRANSACTED|STGM_READWRITE|STGM_SHARE_EXCLUSIVE|STGM_CREATE,
0,&m_pIStorage);
sprintf(aa,"StgCreateDocfile..h=%p,m_pIStorage=%p",h,m_pIStorage);
abc(aa);
h=MultiByteToWideChar(0,0,"d:\\zzz.bmp",-1,ffile,512);
sprintf(aa,"MultiByteToWideChar..%p..",h);
abc(aa);
h=OleCreateFromFile(CLSID_NULL,ffile,IID_IUnknown,OLERENDER_NONE,0,0,m_pIStorage,(void **)&m_pIUnknownObj);
sprintf(aa,"OleCreateFromFile...h=%p..m_pIUnknownObj..%p",h,m_pIUnknownObj);
abc(aa);
h=m_pIUnknownObj->QueryInterface(IID_IOleObject,(void **)&m_pIOleObject);
sprintf(aa,"QueryInterface..h=%p..m_pIOleObject..%p",h,m_pIOleObject);
abc(aa);
m_pIOleClientSite = new CIOleClientSite ;
h=m_pIOleObject->SetClientSite(m_pIOleClientSite);
sprintf(aa,"CIOleClientSite..%p..",h);
abc(aa);
m_pIAdviseSink = new CIAdviseSink;
h = m_pIOleObject->Advise(m_pIAdviseSink,&dw);
sprintf(aa,"CIAdviseSink.m_pIAdviseSink..%p..dw..%ld..",h,dw);
abc(aa);
m_pIOleInPlaceSite = new CIOleInPlaceSite;
m_pIOleInPlaceFrame = new CIOleInPlaceFrame;
h=OleRun(m_pIOleObject);
sprintf(aa,"OleRun..h...%p",h);
abc(aa);
GetClientRect(b,&rc);
h=m_pIOleObject->DoVerb(OLEIVERB_SHOW,0,m_pIOleClientSite,0,b,&rc);
sprintf(aa,"DoVerb..%p..",h);
abc(aa);
MessageBox(0,"end","end",0);
}
if (x==WM_DESTROY)
PostQuitMessage(0);
return DefWindowProc(w,x,y,z);
}
long _stdcall CIOleClientSite::QueryInterface(REFIID iid,void **ppv)
{
if (iid == IID_IUnknown)
{ abc ("IUnknown ...Q1");
*ppv = this;
return 0;
}
if (iid == IID_IOleClientSite)
{
abc ("CIOleClientSite...Q2");
*ppv = m_pIOleClientSite;
return 0;
}
if (iid == IID_IAdviseSink)
abc ("Q3");
if (iid == IID_IOleWindow|| iid == IID_IOleInPlaceSite)
{ abc ("IOleWindow..IOleInPlaceSite..Q4");
*ppv = m_pIOleInPlaceSite;
return 0;
}
if (iid == IID_IOleInPlaceUIWindow||iid == IID_IOleInPlaceFrame)
{ abc("IOleInPlaceUIWindow..IOleInPlaceFrame");
*ppv = m_pIOleInPlaceFrame;
return 0;
}
return E_NOINTERFACE;
}
long __stdcall CIOleInPlaceSite::GetWindow(void **hwnd )
{
abc("CIOleInPlaceSite::GetWindow");
*hwnd=b;
return 0;
}
long __stdcall CIOleInPlaceSite::GetWindowContext
(struct IOleInPlaceFrame ** ioipf,struct IOleInPlaceUIWindow ** ioipuw,struct tagRECT * r1,struct tagRECT * r2,struct tagOIFI *f)
{
*ioipuw = NULL;
*ioipf = m_pIOleInPlaceFrame;
GetClientRect(b,r1);
*r2=*r1;
f->cb = sizeof(struct tagOIFI);
f->hwndFrame=b;
return 0;
}
long __stdcall CIOleInPlaceFrame::QueryInterface(REFIID iid,void **ppv )
{
return m_pIOleClientSite->QueryInterface(iid,ppv);
}
long __stdcall CIOleInPlaceFrame::SetActiveObject
(struct IOleInPlaceActiveObject *ioipao,const unsigned short *t)
{
//*ioipao->GetWindow(b2);
return 0;
}
long __stdcall CIOleInPlaceFrame::SetMenu(void * m,void * m1,void *hwnd)
{
::SetMenu(b,m);
DrawMenuBar(b);
OleSetMenuDescriptor(m1,b,hwnd,0,0);
return 0;
}
xxx.rc
mmm MENU
begin
menuitem "Click",100
end
x.txt
start...
StgCreateDocfile..h=00000000,m_pIStorage=825AA168...
MultiByteToWideChar..0000000B.....
OleCreateFromFile...h=00000000..m_pIUnknownObj..00421338...
QueryInterface..h=00000000..m_pIOleObject..00421324...
2...
CIOleClientSite..00000000.....
12...
CIAdviseSink.m_pIAdviseSink..00000000..dw..1.....
GetContainer...
CIOleClientSite...Q2...
IUnknown ...Q1...
2...
3...
2...
CIOleClientSite...Q2...
3...
CIOleClientSite...Q2...
3...
GetMoniker...
OleRun..h...00000000...
CIOleClientSite...Q2...
IUnknown ...Q1...
3...
3...
IOleWindow..IOleInPlaceSite..Q4...
23...
IOleWindow..IOleInPlaceSite..Q4...
CanInPlaceActivate...
OnInPlaceActivate...
CIOleInPlaceSite::GetWindow...
OnUIActivate...
IOleInPlaceUIWindow..IOleInPlaceFrame...
IUnknown ...Q1...
3...
IOleInPlaceUIWindow..IOleInPlaceFrame...
43...
IOleInPlaceUIWindow..IOleInPlaceFrame...
43...
43...
InsertMenus...
GetWindow...
GetBorder...
SetBorderSpace...
ShowObject...
DoVerb..00000000.....
444...
444...
444...
444...
444...
444...
444...
444...
444...
444...
444...
444...
444...
444...
444...
444...
444...
3...
23...
43...
3...
3...
end...
xxx.cpp
#include <windows.h>
#include <docobj.h>
#include <stdio.h>
WNDCLASS w,w1;
HWND b,b1,b2; MSG c;
IStorage *m_pIStorage;IUnknown *m_pIUnknownObj;
HRESULT h;
char aa[100];
IOleObject *m_pIOleObject;
unsigned short ffile[512];
DWORD dw;
RECT rc;
void abc(char * p)
{
FILE *fp;
fp = fopen("d:\\xxx\\x.txt","a+");
fprintf(fp,"%s...\n",p);
fclose(fp);
}
long _stdcall zzz1(HWND w, UINT x, WPARAM y, LPARAM z)
{ abc("in zzz1");
return DefWindowProc(w,x,y,z);
}
class CIOleInPlaceFrame:public IOleInPlaceFrame
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef()
{abc("42");return 0;}
unsigned long __stdcall Release(void)
{abc("43");return 0;}
long __stdcall GetWindow(void ** )
{abc("GetWindow");return 0;}
long __stdcall ContextSensitiveHelp(int)
{abc("45");return 0;}
long __stdcall GetBorder(struct tagRECT *)
{abc("GetBorder");return 0;}
long __stdcall RequestBorderSpace(const struct tagRECT *)
{abc("47");return 0;}
long __stdcall SetBorderSpace(const struct tagRECT *)
{abc("SetBorderSpace");return 0;}
long __stdcall SetActiveObject(struct IOleInPlaceActiveObject *,const unsigned short *);
long __stdcall InsertMenus(void *,struct tagOleMenuGroupWidths *)
{abc("InsertMenus");return 0;}
long __stdcall SetMenu(void *,void *,void *);
long __stdcall RemoveMenus(void *)
{abc("443");return 0;}
long __stdcall SetStatusText(const unsigned short *)
{abc("444");return E_NOTIMPL;}
long __stdcall EnableModeless(int)
{abc("445");return 0;}
long __stdcall TranslateAcceleratorA(struct tagMSG *,unsigned short)
{abc("446");return 0;}
};
CIOleInPlaceFrame * m_pIOleInPlaceFrame;
class CIAdviseSink :public IAdviseSink
{ public :
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("11");return 0;}
unsigned long __stdcall AddRef()
{abc("12");return 0;}
unsigned long __stdcall Release()
{abc("13");return 0;}
void __stdcall OnDataChange(struct tagFORMATETC *,struct tagSTGMEDIUM *)
{abc("14");}
void __stdcall OnViewChange(unsigned long,long)
{abc("15");}
void __stdcall OnRename(struct IMoniker *)
{abc("16");}
void __stdcall OnSave()
{abc("17");}
void __stdcall OnClose()
{abc("OnClose");}
};
CIAdviseSink *m_pIAdviseSink;
class CIOleClientSite :public IOleClientSite
{
public:
long _stdcall QueryInterface(REFIID,void **);
unsigned long _stdcall AddRef(void)
{ abc("2");return 0 ;}
unsigned long _stdcall Release(void)
{ abc("3");return 0 ;}
long _stdcall SaveObject(void)
{ abc("4");return 0; }
long _stdcall GetMoniker(unsigned long,unsigned long,struct IMoniker ** )
{ abc("GetMoniker");return E_NOTIMPL; }
long _stdcall GetContainer(struct IOleContainer ** )
{ abc("GetContainer");return E_NOTIMPL; }
long _stdcall ShowObject(void)
{ abc("ShowObject");return 0 ;}
long _stdcall OnShowWindow(int)
{ abc("OnShowWindow");return 0 ;}
long _stdcall RequestNewObjectLayout(void)
{ abc("9");return 0 ;}
} ;
CIOleClientSite * m_pIOleClientSite;
class CIOleInPlaceSite :public IOleInPlaceSite
{ public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("21");return 0;}
unsigned long __stdcall AddRef()
{abc("22");return 0;}
unsigned long __stdcall Release()
{abc("23");return 0;}
long __stdcall GetWindow(void ** );
long __stdcall ContextSensitiveHelp(int)
{abc("25");return 0;}
long __stdcall CanInPlaceActivate()
{abc("CanInPlaceActivate");return 0;}
long __stdcall OnInPlaceActivate()
{abc("OnInPlaceActivate");return 0;}
long __stdcall OnUIActivate()
{abc("OnUIActivate");return 0;}
long __stdcall GetWindowContext(struct IOleInPlaceFrame ** ,struct IOleInPlaceUIWindow ** ,struct tagRECT *,struct tagRECT *,struct tagOIFI *);
long __stdcall Scroll(struct tagSIZE)
{abc("221");return 0;}
long __stdcall OnUIDeactivate(int)
{abc("OnUIDeactivate");return 0;}
long __stdcall OnInPlaceDeactivate()
{abc("OnInPlaceDeactivate");return 0;}
long __stdcall DiscardUndoState()
{abc("224");return 0;}
long __stdcall DeactivateAndUndo()
{abc("225");return 0;}
long __stdcall OnPosRectChange(const struct tagRECT *)
{abc("226");return 0;}
};
CIOleInPlaceSite *m_pIOleInPlaceSite;
long _stdcall zzz(HWND, UINT, WPARAM, LPARAM);
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, char * k, int l)
{
abc("start");
w.hInstance=i;
w.lpszClassName="aaa";
w.lpfnWndProc=zzz;
w.lpszMenuName="mmm";
w.hbrBackground=GetStockObject(WHITE_BRUSH);
RegisterClass(&w);
b=CreateWindow("aaa","PB OLE",WS_OVERLAPPEDWINDOW, 1,1,300,300,0,0,i,0);
w1.hInstance=i;
w1.lpszClassName="aaa1";
w1.lpfnWndProc=zzz1;
w1.hbrBackground=GetStockObject(WHITE_BRUSH);
RegisterClass(&w1);
b1=CreateWindow("aaa1","PB OLE CHILD",
WS_CHILD|WS_CLIPCHILDREN|WS_VISIBLE|WS_CLIPSIBLINGS,
1,1,100,200,0,0,b,0);
ShowWindow(b,3);
while(GetMessage(&c,0,0,0))
DispatchMessage(&c);
abc("end");
return 1;
}
long _stdcall zzz(HWND w, UINT x, WPARAM y, LPARAM z)
{
if (x == WM_COMMAND)
{
OleInitialize(0);
h=StgCreateDocfile(0,STGM_TRANSACTED|STGM_READWRITE|STGM_SHARE_EXCLUSIVE|STGM_CREATE,
0,&m_pIStorage);
sprintf(aa,"StgCreateDocfile..h=%p,m_pIStorage=%p",h,m_pIStorage);
abc(aa);
h=MultiByteToWideChar(0,0,"d:\\zzz.bmp",-1,ffile,512);
sprintf(aa,"MultiByteToWideChar..%p..",h);
abc(aa);
h=OleCreateFromFile(CLSID_NULL,ffile,IID_IUnknown,OLERENDER_NONE,0,0,m_pIStorage,(void **)&m_pIUnknownObj);
sprintf(aa,"OleCreateFromFile...h=%p..m_pIUnknownObj..%p",h,m_pIUnknownObj);
abc(aa);
h=m_pIUnknownObj->QueryInterface(IID_IOleObject,(void **)&m_pIOleObject);
sprintf(aa,"QueryInterface..h=%p..m_pIOleObject..%p",h,m_pIOleObject);
abc(aa);
m_pIOleClientSite = new CIOleClientSite ;
h=m_pIOleObject->SetClientSite(m_pIOleClientSite);
sprintf(aa,"CIOleClientSite..%p..",h);
abc(aa);
m_pIAdviseSink = new CIAdviseSink;
h = m_pIOleObject->Advise(m_pIAdviseSink,&dw);
sprintf(aa,"CIAdviseSink.m_pIAdviseSink..%p..dw..%ld..",h,dw);
abc(aa);
m_pIOleInPlaceSite = new CIOleInPlaceSite;
m_pIOleInPlaceFrame = new CIOleInPlaceFrame;
h=OleRun(m_pIOleObject);
sprintf(aa,"OleRun..h...%p",h);
abc(aa);
GetClientRect(b,&rc);
h=m_pIOleObject->DoVerb(OLEIVERB_SHOW,0,m_pIOleClientSite,0,b,&rc);
sprintf(aa,"DoVerb..%p..",h);
abc(aa);
MessageBox(0,"end","end",0);
}
if (x==WM_DESTROY)
PostQuitMessage(0);
return DefWindowProc(w,x,y,z);
}
long _stdcall CIOleClientSite::QueryInterface(REFIID iid,void **ppv)
{
if (iid == IID_IUnknown)
{ abc ("IUnknown ...Q1");
*ppv = this;
return 0;
}
if (iid == IID_IOleClientSite)
{
abc ("CIOleClientSite...Q2");
*ppv = m_pIOleClientSite;
return 0;
}
if (iid == IID_IAdviseSink)
abc ("Q3");
if (iid == IID_IOleWindow|| iid == IID_IOleInPlaceSite)
{ abc ("IOleWindow..IOleInPlaceSite..Q4");
*ppv = m_pIOleInPlaceSite;
return 0;
}
if (iid == IID_IOleInPlaceUIWindow||iid == IID_IOleInPlaceFrame)
{ abc("IOleInPlaceUIWindow..IOleInPlaceFrame");
*ppv = m_pIOleInPlaceFrame;
return 0;
}
return E_NOINTERFACE;
}
long __stdcall CIOleInPlaceSite::GetWindow(void **hwnd )
{
abc("CIOleInPlaceSite::GetWindow");
*hwnd=b;
return 0;
}
long __stdcall CIOleInPlaceSite::GetWindowContext
(struct IOleInPlaceFrame ** ioipf,struct IOleInPlaceUIWindow ** ioipuw,struct tagRECT * r1,struct tagRECT * r2,struct tagOIFI *f)
{
*ioipuw = NULL;
*ioipf = m_pIOleInPlaceFrame;
GetClientRect(b,r1);
*r2=*r1;
f->cb = sizeof(struct tagOIFI);
f->hwndFrame=b;
return 0;
}
long __stdcall CIOleInPlaceFrame::QueryInterface(REFIID iid,void **ppv )
{
return m_pIOleClientSite->QueryInterface(iid,ppv);
}
long __stdcall CIOleInPlaceFrame::SetActiveObject
(struct IOleInPlaceActiveObject *ioipao,const unsigned short *t)
{
abc("CIOleInPlaceFrame::SetActiveObject");
//*ioipao->GetWindow(b2);
return 0;
}
long __stdcall CIOleInPlaceFrame::SetMenu(void * m,void * m1,void *hwnd)
{
abc("CIOleInPlaceFrame::SetMenu");
::SetMenu(b,m);
DrawMenuBar(b);
OleSetMenuDescriptor(m1,b,hwnd,0,0);
return 0;
}
xxx.rc
mmm MENU
begin
menuitem "Click",100
end
x.txt
start...
StgCreateDocfile..h=00000000,m_pIStorage=825B3538...
MultiByteToWideChar..0000000B.....
OleCreateFromFile...h=00000000..m_pIUnknownObj..00421338...
QueryInterface..h=00000000..m_pIOleObject..00421324...
2...
CIOleClientSite..00000000.....
12...
CIAdviseSink.m_pIAdviseSink..00000000..dw..1.....
GetContainer...
CIOleClientSite...Q2...
IUnknown ...Q1...
2...
3...
2...
CIOleClientSite...Q2...
3...
CIOleClientSite...Q2...
3...
GetMoniker...
OleRun..h...00000000...
CIOleClientSite...Q2...
IUnknown ...Q1...
3...
3...
IOleWindow..IOleInPlaceSite..Q4...
23...
IOleWindow..IOleInPlaceSite..Q4...
CanInPlaceActivate...
OnInPlaceActivate...
CIOleInPlaceSite::GetWindow...
OnUIActivate...
IOleInPlaceUIWindow..IOleInPlaceFrame...
IUnknown ...Q1...
3...
IOleInPlaceUIWindow..IOleInPlaceFrame...
43...
IOleInPlaceUIWindow..IOleInPlaceFrame...
43...
43...
InsertMenus...
GetWindow...
CIOleInPlaceFrame::SetActiveObject...
GetBorder...
SetBorderSpace...
CIOleInPlaceFrame::SetMenu...
ShowObject...
DoVerb..00000000.....
3...
23...
43...
3...
3...
end...
xxx.cpp
#include <windows.h>
#include <docobj.h>
#include <stdio.h>
WNDCLASS w,w1;
HWND b,b1,b2; MSG c;
IStorage *m_pIStorage;IUnknown *m_pIUnknownObj;
HRESULT h;
char aa[100];
IOleObject *m_pIOleObject;
unsigned short ffile[512];
DWORD dw;
RECT rc;
void abc(char * p)
{
FILE *fp;
fp = fopen("d:\\xxx\\x.txt","a+");
fprintf(fp,"%s...\n",p);
fclose(fp);
}
long _stdcall zzz1(HWND w, UINT x, WPARAM y, LPARAM z)
{ abc("in zzz1");
return DefWindowProc(w,x,y,z);
}
class CIOleInPlaceFrame:public IOleInPlaceFrame
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef()
{abc("42");return 0;}
unsigned long __stdcall Release(void)
{abc("43");return 0;}
long __stdcall GetWindow(void ** );
long __stdcall ContextSensitiveHelp(int)
{abc("45");return 0;}
long __stdcall GetBorder(struct tagRECT *);
long __stdcall RequestBorderSpace(const struct tagRECT *)
{abc("RequestBorderSpace");return 0;}
long __stdcall SetBorderSpace(const struct tagRECT *);
long __stdcall SetActiveObject(struct IOleInPlaceActiveObject *,const unsigned short *);
long __stdcall InsertMenus(void *,struct tagOleMenuGroupWidths *)
{abc("InsertMenus");return 0;}
long __stdcall SetMenu(void *,void *,void *);
long __stdcall RemoveMenus(void *)
{abc("443");return 0;}
long __stdcall SetStatusText(const unsigned short *)
{abc("444");return E_NOTIMPL;}
long __stdcall EnableModeless(int)
{abc("445");return 0;}
long __stdcall TranslateAcceleratorA(struct tagMSG *,unsigned short)
{abc("446");return 0;}
};
CIOleInPlaceFrame * m_pIOleInPlaceFrame;
class CIAdviseSink :public IAdviseSink
{ public :
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("11");return 0;}
unsigned long __stdcall AddRef()
{abc("12");return 0;}
unsigned long __stdcall Release()
{abc("13");return 0;}
void __stdcall OnDataChange(struct tagFORMATETC *,struct tagSTGMEDIUM *)
{abc("14");}
void __stdcall OnViewChange(unsigned long,long)
{abc("15");}
void __stdcall OnRename(struct IMoniker *)
{abc("16");}
void __stdcall OnSave()
{abc("17");}
void __stdcall OnClose()
{abc("OnClose");}
};
CIAdviseSink *m_pIAdviseSink;
class CIOleClientSite :public IOleClientSite
{
public:
long _stdcall QueryInterface(REFIID,void **);
unsigned long _stdcall AddRef(void)
{ abc("2");return 0 ;}
unsigned long _stdcall Release(void)
{ abc("3");return 0 ;}
long _stdcall SaveObject(void)
{ abc("4");return 0; }
long _stdcall GetMoniker(unsigned long,unsigned long,struct IMoniker ** )
{ abc("GetMoniker");return E_NOTIMPL; }
long _stdcall GetContainer(struct IOleContainer ** )
{ abc("GetContainer");return E_NOTIMPL; }
long _stdcall ShowObject(void)
{ abc("ShowObject");return 0 ;}
long _stdcall OnShowWindow(int)
{ abc("OnShowWindow");return 0 ;}
long _stdcall RequestNewObjectLayout(void)
{ abc("9");return 0 ;}
} ;
CIOleClientSite * m_pIOleClientSite;
class CIOleInPlaceSite :public IOleInPlaceSite
{ public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("21");return 0;}
unsigned long __stdcall AddRef()
{abc("22");return 0;}
unsigned long __stdcall Release()
{abc("23");return 0;}
long __stdcall GetWindow(void ** );
long __stdcall ContextSensitiveHelp(int)
{abc("25");return 0;}
long __stdcall CanInPlaceActivate()
{abc("CanInPlaceActivate");return 0;}
long __stdcall OnInPlaceActivate()
{abc("OnInPlaceActivate");return 0;}
long __stdcall OnUIActivate()
{abc("OnUIActivate");return 0;}
long __stdcall GetWindowContext(struct IOleInPlaceFrame ** ,struct IOleInPlaceUIWindow ** ,struct tagRECT *,struct tagRECT *,struct tagOIFI *);
long __stdcall Scroll(struct tagSIZE)
{abc("221");return 0;}
long __stdcall OnUIDeactivate(int)
{abc("OnUIDeactivate");return 0;}
long __stdcall OnInPlaceDeactivate()
{abc("OnInPlaceDeactivate");return 0;}
long __stdcall DiscardUndoState()
{abc("224");return 0;}
long __stdcall DeactivateAndUndo()
{abc("225");return 0;}
long __stdcall OnPosRectChange(const struct tagRECT *)
{abc("226");return 0;}
};
CIOleInPlaceSite *m_pIOleInPlaceSite;
long _stdcall zzz(HWND, UINT, WPARAM, LPARAM);
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, char * k, int l)
{
abc("start");
w.hInstance=i;
w.lpszClassName="aaa";
w.lpfnWndProc=zzz;
w.lpszMenuName="mmm";
w.hbrBackground=GetStockObject(WHITE_BRUSH);
RegisterClass(&w);
b=CreateWindow("aaa","PB OLE",WS_OVERLAPPEDWINDOW, 1,1,300,300,0,0,i,0);
w1.hInstance=i;
w1.lpszClassName="aaa1";
w1.lpfnWndProc=zzz1;
w1.hbrBackground=GetStockObject(WHITE_BRUSH);
RegisterClass(&w1);
b1=CreateWindow("aaa1","PB OLE CHILD",
WS_CHILD|WS_CLIPCHILDREN|WS_VISIBLE|WS_CLIPSIBLINGS,
1,1,100,200,0,0,b,0);
ShowWindow(b,1);
while(GetMessage(&c,0,0,0))
DispatchMessage(&c);
abc("end");
return 1;
}
long _stdcall zzz(HWND w, UINT x, WPARAM y, LPARAM z)
{
if (x == WM_COMMAND)
{
OleInitialize(0);
h=StgCreateDocfile(0,STGM_TRANSACTED|STGM_READWRITE|STGM_SHARE_EXCLUSIVE|STGM_CREATE,
0,&m_pIStorage);
sprintf(aa,"StgCreateDocfile..h=%p,m_pIStorage=%p",h,m_pIStorage);
abc(aa);
h=MultiByteToWideChar(0,0,"d:\\zzz.bmp",-1,ffile,512);
sprintf(aa,"MultiByteToWideChar..%p..",h);
abc(aa);
h=OleCreateFromFile(CLSID_NULL,ffile,IID_IUnknown,OLERENDER_NONE,0,0,m_pIStorage,(void **)&m_pIUnknownObj);
sprintf(aa,"OleCreateFromFile...h=%p..m_pIUnknownObj..%p",h,m_pIUnknownObj);
abc(aa);
h=m_pIUnknownObj->QueryInterface(IID_IOleObject,(void **)&m_pIOleObject);
sprintf(aa,"QueryInterface..h=%p..m_pIOleObject..%p",h,m_pIOleObject);
abc(aa);
m_pIOleClientSite = new CIOleClientSite ;
h=m_pIOleObject->SetClientSite(m_pIOleClientSite);
sprintf(aa,"CIOleClientSite..%p..",h);
abc(aa);
m_pIAdviseSink = new CIAdviseSink;
h = m_pIOleObject->Advise(m_pIAdviseSink,&dw);
sprintf(aa,"CIAdviseSink.m_pIAdviseSink..%p..dw..%ld..",h,dw);
abc(aa);
m_pIOleInPlaceSite = new CIOleInPlaceSite;
m_pIOleInPlaceFrame = new CIOleInPlaceFrame;
h=OleRun(m_pIOleObject);
sprintf(aa,"OleRun..h...%p",h);
abc(aa);
GetClientRect(b,&rc);
h=m_pIOleObject->DoVerb(OLEIVERB_SHOW,0,m_pIOleClientSite,0,b,&rc);
sprintf(aa,"DoVerb..%p..",h);
abc(aa);
MessageBox(0,"end","end",0);
}
if (x==WM_DESTROY)
PostQuitMessage(0);
return DefWindowProc(w,x,y,z);
}
long _stdcall CIOleClientSite::QueryInterface(REFIID iid,void **ppv)
{
if (iid == IID_IUnknown)
{ abc ("IUnknown ...Q1");
*ppv = this;
return 0;
}
if (iid == IID_IOleClientSite)
{
abc ("CIOleClientSite...Q2");
*ppv = m_pIOleClientSite;
return 0;
}
if (iid == IID_IAdviseSink)
abc ("Q3");
if (iid == IID_IOleWindow|| iid == IID_IOleInPlaceSite)
{ abc ("IOleWindow..IOleInPlaceSite..Q4");
*ppv = m_pIOleInPlaceSite;
return 0;
}
if (iid == IID_IOleInPlaceUIWindow||iid == IID_IOleInPlaceFrame)
{ abc("IOleInPlaceUIWindow..IOleInPlaceFrame");
*ppv = m_pIOleInPlaceFrame;
return 0;
}
return E_NOINTERFACE;
}
long __stdcall CIOleInPlaceSite::GetWindow(void **hwnd )
{
abc("CIOleInPlaceSite::GetWindow");
*hwnd=b;
return 0;
}
long __stdcall CIOleInPlaceSite::GetWindowContext
(struct IOleInPlaceFrame ** ioipf,struct IOleInPlaceUIWindow ** ioipuw,struct tagRECT * r1,struct tagRECT * r2,struct tagOIFI *f)
{
*ioipuw = NULL;
*ioipf = m_pIOleInPlaceFrame;
GetClientRect(b,r1);
*r2=*r1;
f->cb = sizeof(struct tagOIFI);
f->hwndFrame=b;
return 0;
}
long __stdcall CIOleInPlaceFrame::QueryInterface(REFIID iid,void **ppv )
{
return m_pIOleClientSite->QueryInterface(iid,ppv);
}
long __stdcall CIOleInPlaceFrame::SetActiveObject
(struct IOleInPlaceActiveObject *ioipao,const unsigned short *t)
{
abc("CIOleInPlaceFrame::SetActiveObject");
ioipao->GetWindow(&b2);
return 0;
}
long __stdcall CIOleInPlaceFrame::SetMenu(void * m,void * m1,void *hwnd)
{
abc("CIOleInPlaceFrame::SetMenu");
::SetMenu(b,m);
DrawMenuBar(b);
OleSetMenuDescriptor(m1,b,hwnd,0,0);
return 0;
}
long __stdcall CIOleInPlaceFrame::GetWindow(void ** hwnd)
{ abc("CIOleInPlaceFrame::GetWindow");
*hwnd = b;
return 0;
}
long __stdcall CIOleInPlaceFrame::GetBorder(struct tagRECT *r)
{
abc("GetBorder");
GetClientRect(b,r);
return 0;
}
long __stdcall CIOleInPlaceFrame::SetBorderSpace(const struct tagRECT * r)
{
abc("SetBorderSpace");
RECT rc;
GetClientRect(b,&rc);
rc.left+=r->left;
rc.right-=r->right;
rc.top+=r->top;
rc.bottom-=r->bottom;
SetWindowPos(b1,0,rc.left,rc.top,rc.right-rc.left,rc.bottom-rc.top,
SWP_NOZORDER|SWP_NOACTIVATE);
return 0;
}
xxx.rc
mmm MENU
begin
menuitem "Click",100
end
x.txt
start...
StgCreateDocfile..h=00000000,m_pIStorage=825C5CD8...
MultiByteToWideChar..0000000B.....
OleCreateFromFile...h=00000000..m_pIUnknownObj..00421338...
QueryInterface..h=00000000..m_pIOleObject..00421324...
2...
CIOleClientSite..00000000.....
12...
CIAdviseSink.m_pIAdviseSink..00000000..dw..1.....
GetContainer...
CIOleClientSite...Q2...
IUnknown ...Q1...
2...
3...
2...
CIOleClientSite...Q2...
3...
CIOleClientSite...Q2...
3...
GetMoniker...
OleRun..h...00000000...
CIOleClientSite...Q2...
IUnknown ...Q1...
3...
3...
IOleWindow..IOleInPlaceSite..Q4...
23...
IOleWindow..IOleInPlaceSite..Q4...
CanInPlaceActivate...
OnInPlaceActivate...
CIOleInPlaceSite::GetWindow...
OnUIActivate...
IOleInPlaceUIWindow..IOleInPlaceFrame...
IUnknown ...Q1...
3...
IOleInPlaceUIWindow..IOleInPlaceFrame...
43...
IOleInPlaceUIWindow..IOleInPlaceFrame...
43...
43...
InsertMenus...
CIOleInPlaceFrame::GetWindow...
CIOleInPlaceFrame::SetActiveObject...
GetBorder...
RequestBorderSpace...
SetBorderSpace...
CIOleInPlaceFrame::SetMenu...
ShowObject...
DoVerb..00000000.....
GetBorder...
RequestBorderSpace...
SetBorderSpace...
3...
23...
43...
3...
3...
end...
Have any suggestions, comments, ideas, cracked code, feed back ? Feel free to let us know .
Want to be in touch with still more latest technologies? Visit VIJAY MUKHI'S TECHNOLOGY CORNUCOPIA .