<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.2912" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Many thanks for that. It sounds exactly what
my problem is. I had an inkling something like that maybe required
after finding something vaguely similar on another forum, but it was
dealing with Delphi DLL's. It said to call Application.HandleMessage
for the DLL from within the main EXE's Application.OnIdle.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Carl on this list gave me the code to
do selective message queue processing a couple of weeks ago, for a
different problem, which I didn't need to use in the end, but perhaps it will
come in handy.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Just to fill you in a bit, the DLL's are 3rd
party Winamp compatible DSP plugins. Not written by Nullsoft (the
makers of Winamp). All functions and structures are publically published
and standard for all the DSP DLL's. I'm loading them in my player for
processing audio. The processing works fine, but not the tab key on
non-modal forms. Some DSP's use modal configuration forms and the tab key
works fine for those.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>After a couple of hours of trying various
methods to process messages, it's not working. There must be something
fundamental that Winamp is doing that I need to do but don't know
what.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>There is no easy way to get the window handle of
the form! I had to do a FindWindow to find it based on the visible window
title, which I have done for one DLL. But </FONT><FONT face=Arial
size=2><FONT face=Arial size=2>Winamp doesn't know the name of the DLL form, so
it can't be doing a findwindow, so I'm not sure I'm on the right
track.</FONT></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>But if Winamp is doing it then it must be
possible!</DIV></FONT>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>I get some messages processing for this window if I
stop Windows doing it automatically, so it has found the correct window, but
Windows appears to be processing all the messages that are in the queue
anyway.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>The fact that the Windows default beep occurs when
pressing the key would suggest that no message is going anywhere, doesn't
it?</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>I've used PeekMessage along
with IsDialogMessage which I think is correct. I've also tried
TranslateMessage/DispatchMessage with no luck.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV><FONT face=Arial size=2>
<DIV>I don't suppose anyone else has any further ideas before I give my blind
users the bad news.</DIV>
<DIV> </DIV></FONT><FONT face=Arial size=2></FONT>
<DIV><FONT face=Arial size=2>Thanks,</FONT></DIV>
<DIV><FONT face=Arial size=2>Ross.</FONT></DIV>
<BLOCKQUOTE
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
<DIV
style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B>
<A title=paul.a.norman@gmail.com href="mailto:paul.a.norman@gmail.com">Paul A
Norman</A> </DIV>
<DIV style="FONT: 10pt arial"><B>To:</B> <A title=delphi@ns3.123.co.nz
href="mailto:delphi@ns3.123.co.nz">NZ Borland Developers Group - Delphi
List</A> </DIV>
<DIV style="FONT: 10pt arial"><B>Sent:</B> Thursday, August 03, 2006 5:33
PM</DIV>
<DIV style="FONT: 10pt arial"><B>Subject:</B> Re: [DUG] DLL Forms</DIV>
<DIV><BR></DIV>
<DIV>Dear Ross,</DIV>
<DIV> </DIV>
<DIV>Here is an answer that Peter Below made years ago to a simillar
question.</DIV>
<DIV>Not exactly the same as your description but may help.</DIV>
<DIV> </DIV>
<DIV>Paul</DIV>
<DIV>-------</DIV>
<DIV> </DIV>
<DIV>> I have a <FONT style="BACKGROUND-COLOR: #0a246a"
color=#ffffff>dll</FONT> that shows a <FONT style="BACKGROUND-COLOR: #0a246a"
color=#ffffff>form</FONT>. When I show the <FONT
style="BACKGROUND-COLOR: #0a246a" color=#ffffff>form</FONT> using ShowModal,
<FONT style="BACKGROUND-COLOR: #0a246a" color=#ffffff>tab</FONT> > works
fine (to go through all the controls). When I just use show (instead > of
showmodal), I lose the ability to use the <FONT
style="BACKGROUND-COLOR: #0a246a" color=#ffffff>tab</FONT> key (I can press
<FONT style="BACKGROUND-COLOR: #0a246a" color=#ffffff>tab</FONT> but it >
never moves to the next control). Am I doing something wrong? Well, you use a
non-modal window in a <FONT style="BACKGROUND-COLOR: #0a246a"
color=#ffffff>DLL</FONT> <g>. The major problem with non-modal windows
is that they depend on the applications message loop for sustenance. Things
like navigation between controls on a modal dialog are implemented in a
typical Windows app by calling the IsDialogMessage API function as part of the
message loop code. But this function requires the handle of the non-modal
dialog, so the apps usually have to make sure that the message loop code can
always get at the window handle of the currently active nonmodal dialog (this
can get grossly complex and always requires active participation of the
dialog). This scheme has no chance of working if the dialog in question is not
even part of the application and even less if it's not even a dialog but a
Delphi <FONT style="BACKGROUND-COLOR: #0a246a" color=#ffffff>form</FONT>.
Peter Below (TeamB) <A
href="mailto:100113.1101@compuserve.com">100113.1101@compuserve.com</A>) No
replies in private e-mail, please, unless explicitly requested!</DIV><BR><BR>
<DIV><SPAN class=gmail_quote>On 30/07/06, <B class=gmail_sendername>Ross
Levis</B> <<A
href="mailto:ross@stationplaylist.com">ross@stationplaylist.com</A>>
wrote:</SPAN>
<BLOCKQUOTE class=gmail_quote
style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">I've
got a more serious problem I hope someone can help me with.<BR><BR>I'm
loading some 3rd party C++ DLL's from my Delphi app. Most of
these <BR>DLL's have a configuration form.<BR><BR>Some blind users have just
pointed out that the tab key is not working<BR>in the DLL
forms. This is a major problem for blind users who reply on<BR>it
for navigation. All other keys including the arrow keys appear to
<BR>work fine.<BR><BR>Other applications that load the same DLL's do not
have this problem.<BR><BR>I'm assuming my app is taking over the tab key
even when the DLL form<BR>has the focus. Is there a simple method
to allow get around this? <BR><BR>Many
thanks,<BR>Ross.<BR><BR>_______________________________________________<BR>Delphi
mailing list<BR><A
href="mailto:Delphi@ns3.123.co.nz">Delphi@ns3.123.co.nz</A><BR><A
href="http://ns3.123.co.nz/mailman/listinfo/delphi">http://ns3.123.co.nz/mailman/listinfo/delphi</A><BR></BLOCKQUOTE></DIV><BR>
<P>
<HR>
<P></P>_______________________________________________<BR>Delphi mailing
list<BR>Delphi@ns3.123.co.nz<BR>http://ns3.123.co.nz/mailman/listinfo/delphi<BR></BLOCKQUOTE></BODY></HTML>