PureBytes Links
Trading Reference Links
|
They do.
Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message -----
From: "dingo" <dingo@xxxxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Monday, April 28, 2008 4:28 PM
Subject: RE: [amibroker] Re: Visual C++ 2008 Express simple DLL sample file?
> 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
>
>
>
------------------------------------
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/
|