LB Booster
« BBC Basic for MAC »

Welcome Guest. Please Login or Register.
Apr 1st, 2018, 04:00am



ATTENTION MEMBERS: Conforums will be closing it doors and discontinuing its service on April 15, 2018.
We apologize Conforums does not have any export functions to migrate data.
Ad-Free has been deactivated. Outstanding Ad-Free credits will be reimbursed to respective payment methods.

Thank you Conforums members.
Speed up Liberty BASIC programs by up to ten times!
Compile Liberty BASIC programs to compact, standalone executables!
Overcome many of Liberty BASIC's bugs and limitations!
LB Booster Resources
LB Booster documentation
LB Booster Home Page
LB Booster technical Wiki
Just BASIC forum
BBC BASIC Home Page
Liberty BASIC forum (the original)

« Previous Topic | Next Topic »
Pages: 1  Notify Send Topic Print
 thread  Author  Topic: BBC Basic for MAC  (Read 1127 times)
Mystic
Junior Member
ImageImage


member is offline

Avatar




PM

Gender: Male
Posts: 53
xx Re: BBC Basic for MAC
« Reply #4 on: Aug 16th, 2016, 2:07pm »

I didn't know there was a BBC4MAC (guess what I'm doing after I type this? smiley

Mac is my main machine, and would LOVE to see more development along the BASIC arena for MAC.

One thing that has started to annoy me, is how simple HTML is for making navigable screens for a user interface, and what a pain it is to do the same thing in LBB/LB.

Don't get me wrong, I realize they are two different animals, but I would really like to see something like an HTML type of system as an interface for my BASIC programs.

Things like making links using "a href" open and closing windows easily in a browser type system, etc...

a BASIC that can do browser type windows for color, navigation and layout would be awesome!

Sorry, I think I spun off into a different direction. smiley
User IP Logged

- Rick
Richard Russell
Administrator
ImageImageImageImageImage


member is offline

Avatar




Homepage PM


Posts: 1348
xx Re: BBC Basic for MAC
« Reply #5 on: Aug 16th, 2016, 5:36pm »

on Aug 16th, 2016, 2:07pm, Mystic wrote:
a BASIC that can do browser type windows for color, navigation and layout would be awesome!

Using ATL (Active Template Library) you can certainly have HTML windows in LB/LBB. For example this, adapted from one of Alyce's programs, illustrates color and layout achieved that way:

Code:
    nomainwin
 
    WindowWidth=400
    WindowHeight=300
    menu #main, "&File","E&xit", [quit]
 
    graphicbox #main.g, 0, 0, 100, 100
 
    open "Liberty Basic ATL Demo" For Window_nf As #main
    #main "TrapClose [quit]"
 
    Open "atl" For DLL As #atl
    CallDLL #atl, "AtlAxWinInit", Ret As long
 
    hWndViewer = hWnd(#main.g) 'Windows handle of graphicbox
    hMain = hWnd(#main)        'Windows handle of main window
 
    STRUCT Rect,_ 'struct for storing client area rectangle
        leftX as long,_     'upper left x
        upperY as long,_    'upper left y
        rightX as long,_    'lower right x
        lowerY as long      'lower right y
 
    calldll #user32,"GetClientRect",_
        hMain as ulong,_ 'window handle
        Rect as struct,_ 'name of struct
        r as long        'return
    cw = Rect.rightX.struct
    ch = Rect.lowerY.struct
 
    'resize graphicbox to fill client area of window
    #main.g "locate 0 0 ";cw+2;" ";ch+2
    #main "refresh"
 
    CallDLL #user32, "GetWindowLongA", _
        hWndViewer As ulong, _      'handle of graphicbox
        _GWL_HINSTANCE As long, _   'flag to get instance handle
        hInst As ulong              'returns instance handle of graphicbox
 
    style = _WS_CHILD or _WS_VISIBLE or _WS_VSCROLL
 
    'a minimal HTML document:
    html$ = "MSHTML:<html><head></head><body>" + _
            "This is an <font color=red>HTML</font> window!" + _
            "<p><center>This line is centered</center>" + _
            "</body></html>"
            
    CallDLL #user32, "CreateWindowExA", _
        _WS_EX_STATICEDGE As long, _    'extended type
        "AtlAxWin" As ptr, _            'class name
        html$ As ptr, _                 'URL, or progID or CLSID
        style As long, _                'window style
        0 As long, _                    'left x pos
        0 As long, _                    'top y pos
        cw As long, _                   'width
        ch As long, _                   'height
        hWndViewer As ulong, _          'handle of parent = graphicbox
        100 As long, _                  'handle to menu or child window ID
        hInst As ulong, _               'parent instance handle
        0 As long, _                    'window creation data
        hATL As ulong                   'handle of active template library control
    wait
 
[quit]
    Close #main
    close #atl    'close DLL after closing window
    end 

As far as navigation is concerned you can include links, but they will open a URL which may not be what you want.

It would be pretty easy to incorporate the above functionality as one of the predefined window types in LBB, i.e. something like:

Code:
    open "HTML demo" for html as #main 

(not that I have any plans to do so).

Richard.
« Last Edit: Aug 16th, 2016, 5:49pm by Richard Russell » User IP Logged

CryptoMan
New Member
Image


member is offline

Avatar




PM

Gender: Male
Posts: 46
xx Re: BBC Basic for MAC
« Reply #6 on: Aug 16th, 2016, 9:24pm »

Yes.

Exactly like this but an example for the same with BBC4MAC.

Can't we make similar system calls with MAC OS-X?

Anyway, I think BBC for MAC is awesome and I like to see system calls similar to this ATL Browser example for Win32.
User IP Logged

Mystic
Junior Member
ImageImage


member is offline

Avatar




PM

Gender: Male
Posts: 53
xx Re: BBC Basic for MAC
« Reply #7 on: Aug 16th, 2016, 11:11pm »

Thank you Richard!

I'll have to play with the ATL. smiley
User IP Logged

- Rick
Mystic
Junior Member
ImageImage


member is offline

Avatar




PM

Gender: Male
Posts: 53
xx Re: BBC Basic for MAC
« Reply #8 on: Aug 16th, 2016, 11:22pm »

on Aug 16th, 2016, 5:36pm, Richard Russell wrote:
Code:
    open "HTML demo" for html as #main 



This would be awesome!

Currently I am creating HTML files with my LBB programs so that my folks can navigate them as web pages (My work will not allow me to use a web server to serve PHP pages).

So, I am trying to create the "web experience" they are used to, without actually running a web server. Just static web pages created from LBB.

It works pretty good, but it would be nice if I could have my program running in the HTML window, since now it's a bit awkward doing it the way I am.

RUNBASIC is close to what I would like to see, but even it is creating a server to serve the pages.

I'm looking more for something I can send out as just a executable that "feels" like a web page in how it functions for the users.
User IP Logged

- Rick
Richard Russell
Administrator
ImageImageImageImageImage


member is offline

Avatar




Homepage PM


Posts: 1348
xx Re: BBC Basic for MAC
« Reply #9 on: Aug 16th, 2016, 11:45pm »

on Aug 16th, 2016, 9:24pm, CryptoMan wrote:
Can't we make similar system calls with MAC OS-X?

Of course you can make system calls, but I have no idea whether the Mac exposes an embeddable browser or HTML control in any way similar to ATL. You would need to ask an OS-X expert about that.

Richard.
User IP Logged

Richard Russell
Administrator
ImageImageImageImageImage


member is offline

Avatar




Homepage PM


Posts: 1348
xx Re: BBC Basic for MAC
« Reply #10 on: Aug 17th, 2016, 12:09am »

on Aug 16th, 2016, 11:22pm, Mystic wrote:
I'm looking more for something I can send out as just a executable that "feels" like a web page in how it functions for the users.

Why don't you simply bundle the pages with your application as straight .html files (LBB would allow you to embed them in the EXE file of course) and then point the local browser at them? Most, if not all, popular browsers support the file:// protocol I think (I've just tried Edge, FireFox and Chrome and they all seem to) so you shouldn't need an HTTP server like Run Basic.

Somewhat to my surprise even the ATL embedded browser control seems to understand the file:// syntax, although for some reason it was awfully slow at fetching the page across my home network.

Richard.
User IP Logged

Mystic
Junior Member
ImageImage


member is offline

Avatar




PM

Gender: Male
Posts: 53
xx Re: BBC Basic for MAC
« Reply #11 on: Aug 17th, 2016, 12:51am »

on Aug 17th, 2016, 12:09am, Richard Russell wrote:
...for some reason it was awfully slow at fetching the page across my home network.


Yep, one of the drawbacks for the file option. It works, but is painfully slow.

My HTML files are dynamic based on the program output. It's not like I am just accessing a bunch of static HTML files because they look pretty.

I would rather my program have input boxes on the HTML window (like a real form entry), then redraw the HTML page based on the database results, etc...

So essentially it would resemble typical HTML functionality, but being interpreted from the engine of LBB and not a server.
User IP Logged

- Rick
Richard Russell
Administrator
ImageImageImageImageImage


member is offline

Avatar




Homepage PM


Posts: 1348
xx Re: BBC Basic for MAC
« Reply #12 on: Aug 17th, 2016, 08:46am »

on Aug 17th, 2016, 12:51am, Mystic wrote:
So essentially it would resemble typical HTML functionality, but being interpreted from the engine of LBB and not a server.

I would suggest you check out Microsoft's IWebBrowser2 control to see if it has the capabilities you need. Because it uses an Object Oriented (COM) interface you would need to use the CallMethod function I wrote in order to access it from LB/LBB:

Code:
function CallMethod(object, method, parm$)
code$=chr$(139)+"D$"+chr$(4)+chr$(139)+"T$"+chr$(8)+chr$(139)+"L$" _
+ chr$(16)+"VW"+chr$(139)+"t$"+chr$(20)+chr$(43)+chr$(225)+chr$(139) _
+ chr$(252)+chr$(243)+chr$(164)+chr$(80)+chr$(139)+chr$(0)+chr$(255) _
+ chr$(20)+chr$(144)+chr$(95)+chr$(94)+chr$(194)+chr$(16)+chr$(0)

p$=parm$
n=len(p$)
calldll #user32, "CallWindowProcA", code$ as ptr, object as long,_
  method as long, p$ as ptr, n as long, CallMethod as long
end function
 

Richard.
User IP Logged

Mystic
Junior Member
ImageImage


member is offline

Avatar




PM

Gender: Male
Posts: 53
xx Re: BBC Basic for MAC
« Reply #13 on: Aug 17th, 2016, 3:08pm »

Thanks! I'll check that out as well.
User IP Logged

- Rick
Pages: 1  Notify Send Topic Print
« Previous Topic | Next Topic »

| |

This forum powered for FREE by Conforums ©
Terms of Service | Privacy Policy | Conforums Support | Parental Controls