SetWindowsHookEx - CBTProc
I've been "playing" with SetWindowsHookEx for the past
several days trying to accomplish something. I'm not sure
what I'm doing wrong, but what I would like to do is have
a window that hosts an app's main window as a child of
my window. I was going to do this by trapping
HCBT_CREATWND using SetWindowsHookEx and
change CREATESTRUCT::hwndParent to my window.
Does this sound plausible? I'd like to run Powerpoint
in my child window instead of full screen. I've got all
the powerpoint work completed, but now I want it to
take up a section of my dialog rather than full screen.
There's an ActiveX out there that does this, but it's
$1000 (claims to be $99 on some websites but when
you register it, it's $1000). I've already got all the work
done with powerpoint, seems a shame to pay that much
just to make it a child of my window.
Here's what I've got so far:
//LoadLibrary and GetProcAddress on my DLL then...
//this called within a function called SetHook() in my dll
//by my exe
hHook = SetWindowsHookEx(WH_CBT, CBTProc,
GetModuleHandle(NULL) , GetCurrentThreadId());
//from exe
//Create app here
//called from within a dll func named Unhook() in my dll
//by exe
if(ghHook != NULL)
UnhookWindowsHookEx(ghHook);
//Then in my dll
LRESULT CALLBACK CBTProc(int nCode,
WPARAM wParam, LPARAM lParam)
{
if(nCode == HCBT_CREATEWND)
{
LPCBT_CREATEWND pCW =
(LPCBT_CREATEWND)lParam;
LPCREATESTRUCT pCS =
(LPCREATESTRUCT)pCW->lpcs;
//see if its the right class and name, if so
//change the parent
}
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
Thanks for any help, I've been spinning my wheels on this for
awhile now.
Steven