Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Frame subclass question

0 views
Skip to first unread message

Dave Saville

unread,
Nov 22, 2009, 12:32:51 PM11/22/09
to
In ClipView I inhibit the user altering the vertical size. To do this
I subclass the frame and then

case WM_QUERYTRACKINFO:

if ( SHORT1FROMMP(mp1) == 1 || /* widen to the left */
SHORT1FROMMP(mp1) == 4 || /* widen to the right */
SHORT1FROMMP(mp1) == 15 || /* move */
SHORT1FROMMP(mp1) == 31 ) /* alt-f7 move */
{
/* empty */;
}
else
{
return 0;
}

// allow normal processing


A user, bless him, has found that with a normal window click on the
part of the frame that changes the cursor to resize, the double headed
arrow, then that also gives focus to the frame. But with ClipVew it
only works on the sides. How can I stop a vertical resize but let the
focus thing happen?

TIA

--
Regards
Dave Saville

Dave Saville

unread,
Nov 22, 2009, 1:11:10 PM11/22/09
to

Ha Ha, found that I have to modify the TRACKINFO structure pointed to
by mp2. Setting ptlMaxTrackSize.y to the height of my frame works. But
dragging vertically from the top you get a wire frame that snaps back
to the correct height. Be nice if that did not happen and dragging
vertically from the bottom you also get the wire frame but when you
release the mouse the whole window snaps, with correct size, to where
the bottom has been dragged. I obviously need to hack a few other
settings but I cannot find TRACKINFO documented as to what things do
rather than what they are. :-(
>


--
Regards
Dave Saville

Ruediger Ihle

unread,
Nov 22, 2009, 2:00:37 PM11/22/09
to
On Sun, 22 Nov 2009 18:11:10 UTC, "Dave Saville" <da...@invalid.invalid> wrote:

> Setting ptlMaxTrackSize.y to the height of my frame works. But
> dragging vertically from the top you get a wire frame that snaps
> back to the correct height.

You may try setting both ptlMaxTrackSize.y and ptlMinTrackSize.y
to your fixed value and return TRUE (without checking
SHORT1FROMMP(mp1)).


--
Ruediger "Rudi" Ihle [S&T Systemtechnik GmbH, Germany]
http://www.s-t.de
Please remove all characters left of the "R" in my email address

Dave Saville

unread,
Nov 22, 2009, 2:53:59 PM11/22/09
to
On Sun, 22 Nov 2009 19:00:37 UTC, "Ruediger Ihle"
<NO_SPAM...@S-t.De> wrote:

> On Sun, 22 Nov 2009 18:11:10 UTC, "Dave Saville" <da...@invalid.invalid> wrote:
>
> > Setting ptlMaxTrackSize.y to the height of my frame works. But
> > dragging vertically from the top you get a wire frame that snaps
> > back to the correct height.
>
> You may try setting both ptlMaxTrackSize.y and ptlMinTrackSize.y
> to your fixed value and return TRUE (without checking
> SHORT1FROMMP(mp1)).
>
>

Thanks, but no cigar.

Returning TRUE stops *any* resize. Seems you *have* to
return pinstdata->OldProc(hwnd, msg, mp1, mp2);

--
Regards
Dave Saville

Dave Saville

unread,
Nov 22, 2009, 3:50:18 PM11/22/09
to
On Sun, 22 Nov 2009 19:53:59 UTC, "Dave Saville"
<da...@invalid.invalid> wrote:

> On Sun, 22 Nov 2009 19:00:37 UTC, "Ruediger Ihle"
> <NO_SPAM...@S-t.De> wrote:
>
> > On Sun, 22 Nov 2009 18:11:10 UTC, "Dave Saville" <da...@invalid.invalid> wrote:
> >
> > > Setting ptlMaxTrackSize.y to the height of my frame works. But
> > > dragging vertically from the top you get a wire frame that snaps
> > > back to the correct height.
> >
> > You may try setting both ptlMaxTrackSize.y and ptlMinTrackSize.y
> > to your fixed value and return TRUE (without checking
> > SHORT1FROMMP(mp1)).
> >
> >
>
> Thanks, but no cigar.
>
> Returning TRUE stops *any* resize. Seems you *have* to
> return pinstdata->OldProc(hwnd, msg, mp1, mp2);
>

Ha, misunderstood you need to do a pinstdata->OldProc(hwnd, msg, mp1,
mp2); *before* you mess with values and *then* return TRUE.

Thanks for the pointers.
--
Regards
Dave Saville

0 new messages