PureBytes Links
Trading Reference Links
|
Why don't the child windows show up in tools like Spy?
d
> -----Original Message-----
> From: amibroker@xxxxxxxxxxxxxxx
> [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf Of Tomasz Janeczko
> Sent: Monday, April 28, 2008 2:29 AM
> To: amibroker@xxxxxxxxxxxxxxx
> Subject: Re: [amibroker] Re: Visual C++ 2008 Express simple
> DLL sample file?
>
> Dennis,
>
> The parameter window does not contain a scrollbar because it
> is a parent
> of actual parameter list window. Therefore to get a handle of actual
> window that contains the scrollbar you need to traverse children list
> of parameter window, or better (easier), get the child
> control with appropriate ID.
> The ID of actual list is 88.
> So you would need to call
> HWND hActualList = GetDlgItem( h_ParamWindow, 88 );
>
> if( hActualList )
> {
> nScrollPos = GetScrollPos( hActualList, SB_VERT );
>
> ....
>
> SetScrollPos( hActualList, SB_VERT, nPos, TRUE );
> }
>
>
> Best regards,
> Tomasz Janeczko
> amibroker.com
> ----- Original Message -----
> From: "Dennis Brown" <see3d@xxxxxxxxxxx>
> To: <amibroker@xxxxxxxxxxxxxxx>
> Sent: Monday, April 28, 2008 12:08 AM
> Subject: Re: [amibroker] Re: Visual C++ 2008 Express simple
> DLL sample file?
>
>
> > Tomasz,
> >
> > I am reporting back on my success as far as it goes on this
> challenge,
> > and request another hint. I have succeeded in learning how
> to write a
> > C++ DLL function with freely available programs and
> documentation.
> > The DLL can get the scroll position of the top child window of the
> > foreground window and return the result to AFL. I have
> also written a
> > function that will set the scroll position to a value
> specified from
> > AFL and return the old position as I originally set out to
> do. This
> > should give me the ability to get or set the scroll
> position on any
> > AmiBroker program window that is active and has a vertical scroll
> > bar. For instance, with this DLL, I can now get and set
> the scroll
> > position on the Formula Editor Window just as expected.
> However, the
> > Parameters Window returns an error that it contains no
> scroll bar even
> > though it is visible on the screen, so I have not succeeded
> yet in the
> > original challenge.
> >
> > Since you wrote the code that created the (I am assuming)
> child window
> > with the scrollbar in the Parameters Window, I have to ask you the
> > next question. Is there a key concept that I am missing
> regarding how
> > to get the handle to the Parameters Window child
> control/window with
> > the scroll bar?
> >
> > I have looked everywhere I know to look for the answer, but
> have come
> > up blank. The only possibility I can think of is you wrote
> this child
> > window in a custom way that does not support the functions
> I used to
> > get or set the scroll. The class string does have a
> strange looking
> > name for this window.
> >
> > Here is the Function.cpp code segment I wrote that gets the scroll
> > position (or the error code):
> >
> > // GetWindowScroll( )
> > // This function returns the vertical scroll position
> > // of the top window of the foreground (active) window
> > // Returns zero if not successful
> > // Temp Debug: Returns the error code if not successful
> >
> > AmiVar VGetWindowScroll( int NumArgs, AmiVar *ArgsTable )
> > {
> > AmiVar OldScroll;
> > OldScroll.type = VAR_FLOAT;
> >
> > HWND foreWindow = GetForegroundWindow();
> > HWND topWindow = GetTopWindow(foreWindow);
> >
> > int OVWScroll = GetScrollPos( topWindow, SB_VERT );
> > OldScroll.val = OVWScroll;
> > if(OVWScroll==0){DWORD dw = GetLastError(); OldScroll.val =
> dw;} ;//
> > Debug code
> >
> > return OldScroll;
> > }
> >
> > If there is something that you do not want to reveal
> publicly on the
> > forum, please PM me. Otherwise, please another hint.
> >
> > Best regards,
> > Dennis
> >
> > On Apr 27, 2008, at 1:24 PM, Dennis Brown wrote:
> >> Dan,
> >>
> >> LOL --the blind leading the blind. I wanted to relate my
> experiences
> >> in attempting this "Impossible for my level of experience
> and tools"
> >> solution to my problem to encourage others that it can be done. I
> >> also knew I would need a little help from a knowledgeable
> person like
> >> TJ to point me in the right direction. After all, it would be
> >> foolish to attempt to do something if there was no
> reasonable solution
> >> at all, and he would know. I searched on the internet to
> fill in more
> >> details. We don't always have to have the solutions
> handed to us on a
> >> silver platter --as nice as that is. I also did not believe that I
> >> should have to spend a long time with books, manuals, or buy tools
> >> just to make a 10 line program that I needed now. Besides I learn
> >> better by discovering things than reading about them in books. The
> >> little light bulbs go on quite often when I have to work for the
> >> understanding.
> >>
> >> Since I don't know C++ , every line I write has errors. I just try
> >> different possibilities and recompile until I hit on a syntax that
> >> works. It usually takes 3-5 attempts to get each line to
> work, then I
> >> go to the next line. If I don't get the result I expect, I try
> >> different experiments, and by the process of elimination I
> learn what
> >> is going on. If I get really stuck, I will ask for help again.
> >> Trial and error engineering!
> >>
> >> I still don't have the solution I want working. I wrote
> the DLL as I
> >> had envisioned it, and it does work as far as I can tell.
> However, I
> >> believe I am missing a key concept about which window in the
> >> "Parameters Window" contains the scroll bar since I get an error
> >> message that the foreground window has no scroll bars. I am now
> >> guessing that the tabbed window structure is such that there is a
> >> child window overlaid on the main Parameters window that has the
> >> scroll bar. Now I have to figure out how to get its
> handle. Notice
> >> all those Windows type concepts I am throwing around after
> only a day
> >> of poking at the problem --LOL.
> >>
> >> During some of my internet searches, I did come across
> some references
> >> to VB that would lead me to think that I might be able to
> solve this
> >> problem with it also. However, I know no more about VB than I do
> >> about C++, so I might as well do it at the lowest level
> for the simple
> >> problem that it is. At least C++ and AFL look enough
> alike that I can
> >> guess at the syntax of C++.
> >>
> >> Getting frustrated and giving up is something I got over
> many decades
> >> ago after realizing that the only way to fail is to give
> up, and the
> >> way to succeed is to never give up. Once you determine
> that you will
> >> succeed no matter what it takes, the setbacks are just part of
> >> learning about the solution. It does irk me though when I am given
> >> wrong information that takes me far in the wrong direction
> and wastes
> >> a lot of time.
> >>
> >> As far as the typo in the example goes, I don't think TJ
> needs to say
> >> anything about it on the board. If nobody noticed it for
> 7 years, it
> >> is not critical to get fixed on a moments notice. I would not have
> >> mentioned it publicly except that it made a good story.
> >>
> >> Best regards,
> >> Dennis
> >>
> >> On Apr 27, 2008, at 9:30 AM, ab319320 wrote:
> >>> Dennis good work. There are two possibilities for the
> error in the
> >>> example. I have to wonder if Tomasz even picked up on
> the error you
> >>> mentioned as he was caught up in compiler talk and did
> not thank you
> >>> and say that the error would be fixed. That aside Tomasz
> has done a
> >>> terrific job on MY AMI.
> >>>
> >>> But, errors in examples as in a 21 day vc++ book
> frustrated me to the
> >>> point that my vc++6.0 pro ed just sets on the shelf. We all have
> >>> different levels of tolerance and Dennis yours excels.
> >>>
> >>> I discovered MS's Express series just a month ago and
> typed my 1981
> >>> basic program into vbasic 2008 express. I had over a
> hundred error
> >>> msgs but it was easy to work through. I think the vb is
> easier than
> >>> the vc express because of the error window (which is more like
> >>> vc6.0). MS has provided a powerful on-line help enter-face. Vb
> >>> express, I think, allows creation of a dll.
> >>>
> >>> Dennis I hope that you will post a "How To dll" in the
> Files section
> >>> which is user friendly. It appears you may have that ability.
> >>> Sometimes experienced people write over the heads of less
> >>> experienced.
> >>> Dan
> >>> --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@xxx>
> >>> wrote:
> >>>>
> >>>> Dennis,
> >>>>
> >>>> OK, OK, my bad. You see my previous comment was not
> intended to be
> >>> taken so seriously.
> >>>> I have very different perspective than you and others on the list
> >>>> since C++ compiler is my everyday bread and butter so I have very
> >>> different expectations and very different opinion than majority.
> >>>> If I wrote so on some "hard core C geek" forum, I would be
> >>> understood better.
> >>>>
> >>>> Apparently 2008 "express" version is less restrictive
> >>>> compared to previous 2005. I am not using 2008. Three years ago I
> >>> bought Professional Edition 2005 to find that I use
> >>>> it only for 64 bit compilations because it is slow for everyday
> >>> work, crashes a lot and code produced is not compatible with 9x
> >>> windows.
> >>>> I use good old version 6 (from 1997 afair) because it is fast and
> >>> compatible with all Windows versions. That old version 6.0 is
> >>>> something that Microsoft has done very well (but there
> was no free
> >>> editions at that time).
> >>>>
> >>>> Best regards,
> >>>> Tomasz Janeczko
> >>>> amibroker.com
> >>>> ----- Original Message -----
> >>>> From: Dennis Brown
> >>>> To: amibroker@xxxxxxxxxxxxxxx
> >>>> Sent: Saturday, April 26, 2008 7:20 PM
> >>>> Subject: Re: [amibroker] Visual C++ 2008 Express simple DLL
> >>> sample file?
> >>>>
> >>>>
> >>>> Tomasz,
> >>>>
> >>>>
> >>>> While, being a Mac guy, I am quick to vilify Microsoft. However,
> >>> in this case you are being too harsh on them. They seem to have
> >>> improved their free version for 2008 and with some more
> >>> experimentation, I was able to get the free version to compile the
> >>> ADK Sample project and produce the sample.dll. Then I
> modified the
> >>> functions.cpp slightly and made another sample.dll that functioned
> >>> properly with AFL calls.
> >>>> Here is what I did to make it work:
> >>>>
> >>>>
> >>>> 1. I reinstalled the ADK from scratch to get rid of my previous
> >>> experiments.
> >>>> 2. I double clicked the Sample.dsp file which launched Visual
> >>> C++ 2008 Express Edition
> >>>> 3. A dialog box came up requesting to convert the project
> >>> format to an updated version --I clicked Yes. This was
> the key step.
> >>>> 4. I did a "Build Solution" from the Build menu.
> >>>> 5. The Sample.dll was generated error free and placed in
> >>> the "Debug" folder.
> >>>> 6. I moved the Sample.dll into the Plugins folder and started
> >>> up AmiBroker. I added a plot calling ExampleEMA. Success.
> >>>>
> >>>>
> >>>> There is a humorous side to this story also...
> >>>>
> >>>>
> >>>> I modified the ExampleEMA just to make sure that it was my
> >>> changes that I was seeing and not something else, since the
> >>> ExampleEMA was a prebuilt function. I called it
> myExampleEMA, and I
> >>> changed the function to return a constant. It worked half way????
> >>> The name changed, but it returned the exact same moving average
> >>> result as before.
> >>>>
> >>>>
> >>>> I tried all kinds of changes to that function which seemed to
> >>> have no effect. I finally commented practically everything out in
> >>> the function and it still returned a beautiful moving average. My
> >>> mind was going in circles tying to figure out how my
> changes could be
> >>> ignored. It truly seemed impossible. It is funny that when you
> >>> don't know what you are doing and in a new situation, the mind is
> >>> open to the wildest speculations to explain what is happening.
> >>>>
> >>>>
> >>>> Eventually, I commented out the other two functions: exampleMACD
> >>> and ExampleMA. Finally I got a compile error message.
> It turns out
> >>> that there is a typo in the function table. Both ExampleEMA and
> >>> ExampleMA point to VExampleMA code. Since the file was
> last modified
> >>> in 2001, it must have been there for 7 years and nobody
> noticed until
> >>> now --or at least did not bother tell AmiBroker about it. It was
> >>> lurking for all those years just waiting for a novice
> like me to get
> >>> tricked into thinking the laws of programming physics
> were suddenly
> >>> altered. LOL
> >>>>
> >>>>
> >>>> Now I will proceed to try and make my real dll work.
> >>>>
> >>>>
> >>>> Best regards,
> >>>> Dennis
> >>>>
> >>>>
> >>>> On Apr 26, 2008, at 10:22 AM, Tomasz Janeczko wrote:
> >>>>
> >>>> See also the video:
> >>>> http://www.amibroker.com/video/devcpp.html
> >>>>
> >>>> Best regards,
> >>>> Tomasz Janeczko
> >>>> amibroker.com
> >>>> ----- Original Message -----
> >>>> From: Tomasz Janeczko
> >>>> To: amibroker@xxxxxxxxxxxxxxx
> >>>> Sent: Saturday, April 26, 2008 4:19 PM
> >>>> Subject: Re: [amibroker] Visual C++ 2008 Express simple DLL
> >>> sample file?
> >>>>
> >>>>
> >>>> Hello,
> >>>>
> >>>> Visual C++ 2008 EXPRESS edition (FREE) is severely limited
> >>> and does NOT support creating of DLLs at all.
> >>>> That's why you get error when compiling it with Express
> >>> edition.
> >>>> Microsoft never gives useful things for free. Express
> >>> editions are toys only.
> >>>>
> >>>> To create DLLs you need either Standard or Professional
> >>> edition, or free Borland compiler or free GCC( GNU CC)/MinGW
> >>>> http://www.bloodshed.net/devcpp.html
> >>>> Sample project files for free Dec-C++ are included
> in the ADK.
> >>>>
> >>>> Best regards,
> >>>> Tomasz Janeczko
> >>>> amibroker.com
> >>>> ----- Original Message -----
> >>>> From: Dennis Brown
> >>>> To: amibroker@xxxxxxxxxxxxxxx
> >>>> Sent: Saturday, April 26, 2008 2:18 PM
> >>>> Subject: Re: [amibroker] Visual C++ 2008 Express simple DLL
> >>> sample file?
> >>>>
> >>>>
> >>>> Paul, That is exactly what my plan was and what I was
> >>> attempting to do. However, the example in the ADK would
> not compile
> >>> error free with Visual C++ 2008 Express as I explained.
> Perhaps it
> >>> would with the full version, but I explained that issue in my last
> >>> post to Mike.
> >>>>
> >>>>
> >>>> BR,
> >>>> Dennis
> >>>>
> >>>>
> >>>> On Apr 26, 2008, at 2:13 AM, Paul Ho wrote:
> >>>>
> >>>> You should start off by compiling the examples contained
> >>> in the ADK. and increment things slowly so you know what could
> >>> possibly cause the problem
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> --------------------------------------------------------------------
> >>>> From: amibroker@xxxxxxxxxxxxxxx
> >>> [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf Of Dennis Brown
> >>>> Sent: Saturday, 26 April 2008 1:44 PM
> >>>> To: amibroker@xxxxxxxxxxxxxxx
> >>>> Subject: [amibroker] Visual C++ 2008 Express simple DLL
> >>> sample file?
> >>>>
> >>>>
> >>>> Hello,
> >>>>
> >>>> I took the challenge from Tomasz that anyone who is
> >>> willing to learn,
> >>>> can extend AFL to do anything. My chosen task is to
> >>> restore the
> >>>> scroll position of the Parameters Window after a "Reset
> >>> all" button
> >>>> click --and yes, it has an important use.
> >>>>
> >>>> Tomasz informed me that I would need to write a DLL to
> >>> make this
> >>>> possible. There may be other ways, but I will try it
> >>> this way.
> >>>>
> >>>> First I have to say that I do not know C++ (other than
> >>> AFL has a
> >>>> similar syntax). Next I am not very familiar with
> >>> anything Windows (I
> >>>> am a Mac guy). So if I can do this (with a little help
> >>> from my AB
> >>>> friends) Tomasz will be vindicated in his statements.
> >>>>
> >>>> I determined that all I need is to make an extremely
> >>> simple DLL. It
> >>>> will create the following new AFL function:
> >>>>
> >>>> oldScrollPosition = GetSetWindowScroll
> >>> (newScrollPosition);
> >>>>
> >>>> It will simply return the current scroll position of
> >>> the active
> >>>> foreground window and then set the scroll position to
> >>> the supplied
> >>>> parameter. It should only be about 10 lines of
> C++ code.
> >>>>
> >>>> I have found the Windows calls that will get the handle
> >>> of the
> >>>> foreground window, and (with a pointer from Tomasz)
> >>> calls to get and
> >>>> set the scroll thumb position on a standard window.
> >>>>
> >>>> Everything else I need to do I can handle with AutoIt
> >>> or AFL.
> >>>>
> >>>> I have installed the free ADK and installed the free
> >>> Visual C++ 2008
> >>>> Express program, and started to try to write this.
> >>>>
> >>>> Initially I tried just Building the Sample DLL in the
> >>> ADK. That
> >>>> mostly works, but gives me errors on the Plugin.cpp:
> >>>>
> >>>> error C2491: on 5 critical lines for : Definition of
> >>> dllimport
> >>>> function not allowed
> >>>> these are the PLUGINAPI statements for Release, Init,
> >>>> GetFunnctionTable, SetSiteInterface, and GetPluginInfo.
> >>>>
> >>>> Somehow, I think I really need these lines to compile
> >>> for any AB DLL
> >>>> to work...
> >>>>
> >>>> I have tried a bunch of things, and I can make it give
> >>> me more errors,
> >>>> but unfortunately no less errors. So I think I need
> >>> some hints or
> >>>> more help to get started.
> >>>>
> >>>> I was wondering if anyone has an answer, or a simple
> >>> DLL sample
> >>>> project file that builds error free on Visual C++ 2008
> >>> Express that
> >>>> you could email me to get me started on the right track
> >>> with this?
> >>>>
> >>>> Thanks,
> >>>> Dennis
> >>>>
> >>>
> >>>
> >>>
> >>> ------------------------------------
> >>>
> >>> Please note that this group is for discussion between users only.
> >>>
> >>> To get support from AmiBroker please send an e-mail directly to
> >>> SUPPORT {at} amibroker.com
> >>>
> >>> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> >>> http://www.amibroker.com/devlog/
> >>>
> >>> For other support material please check also:
> >>> http://www.amibroker.com/support.html
> >>> Yahoo! Groups Links
> >>>
> >>>
> >>>
> >>
> >>
> >> ------------------------------------
> >>
> >> Please note that this group is for discussion between users only.
> >>
> >> To get support from AmiBroker please send an e-mail directly to
> >> SUPPORT {at} amibroker.com
> >>
> >> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> >> http://www.amibroker.com/devlog/
> >>
> >> For other support material please check also:
> >> http://www.amibroker.com/support.html
> >> Yahoo! Groups Links
> >>
> >>
> >>
> >
> >
> > ------------------------------------
> >
> > Please note that this group is for discussion between users only.
> >
> > To get support from AmiBroker please send an e-mail directly to
> > SUPPORT {at} amibroker.com
> >
> > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> > http://www.amibroker.com/devlog/
> >
> > For other support material please check also:
> > http://www.amibroker.com/support.html
> > Yahoo! Groups Links
> >
> >
> >
>
> ------------------------------------
>
> Please note that this group is for discussion between users only.
>
> To get support from AmiBroker please send an e-mail directly to
> SUPPORT {at} amibroker.com
>
> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> http://www.amibroker.com/devlog/
>
> For other support material please check also:
> http://www.amibroker.com/support.html
> Yahoo! Groups Links
>
>
>
------------------------------------
Please note that this group is for discussion between users only.
To get support from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
For other support material please check also:
http://www.amibroker.com/support.html
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/amibroker/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/amibroker/join
(Yahoo! ID required)
<*> To change settings via email:
mailto:amibroker-digest@xxxxxxxxxxxxxxx
mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx
<*> To unsubscribe from this group, send an email to:
amibroker-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|