News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

AddIn support

Started by Biterider, May 07, 2005, 06:06:23 PM

Previous topic - Next topic

Biterider

Hi KetilO
So far I'm ready with that I wanted to realize with the AddIn. Currently we are testing it to check if it works in all situations.

The next implementation steps could be:
1. Currentls no help is provided when you type something like "[eax]." The idea is to provide a selection list with all possible structures and objects and rediusing the selection while typing. This process can be repeated each time the dot key is pressed, taking as parameter the word placed before the dot.  :8)
2. Show a tooltip with the argument help when you are typing a XCall. Is there a prefered way to do it using the RadASM buildin procs?

Regards,

Biterider


KetilO

Hi Biterider

None of RadASM's tooltip functions are currently available to addins.
Not that I think it matters since they are pretty specialisized to each task.

The onl thing I can recomend is using RadASM's tooltip control, hTlt.
It is a subclassed static.

KetilO

Biterider

Hi KetilO
I'm trying to reuse the hTlt control but I failed. Perhaps you have a code fragment you can share that shows how to display/hide and setup it. Thanks!  :P

Biterider

KetilO

Hi

I have added tooltip to the CodeComplete tutorial.

KetilO

[attachment deleted by admin]

Biterider

Hi
I checked your code and it is more than I expected. I transplanted it into my AddIn and it works perfectly! Thanks!  :U
It's up to me now to make some usable with it...  :P

Biterider

Biterider

Hi KetilO
I think I have found a bug in the message processing of the RA_Edit window.  :eek
I'm trying to catch some keys subclassing the window and all works OK for keys like VK_BACK, VK_ESCAPE, etc. but it seems that the VK_DELETE is not passed.

Regards,

Biterider

KetilO

Hi Biterider

You will not be able to catch the VK_DELETE using WM_CHAR message.
You must use the WM_KEYDOWN message.

KetilO

Biterider

Hi KetilO
Sometimes I have a problem with the drawing if the sorted listbox items of the context popup (hLBS). The items seems to be drawn transparently. I know that they are there, since when I click on the empty listbox, I get the item that should be there. I preserve the item strings, so it can't be a matter of LBS_HASSTRINGS style. Any idea?

Biterider

KetilO

This might be WM_SETREDRAW TRUE/FALSE getting out of sync due to subclassing.
Try sending WM_SETREDRAW TRUE to the listbox.
If that does not help, try invalidating the listbox.

KetilO

Biterider

Hi KetilO,
Here is the latest stand of the ObjAsm32 AddIn (top post updated).
As far as I tested it, it works without crashes.   :bg

Current features:
1. Short form of XCall supported (OCall esi.DoSomething...). SetObject should be used.
2. Implicit form of XCall supported (Ocall DoSomething...). Type OCall . within a method to show the listbox.
3. ACall shows correct ancestor information.
4. Variable members supported within a method (invoke [esi].dMember).
5. Ctrl+Win accelerator to open an object (.inc) file from the Objects directory. Cursor has to be placed over the object name. If a text selection is done, this text is used to seek for the file.
6. Ctrl+Alt+Win, same as Ctrl+Win but adds the file to the project tree.
7. Ctrl+M accelerator to insert a new method.
8. Ctrl+L accelerator to insert a separation line.


Note about intelisence: autocomplete "XCall" with object and method from a selection list. The information is taken from a file called ObjBase.stm placed in the objects directory. This file is automantained by the AddIn. It detects changes in the directory and adds or removes data as necessary. The information from the object base is completed with those from the project files. When changes are done to any of these files, the intelisence database is updated each time the files are saved.

Important: before using this new release, the ObjBase.stm file has to be deleted. This way the file is rebuild completely with the correct information!

Attached the DLL, that has to be copied to the RadASM\AddIns folder and the activated using the AddIn Manager. It can be found in the RadASM Options menu.

I want to thank you for your support and patience!  :U

Regards,

Biterider

KetilO

Hi Biterider

Very nice addin.

When I try to load included project, RadASM ends up in an endless loop.
Probably a bug in the parser.

KetilO

[attachment deleted by admin]

Biterider

Hi KetilO
Finally I found the bug that leaded to infinite loop. It was a bad typecast in one of the info collections (typical side effect of over night work and too much coffee  :bg). I reuploaded the code on the top post. Since the information stored in the ObjBase.stm file is corrupted, it has to be deleted before RadASM is started again. The AddIn rebuilds the file automatically.

I want to know what do you think about to add icons to the listbox to allow to the user to recognize rapidly the type of the items the listbox is offering.

I have tested the AddIn with the test version 2.2.0.3 and all seems to work OK.   :U
A little detail, the typo in the "File Association" menu item was not corrected.

Regards,

Biterider

KetilO

Hi Biterider

Works OK now.
I have been thinking about adding icons to the listbox. I will take a closer look at it and maybe add it in 2.2.0.3

KetilO

Biterider

Hi all
I uploaded to the first post the latest release of the ObjAsm32 AddIn for RadASM. Now it handles ICall (COM method calling)  :8)

Regards,

Biterider

Biterider

Hi
I added "Object" as a keyword to trigger the Object selection ListBox when ypu need to enter the ancestor object.
I added also in the ObjAsm32 menu the "Insert Float" item. It triggers an input dialog to enter a Float number. This float number can be inserted in the code in form of a dword or qword. This is handy to define symbolic floats or to pass Floats as parameters like in DirectX.

Example:
sR4_PiBy2  equ   3FC90FDBh

Uploaded to the first post.

Biterider