BBC BASIC for Windows
« Accessing the Window's API »

Welcome Guest. Please Login or Register.
Apr 5th, 2018, 10:48pm



ATTENTION MEMBERS: Conforums will be closing it doors and discontinuing its service on April 15, 2018.
Ad-Free has been deactivated. Outstanding Ad-Free credits will be reimbursed to respective payment methods.

If you require a dump of the post on your message board, please come to the support board and request it.


Thank you Conforums members.

BBC BASIC for Windows Resources
Online BBC BASIC for Windows documentation
BBC BASIC for Windows Beginners' Tutorial
BBC BASIC Home Page
BBC BASIC on Rosetta Code
BBC BASIC discussion group
BBC BASIC for Windows Programmers' Reference

« Previous Topic | Next Topic »
Pages: 1 2  Notify Send Topic Print
 hotthread  Author  Topic: Accessing the Window's API  (Read 4467 times)
Matt
Developer

member is offline

Avatar




PM

Gender: Male
Posts: 210
xx Accessing the Window's API
« Thread started on: Sep 19th, 2010, 7:24pm »

Although I'm not new to BBC Basic (I've been dabbling in it for the past 25 years), nor an I that new to BB4W (~3 years) I am just dicovering that there is more to it than just the 'basic' programming. Accessing the Window's API can open a lot of doors. However, I have no idea how to go about learning about it. The MSDN site has some interesting items, but they are written for the expert and are gobbledegook to me. Any suggestions about learing from square one? (I no very little about VB or C++, either.)

Matt
User IP Logged

admin
Administrator
ImageImageImageImageImage


member is offline

Avatar




PM


Posts: 1145
xx Re: Accessing the Window's API
« Reply #1 on: Sep 19th, 2010, 9:25pm »

on Sep 19th, 2010, 7:24pm, Matt wrote:
Accessing the Window's API can open a lot of doors. However, I have no idea how to go about learning about it.

One idea might be to compare BBC BASIC code for accessing the Windows API (you can find plenty in the Help manual, in the example programs and on the BB4W Wiki) with how those same API functions are documented in MSDN and elsewhere. Hopefully you might then be able to see how the C syntax relates to the BASIC syntax, and gradually learn how to convert one to the other.

Another useful resource is Malcolm Marten's Beginners' Windows tutorials which you will find on the group here:

http://groups.yahoo.com/group/bb4w/files/WindowsAPI/Beginners_Windows.htm

http://groups.yahoo.com/group/bb4w/files/WindowsAPI/Beginners_windows_part2.htm

Richard.
User IP Logged

Matt
Developer

member is offline

Avatar




PM

Gender: Male
Posts: 210
xx Re: Accessing the Window's API
« Reply #2 on: Sep 20th, 2010, 05:13am »

Thanks Richard,

I'll read the articles. The first suggestion, though, for me, is not as easy as it sounds. I've tried this and I just don't seem to be able to understand how to transfer one command into another correctly. But I guess that's just my inexperience. Hopefully, the articles will help.

Matt
User IP Logged

admin
Administrator
ImageImageImageImageImage


member is offline

Avatar




PM


Posts: 1145
xx Re: Accessing the Window's API
« Reply #3 on: Sep 20th, 2010, 09:31am »

on Sep 20th, 2010, 05:13am, Matt wrote:
I've tried this and I just don't seem to be able to understand how to transfer one command into another correctly.

Maybe you could give an example? Here's a call to the very useful MessageBox API, first in C (as you might find it elsewhere) and then in BBC BASIC:

C code:

Code:
      MessageBox (hwnd, "Something didn't work",
            "BB4W", MB_OK | MB_ICONEXCLAMATION) ; 

BBC BASIC code:

Code:
      SYS "MessageBox", @hwnd%, "Something didn't work", \
      \            "BB4W", MB_OK OR MB_ICONEXCLAMATION 

Salient differences are that in C the function parameters are contained in parentheses, and the statement is terminated by a semicolon. In BBC BASIC there isn't an explicit statement terminator, so you have to use continuation characters to split the line.

Also, the 'or' operator in C is | and in BBC BASIC it is OR.

I would like to think that the similarities between the two pieces of code are quite striking. You don't need to be able to program in C, but you do need a passing knowledge of C syntax and what symbols are used for various operations.

Richard.
User IP Logged

Matt
Developer

member is offline

Avatar




PM

Gender: Male
Posts: 210
xx Re: Accessing the Window's API
« Reply #4 on: Sep 21st, 2010, 8:14pm »

Ok,

I just found something interesting - the Month Calendar Control.

Part of the main program I'm writing uses a calendar to allow the user to set a date. I had to design a dialog sheet to do this, but I really wanted the style used by windows. I suddenly found it. However, I can't work out how to go about using the controls. Could you help, and could you show me how to do it so it will help me to use other controls? Please!

Matt
User IP Logged

admin
Administrator
ImageImageImageImageImage


member is offline

Avatar




PM


Posts: 1145
xx Re: Accessing the Window's API
« Reply #5 on: Sep 21st, 2010, 9:12pm »

on Sep 21st, 2010, 8:14pm, Matt wrote:
I just found something interesting - the Month Calendar Control....
However, I can't work out how to go about using the controls.

I presume you've read the relevant Wiki article:

http://bb4w.wikispaces.com/Using+the+Date+and+Time+Picker

What is it that you need to know that the article doesn't cover?

Richard.
User IP Logged

Matt
Developer

member is offline

Avatar




PM

Gender: Male
Posts: 210
xx Re: Accessing the Window's API
« Reply #6 on: Sep 23rd, 2010, 06:30am »

Thanks Richard.

This article is very useful and I've managed to implement it into a property sheet. I've also, due to experimenting, found that style 2 creates a check box to deselect the date if needs be. However, I can't seem to find a way of defalting it to deselect. Whatever number I put in there it comes up as selected. How can I choose the default setting of the check box, and how can I change it by program rather than user.

Matt
User IP Logged

admin
Administrator
ImageImageImageImageImage


member is offline

Avatar




PM


Posts: 1145
xx Re: Accessing the Window's API
« Reply #7 on: Sep 23rd, 2010, 08:33am »

on Sep 23rd, 2010, 06:30am, Matt wrote:
How can I choose the default setting of the check box, and how can I change it by program rather than user.

MSDN is your friend! All is revealed on this page:

http://msdn.microsoft.com/en-us/library/bb761728.aspx

The salient text is: "The state of the check box can be set with the DTM_SETSYSTEMTIME message or queried with the DTM_GETSYSTEMTIME message".

It doesn't seem to be possible to initialise the control to the 'unchecked' state but if you send the appropriate message immediately after the control is created the effect should be indistinguishable.

Richard.
User IP Logged

Matt
Developer

member is offline

Avatar




PM

Gender: Male
Posts: 210
xx Re: Accessing the Window's API
« Reply #8 on: Sep 24th, 2010, 06:20am »

Thanks Richard,

I've played around with this and I seem to be getting the hang of some of it - albeit slowly. I can deselect, change the date and the format. So I think I can use this, thanks. One thing I don't like about the date format is, when using the full date format (i.e. dd mmmm yyyy) the month, when short (say May) has massive gaps between the day and the year. And there doesn't seem to be a way of having the date format as dd mmm yyyy (i.e. three letter months). Hey Ho. Not a big problem.

Thanks all the same.

Matt
User IP Logged

admin
Administrator
ImageImageImageImageImage


member is offline

Avatar




PM


Posts: 1145
xx Re: Accessing the Window's API
« Reply #9 on: Sep 24th, 2010, 08:37am »

on Sep 24th, 2010, 06:20am, Matt wrote:
And there doesn't seem to be a way of having the date format as dd mmm yyyy (i.e. three letter months).

Huh? It works fine for me, so long as I use the correct format: "dd MMM yyyy" (lowercase mm is minutes, not months!).

It is rare for MSDN to be incorrect, so if you find something doesn't work you should suspect your own code rather than blaming an imagined shortcoming in Windows.

Richard.
User IP Logged

Matt
Developer

member is offline

Avatar




PM

Gender: Male
Posts: 210
xx Re: Accessing the Window's API
« Reply #10 on: Sep 28th, 2010, 09:47am »

I'm sorry Richard, but I can't figure out how to change the time to "dd MMM yyyy". All I gan get is "dd/MM/yyyy" or "dd MMMM yyyy" by changing the style% in

ICC_DATE_CLASSES = &100
DIM iccx{Size%, ICC%}
iccx.Size% = 8
iccx.ICC% = ICC_DATE_CLASSES
SYS "InitCommonControlsEx", iccx{}
hdtp% = FN_createwindow("SysDateTimePick32", "", x%, y%, cx%, cy%, 0, style%, 0)


Matt
User IP Logged

admin
Administrator
ImageImageImageImageImage


member is offline

Avatar




PM


Posts: 1145
xx Re: Accessing the Window's API
« Reply #11 on: Sep 28th, 2010, 6:07pm »

on Sep 28th, 2010, 09:47am, Matt wrote:
I'm sorry Richard, but I can't figure out how to change the time to "dd MMM yyyy".

I'm surprised you weren't able to find it on MSDN:

http://msdn.microsoft.com/en-us/library/bb761771.aspx

Starting at the main Date and Time Picker page you've only got to scroll about half way down, where it says "Sets the display of a date and time picker (DTP) control based on a given format string":

http://msdn.microsoft.com/en-us/library/bb761727.aspx

Perhaps you need to hone your search technique.

Richard.
« Last Edit: Sep 28th, 2010, 6:10pm by admin » User IP Logged

Matt
Developer

member is offline

Avatar




PM

Gender: Male
Posts: 210
xx Re: Accessing the Window's API
« Reply #12 on: Sep 28th, 2010, 8:48pm »

Thanks, Richard.

It's not search technique that's the problem with me, it's understanding of the system. I'm slowly picking it up, but 'slowly' is the operative word. I did look at this API message, but I didn't understand it enough to realise it was the one I was after. My appologies for being so slow, and thanks again.

Matt
User IP Logged

Matt
Developer

member is offline

Avatar




PM

Gender: Male
Posts: 210
xx Re: Accessing the Window's API
« Reply #13 on: Oct 3rd, 2010, 5:18pm »

Hi,

I'm trying to teach myself understanding the API. But I can't find the constant value for DTM_GETDATETIMEPICKERINFO. I've tried everywhere on the net and with the API Viewer, but nothing.

Any idea?

Matt
User IP Logged

admin
Administrator
ImageImageImageImageImage


member is offline

Avatar




PM


Posts: 1145
xx Re: Accessing the Window's API
« Reply #14 on: Oct 3rd, 2010, 9:28pm »

on Oct 3rd, 2010, 5:18pm, Matt wrote:
I can't find the constant value for DTM_GETDATETIMEPICKERINFO

The reason you're having trouble finding it is that it's a Vista (and later) only message. Therefore it's not something you can use in a program which needs to run on, for example, Windows XP.

If you don't mind your program being specific to Windows Vista and Windows 7, the value is as follows:

Code:
DTM_GETDATETIMEPICKERINFO = &100E 

Richard.
User IP Logged

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

| |

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