On 06/08/2016 13:13, Giorgio Garabello wrote:
2016-08-06 12:40 GMT+02:00 pjwitte:
On 05/08/2016 01:23, Giorgio Garabello wrote:
When you draw a menu with Easymenu, that design is the minimum size of
the
menu.
I can not make it smaller by SBASIC, using MDRAW command.
Now, is there any way to read this minimum size of the menu? The manual
I
could not find anything useful, but my English is bad and probably
escaped
me.
Thanks in advanced
Giorgio
2016-08-05 15:43 GMT+02:00 pjwitte:
Surely, the programmer who designed the menu already knows its minimum
size? Or am I missing something?
Per
On 05/08/2016 20:36, Giorgio Garabello wrote:
> Not necessarily, in my case it is a service routine that must
> be able to handle any menu
>
> Giorgio
I use the same routine as Tobias to read the values directly from the
working definition, eg after a resize call by the user. My point is that it
seems pointless to calculate a value that is fixed and known in advance: A
menu's minimum size is built into the menu presumably by the author of the
program using it. I could only think of a few special cases, such as a
utility, like my MenView, to display menu (_men) files, and programs for
designing menus, such as EasyMen itself. But perhaps thats what you had in
mind. No, matter, Im glad you found a solution!
Per
PS I sent this message last night - 9 hours ago - but it hasnt arrived
yet, so trying again 12.39 GMT+2. Why so slow? P
> My aim is to resize the menu without moving .
> Using the routines that I found on the EASYPTR manual (or on the web )
> if I try to make it smaller over size its minimum , the menu shrinks
> only up to its minimum size ( and is correct to do it ) and then moves
> .
> I have to overcome this drawback , the lower right corner should never
> move, so I thought I calculate the new point of origin so
>
> X current source - current width + minimum width
>
> and
>
> source current Y - current height + minimum height .
>
> So i need to use the minimum size of the menu. I was hoping to get
> poterve automatically .
>
> I'm using Google translate , so probably I am sending you the nonsense
> .. or the recipe of spaghetti with tomato sauce !
>
> Giorgio
>
Well, then you need to PEEK the window definition [WD] rather than the
window working definition [WWD]. EasyPtr prepends its own header to
the WD. I think its always 28b long, in which case the
standard/minimum size can be found at
WD = APPA(<menu name>)
minx = PEEK_W(WD + 28): miny = PEEK_W(WD + 30)
This is not a universal formula, mind you, as more than one layout may
be defined (the menu designer will know). However, I'll leave that as
an excercise for now.. ;) Check out the excellent QPTR manual for
details, and use EasySource to dissemble your EasyMen menus.
Per
Sent at 15:10 GMT+2
_______________________________________________
QL-Users Mailing List