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

Welcome Guest. Please Login or Register.
Apr 6th, 2018, 12:18am



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 4483 times)
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

Matt
Developer

member is offline

Avatar




PM

Gender: Male
Posts: 210
xx Re: Accessing the Window's API
« Reply #15 on: Oct 4th, 2010, 06:17am »

Ah, that would explain my problem. Thanks.

One of the things I was trying to do with this was to find out if the DateTime checkbox that I've got on a Propsheet is checked or not. I can't seem to find another constant that would allow me to do this. Am I, again, just missing something obvious?

Matt
User IP Logged

admin
Administrator
ImageImageImageImageImage


member is offline

Avatar




PM


Posts: 1145
xx Re: Accessing the Window's API
« Reply #16 on: Oct 4th, 2010, 11:01am »

on Oct 4th, 2010, 06:17am, Matt wrote:
One of the things I was trying to do with this was to find out if the DateTime checkbox that I've got on a Propsheet is checked or not. Am I, again, just missing something obvious?

I don't know whether it is "obvious", but it is there! If you look at the docs for the DTM_GETSYSTEMTIME message you will find this:

Returns GDT_VALID if the time information was successfully placed in lpSysTime. Returns GDT_NONE if the control was set to the DTS_SHOWNONE style and the control check box was not selected:

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

So to determine whether the checkbox was selected or not, simply query the date/time in the normal way and test the value returned from SendMessage. If the checkbox was selected you will get GDT_VALID (0) , if it wasn't you will get GDT_NONE (1).

Richard.
User IP Logged

Matt
Developer

member is offline

Avatar




PM

Gender: Male
Posts: 210
xx Re: Accessing the Window's API
« Reply #17 on: Oct 4th, 2010, 7:52pm »

Thanks Richard.

Just tried it and it works fine. Although it seems to me that the result is the wrong way round as zero is normally considered as false, but that's splitting hairs.

Thanks again.

Matt
User IP Logged

admin
Administrator
ImageImageImageImageImage


member is offline

Avatar




PM


Posts: 1145
xx Re: Accessing the Window's API
« Reply #18 on: Oct 4th, 2010, 9:41pm »

on Oct 4th, 2010, 7:52pm, Matt wrote:
it seems to me that the result is the wrong way round

It makes perfect sense if you consider the returned value to be an error code. GDT_VALID (0) indicates success (the checkbox was selected, so a valid date/time was returned) and GDT_NONE (1) indicates failure (the checkbox was not selected, so there is no date/time to return). The other value that can be returned is GDT_ERROR (-1) which indicates that some other error occurred.

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