View mode: basic / threaded / horizontal-split · Log in · Help
October 08, 2008
Embedding DWT
I have created an IE toolbar by creating a COM server and then using DWT for 
the interface. I'm able to get everything to display properly, but when I 
open windows and then close them, it seems like DWT is crashing somewhere 
because the parent windows disappear as well.

I'm using Shell.win32_new to create my Shell because I need it to use the IE 
hwnd as it's parent. I know that win32_new is makred as something that is 
not part of the public API, but I'm not sure how else I can solve my 
problem.

Are there any other ways that I can create a shell that has an HWND parent?

Lastly, are there any recommended ways of debugging a D dll? I'm having a 
hell of a time right now and frankly it seems that adding logging to a file 
is the only way that I can do it (ewwww).

Any help is _GREATLY_ appreciated. Thanks
October 08, 2008
Re: Embedding DWT
sleek schrieb:
> I have created an IE toolbar by creating a COM server and then using DWT for 
> the interface. I'm able to get everything to display properly, but when I 
> open windows and then close them, it seems like DWT is crashing somewhere 
> because the parent windows disappear as well.
> 
> I'm using Shell.win32_new to create my Shell because I need it to use the IE 
> hwnd as it's parent. I know that win32_new is makred as something that is 
> not part of the public API, but I'm not sure how else I can solve my 
> problem.
> 
> Are there any other ways that I can create a shell that has an HWND parent?
> 
> Lastly, are there any recommended ways of debugging a D dll? I'm having a 
> hell of a time right now and frankly it seems that adding logging to a file 
> is the only way that I can do it (ewwww).
> 
> Any help is _GREATLY_ appreciated. Thanks 
> 
> 

Well, a IE toolbar will never be X-platform, so I think it is OK to rely
on win32 only features.
Another good resource to get answers is eclipse.org/platform/swt newsgroup.

Debugging: well you can load it and then "attach to the process".

I am curious, how did you do the COM server? Did you use the DWT ole
package or dwin or something else?
October 08, 2008
Re: Embedding DWT
Frank Benoit wrote:
> Well, a IE toolbar will never be X-platform, so I think it is OK to rely
> on win32 only features.

IE is available for mac & Windows Mobile. Whether the toolbars will work 
is a different story.
October 08, 2008
Re: Embedding DWT
Frank,

So we are using win32_new which seems to be correctly creating the root 
shell for us. However, if we open any child windows that parent this root 
shell and then close those windows, it seems like something is crashing 
because the window _and_ the root window (in this case IE) go away. Any 
ideas?

As to the COM server, we used dwin. The activex control we created used DWT. 
I'd be more than happy to share this code with you. Do you have an IM 
account that we can chat live?

"Frank Benoit" <keinfarbton@googlemail.com> wrote in message 
news:gchleo$10mk$1@digitalmars.com...
> sleek schrieb:
>> I have created an IE toolbar by creating a COM server and then using DWT 
>> for
>> the interface. I'm able to get everything to display properly, but when I
>> open windows and then close them, it seems like DWT is crashing somewhere
>> because the parent windows disappear as well.
>>
>> I'm using Shell.win32_new to create my Shell because I need it to use the 
>> IE
>> hwnd as it's parent. I know that win32_new is makred as something that is
>> not part of the public API, but I'm not sure how else I can solve my
>> problem.
>>
>> Are there any other ways that I can create a shell that has an HWND 
>> parent?
>>
>> Lastly, are there any recommended ways of debugging a D dll? I'm having a
>> hell of a time right now and frankly it seems that adding logging to a 
>> file
>> is the only way that I can do it (ewwww).
>>
>> Any help is _GREATLY_ appreciated. Thanks
>>
>>
>
> Well, a IE toolbar will never be X-platform, so I think it is OK to rely
> on win32 only features.
> Another good resource to get answers is eclipse.org/platform/swt 
> newsgroup.
>
> Debugging: well you can load it and then "attach to the process".
>
> I am curious, how did you do the COM server? Did you use the DWT ole
> package or dwin or something else?
October 08, 2008
Re: Embedding DWT
Hello,

I am working with sleek on this project and just wanted to update the 
newsgroup that we found the problem that was causing our crash. The bug has 
nothing at all to do with dwt. It ends up that DWT call 
CoFreeUnusedLibraries every time it does a release of a COM object. It ends 
up that our COM server was set up incorectelly. DllCanUnloadNow was 
returning true because we were not incrementing the Module lock count each 
time we created a COM object.

After fixing this things started working much better.

"sleek" <cslush@gmail.com> wrote in message 
news:gcian7$2kvg$1@digitalmars.com...
> Frank,
>
> So we are using win32_new which seems to be correctly creating the root 
> shell for us. However, if we open any child windows that parent this root 
> shell and then close those windows, it seems like something is crashing 
> because the window _and_ the root window (in this case IE) go away. Any 
> ideas?
>
> As to the COM server, we used dwin. The activex control we created used 
> DWT. I'd be more than happy to share this code with you. Do you have an IM 
> account that we can chat live?
>
> "Frank Benoit" <keinfarbton@googlemail.com> wrote in message 
> news:gchleo$10mk$1@digitalmars.com...
>> sleek schrieb:
>>> I have created an IE toolbar by creating a COM server and then using DWT 
>>> for
>>> the interface. I'm able to get everything to display properly, but when 
>>> I
>>> open windows and then close them, it seems like DWT is crashing 
>>> somewhere
>>> because the parent windows disappear as well.
>>>
>>> I'm using Shell.win32_new to create my Shell because I need it to use 
>>> the IE
>>> hwnd as it's parent. I know that win32_new is makred as something that 
>>> is
>>> not part of the public API, but I'm not sure how else I can solve my
>>> problem.
>>>
>>> Are there any other ways that I can create a shell that has an HWND 
>>> parent?
>>>
>>> Lastly, are there any recommended ways of debugging a D dll? I'm having 
>>> a
>>> hell of a time right now and frankly it seems that adding logging to a 
>>> file
>>> is the only way that I can do it (ewwww).
>>>
>>> Any help is _GREATLY_ appreciated. Thanks
>>>
>>>
>>
>> Well, a IE toolbar will never be X-platform, so I think it is OK to rely
>> on win32 only features.
>> Another good resource to get answers is eclipse.org/platform/swt 
>> newsgroup.
>>
>> Debugging: well you can load it and then "attach to the process".
>>
>> I am curious, how did you do the COM server? Did you use the DWT ole
>> package or dwin or something else?
>
>
October 08, 2008
Re: Embedding DWT
Michael Robellard schrieb:
> Hello,
> 
> I am working with sleek on this project and just wanted to update the 
> newsgroup that we found the problem that was causing our crash. The bug has 
> nothing at all to do with dwt. It ends up that DWT call 
> CoFreeUnusedLibraries every time it does a release of a COM object. It ends 
> up that our COM server was set up incorectelly. DllCanUnloadNow was 
> returning true because we were not incrementing the Module lock count each 
> time we created a COM object.
> 
> After fixing this things started working much better.
> 

Thanks for the update and also thanks for using DWT.

Frank
October 10, 2008
Re: Embedding DWT
> Do you have an IM 
> account that we can chat live?

If there is still the need, there is IRC freenode #DWT
http://mibbit.com/
October 10, 2008
Re: Embedding DWT
Frank,

We are having an issue right now that we can't debug. In particular, it has 
to do with multiple IE windows opening. When a single IE window is open, all 
works great. However, if a new one opens up, we get a crash. We have log 
statements in the code, but none of them are even getting hit, which leads 
us to believe that this probably is happening somewhere in the DLL attach. 
We have trying use windbg and ddbg to track down the issue, but we're at a 
loss here. Any ideas what we can look at to try and track this thing down?

"Frank Benoit" <keinfarbton@googlemail.com> wrote in message 
news:gcmugi$2jn0$1@digitalmars.com...
>
>> Do you have an IM
>> account that we can chat live?
>
> If there is still the need, there is IRC freenode #DWT
> http://mibbit.com/
October 14, 2008
Re: Embedding DWT
Threading issues have been resolved. Basically we needed to create a shell 
that parented an HWND we were provided. We tried using display.syncExec 
which worked until we attempted the Shell.win32_new ... apparantly you can't 
create a window that parents an HWND from a different thread. So instead, in 
the syncExec, we create a new normal shell, create an OleFrame that parents 
the shell. After the syncExec, we now have a shell object with a bogus hwnd. 
So what we do is a simple Windows function call:   SetParent(shell.handle, 
hwndParent). voila, problem solved. DWT is making me happy again

"sleek" <cslush@gmail.com> wrote in message 
news:gcnko8$25d6$1@digitalmars.com...
> Frank,
>
> We are having an issue right now that we can't debug. In particular, it 
> has to do with multiple IE windows opening. When a single IE window is 
> open, all works great. However, if a new one opens up, we get a crash. We 
> have log statements in the code, but none of them are even getting hit, 
> which leads us to believe that this probably is happening somewhere in the 
> DLL attach. We have trying use windbg and ddbg to track down the issue, 
> but we're at a loss here. Any ideas what we can look at to try and track 
> this thing down?
>
> "Frank Benoit" <keinfarbton@googlemail.com> wrote in message 
> news:gcmugi$2jn0$1@digitalmars.com...
>>
>>> Do you have an IM
>>> account that we can chat live?
>>
>> If there is still the need, there is IRC freenode #DWT
>> http://mibbit.com/
>
>
October 15, 2008
Re: Embedding DWT
On Tue, 14 Oct 2008 18:28:26 -0400
"sleek" <cslush@gmail.com> wrote:

> Threading issues have been resolved. Basically we needed to create a shell 
> that parented an HWND we were provided. We tried using display.syncExec 
> which worked until we attempted the Shell.win32_new ... apparantly you can't 
> create a window that parents an HWND from a different thread. So instead, in 
> the syncExec, we create a new normal shell, create an OleFrame that parents 
> the shell. After the syncExec, we now have a shell object with a bogus hwnd. 
> So what we do is a simple Windows function call:   SetParent(shell.handle, 
> hwndParent). voila, problem solved. DWT is making me happy again

How about post simple sample code for the trick? 


-- 
yidabu <yidabu.spam@gmail.com>
http://www.dsource.org/projects/dwin

D 语言-中文(D Chinese):
http://www.d-programming-language-china.org/
http://bbs.d-programming-language-china.org/
http://dwin.d-programming-language-china.org/
http://scite4d.d-programming-language-china.org/
« First   ‹ Prev
1 2
Top | Discussion index | About this forum | D home