Ernie / Japheth,

You two are just too cool for one message board...

Anyway, I fixed the problems I found with the code. The only
thing I didn't implement was resizing. But thats really simple
to do.

The attachement is in the format I would like to use for the
"ClientSites" subfolder of the MASM COM SDK. I haven't
written the documents or add-ins just yet. The latest version
of the code is in the \source\browser folder.

When I'm finished with the package I'll post it here again or
maybe I could get it included with a future service pack...

Xtreme
Posted on 2001-08-27 08:27:37 by Xtreme
Very very very impressive work. This is obviously a fundamental work in a new area for ASM. I'm going to have to find some time to study this in some detail (so I can steal your best tricks).

Seems I did miss the boat on debuggers (I really don't use em ever), gonna have to make that change to CoLib to make the relations show in the symbols too (I'll just steal the relations you worked out here).


And also major congratulations on creating the worlds smallest (under 10K byte) web browser. ;-)
Posted on 2001-08-27 22:09:22 by Ernie
Xtreme:

wow, i'm impressed too. Xtreme you da man.

dr phil :)

question: the C++ version is 60k, assembler version is 10k... is that the best the C++ compiler can do? also i notice the C++ version also loads OLEAUT32.DLL (614k) on top of the OLE32.DLL (790k), can this be avoided in the C++ version?
Posted on 2001-08-27 22:51:34 by phil
This is something I've always wanted in asm, great work Xtreme!
:alright:

Thomas
Posted on 2001-08-28 02:52:52 by Thomas
:alright:

Xtreme, I think there is no need to define segments for each vtable as in your code:



@@IUnknown segment dword
vtblIUnknown:
dd offset QueryInterface
dd offset AddRef
dd offset Release
@@IUnknown ends



without the segment definitions the resulting exe will be considerably smaller.

japheth
Posted on 2001-08-28 04:02:42 by japheth
Thanks Everyone!,

Last night I began working on the tutorials (Papers folder). I'm
going to continue to add new features to the browser demo:

1. Executing "external" functions from Web page script.
2. Handling all events
3. "Invoking" Web page script from application code
4. "Talking" directly to the HTML page.

Then I'll begin work on the QEditor Add-Ins and other examples:

1. Namespace contol (the right-side of "Organize Favorites")
2. Media Player
3. XML Parser
4.




Ernie,

Go for it. Lets work together to create/consolidate include files
into one folder (your existing \com\include folder) for new include
files (Browser, Media Player, Shell, etc.).




Phil,

I believe the C++ compiler is padding not to mention that it uses
cluttered, messy header files. I may have also linked with more
libs than necessary too.




Japheth,

Another excellent suggestion. I'll give it a try this evening...
Posted on 2001-08-28 08:42:50 by Xtreme
Japheth,

These segment defs are used in createobject:



mov (Object ptr [ebx]).iUnknown.lpVtbl, offset vtblIUnknown ; save the offset(pointer) to the interface VTABLE in lpVtbl
mov (Object ptr [ebx]).iOleWindow.lpVtbl, offset vtblIOleWindow ; save the offset(pointer) to the interface VTABLE in lpVtbl
mov (Object ptr [ebx]).iOleClientSite.lpVtbl, offset vtblIOleClientSite ; save the offset(pointer) to the interface VTABLE in lpVtbl
mov (Object ptr [ebx]).iOleInPlaceSite.lpVtbl, offset vtblIOleInPlaceSite ; save the offset(pointer) to the interface VTABLE in lpVtbl
mov (Object ptr [ebx]).iDispatch.lpVtbl, offset vtblIDispatch ; save the offset(pointer) to the interface VTABLE in lpVtbl
mov (Object ptr [ebx]).iDocHostUIHandler.lpVtbl, offset vtblIDocHostUIHandler ; save the offset(pointer) to the interface VTABLE in lpVtbl
mov (Object ptr [ebx]).iDocHostShowUI.lpVtbl, offset vtblIDocHostShowUI ; save the offset(pointer) to the interface VTABLE in lpVtbl
Posted on 2001-08-28 10:46:49 by Xtreme
I removed the segment defs and the above code from
createobject. I'm not sure if it works or not because it
crashed (intermittently) on Win2K originally and thats
what I'm using now.

I'll have more info tomorrow morning.
Posted on 2001-08-28 12:40:38 by Xtreme
Win2k-128MB-850-Laptop

Doesn't work at all.

I don't know what to provide more info because I don't know how to use a debugger.

EDIT: I use MSIE 5.5
Posted on 2001-08-28 13:23:29 by Kenny
Thanks for the conformation Kenny.
I'll add the fix to the ToDo list.

Any volunteers to test on the other platforms? When reporting
tell us your browser version... (MSIE 6.0 final is out today)

Updated Wednesday, Aug. 29

1) Win95 -

2) Win98 - Xtreme/IE6.0 Last Beta (WORKS)

3) 98SE - AndyCar/IE 5.0 (WORKS)

4) WinME -

5) Win2K - Xtreme/IE6.0 (WORKS), Kenny/IE5.5 (?)

6) WinXP -

7) WinNT -

8) WinCE -
Posted on 2001-08-28 13:32:02 by Xtreme
Extreme, I'll be playing with it on 98SE, IE 5.0

P.S. Nice work!
Posted on 2001-08-28 15:39:59 by Andycar
Win2k, IE 5.50.4522.1800.. works like a charm:)
Posted on 2001-08-28 17:16:27 by Thomas
Xtreme,

What I meant was to remove the segment definitions from your vtable definitions, for example:



;;;;;;;@@IUnknown segment dword
vtblIUnknown:
dd offset QueryInterface
dd offset AddRef
dd offset Release
;;;;;;;@@IUnknown ends


thats all. No other changes (in CreateObject) are needed.

As you can see in the MAP file, every segment such defined results in an additional section in the exe, which is unnecessary.

japheth
Posted on 2001-08-29 01:57:48 by japheth
Hi Everybody,

I tried removing the segment definitions but the assembler
croaks: "error A2108: use of register assumed to ERROR".



;*********************************************
; CLIENT SITE VTABLE STRUCTS
;*********************************************
;@@IUnknown segment dword
vtblIUnknown:
dd offset QueryInterface
dd offset AddRef
dd offset Release
;@@IUnknown ends


;@@IOleWindow segment dword
vtblIOleWindow:
dd offset QueryInterface
dd offset AddRef
dd offset Release
dd offset IOleWindow@GetWindow
dd offset IOleWindow@ContextSensitiveHelp
;@@IOleWindow ends


It works on Win2K now. It had something to do with the
events handling not being complete. Thats done now! I'm still
working on the papers and add-ins. I'll post ALPHA2 of the
package soon .

See the Platform testing list above. I'll edit that message with
new info as it becomes available.
Posted on 2001-08-29 08:45:48 by Xtreme
Xtreme,

MASM is right, it dont want code label in data sections, so it needs to be changed to:



; @@IUnknown segment dword
vtblIUnknown label dword
dd offset QueryInterface
dd offset AddRef
dd offset Release
; @@IUnknown ends


What I'm currently are more concerned about is that the browser does not run under Windows NT 4.0 SR5. It tells me an E_FAIL when calling "Navigate". I use IE5.

Has anybody been able to run the app under this constellation?

japheth
Posted on 2001-08-29 12:23:56 by japheth
Japheth,

Try this exe on NT4.0.

I had to zip it to upload it...
Posted on 2001-08-29 13:15:01 by Xtreme
haha! Okie :) I'll take a look when you post the updated file :)

Untill then :)
Posted on 2001-08-29 14:07:41 by Kenny
Its above. Named "browser.zip"
Posted on 2001-08-29 14:16:33 by Xtreme
it doesnt work on
Win98SE, IE 5.00.2614.3500

just a white screen :(
or maybe i dont know how to start it.

TBD
Posted on 2001-08-29 16:03:30 by TBD
the broswer worked on my win 98 SE box.

dr phil :)
Posted on 2001-08-29 19:48:02 by phil