How can I size client rect precisely ?
Taehoon Kee -- keeth@chollian.dacom.co.kr
Thursday, September 19, 1996
Environment : VC++ 4.0, Windows 95
To size a view at wanted size,
In my view class's OnInitialUpdate,
rect.left = 100;
rect.top = 100;
rect.right = 200;
rect.bottom = 200;
AdjustWindowRect( &rect, AfxGetMainWnd()->GetStyle(), TRUE);
AfxGetMainWnd()->MoveWindow( rect, TRUE);
And then,
In OnDraw,
I call GetClientRect,
The result I wanted was ( 0, 0, 100, 100),
BUT the result was -> ( 0, 0, 96, 96) !
I guess difference 4 is border's thickness,
but I started this app by turning off "Thick Frame".
What is wrong ?
To size a view at wanted size,
I try CalcWindowRect and AdjustWindowRect.
But Both were wrong.
And in case of adopting ToolBar and/or StatusBar,
problems get worse.
How can I do it ?
Thanks in advance.
Taehoon
ganeshs@nationwide.com
Monday, September 23, 1996
Environment : VC++ 4.0, Windows 95
> To size a view at wanted size,
> In my view class's OnInitialUpdate,
>
> rect.left = 100;
> rect.top = 100;
> rect.right = 200;
> rect.bottom = 200;
>
> AdjustWindowRect( &rect, AfxGetMainWnd()->GetStyle(), TRUE);
> AfxGetMainWnd()->MoveWindow( rect, TRUE);
>
> And then,
> In OnDraw,
> I call GetClientRect,
>
> The result I wanted was ( 0, 0, 100, 100),
> BUT the result was -> ( 0, 0, 96, 96) !
> I guess difference 4 is border's thickness,
> but I started this app by turning off "Thick Frame".
>
> What is wrong ?
>
> To size a view at wanted size,
> I try CalcWindowRect and AdjustWindowRect.
> But Both were wrong.
>
> And in case of adopting ToolBar and/or StatusBar,
> problems get worse.
>
> How can I do it ?
>
> Thanks in advance.
> Taehoon
Put the CalcWindowRect call in your frame window's OnCreate, then
call MoveWindow, and things should be fine. What's happening is, since
the View does not have a "frame", CalcWindowRect returns the rect
unchanged. So, effectively, you're using the same initial values to size
the Frame, not taking the Frame's "frame" into account.
For correct View sizing with ToolBars/StatusBars, use RepositionBars
with the reposQuery option (again) in your Frame window's OnCreate,
passing the View's desired size. Then call MoveWindow with the Rect
returned, and RepositionBars again. Check out
ftp://ftp.microsoft.com/softlib/mslfiles/DLGCBR32.EXE. This program
explains the procedure for a Dialog, but the same principle applies.
/ ___| / ___| __ _ _ __ ___ ___| |
\___ \ | | _ / _` | '_ \ / _ \/ __| '_ \
___) | | |_| | (_| | | | | __/\__ \ | | |
|____(_) \____|\__,_|_| |_|\___||___/_| |_|
| Вернуться в корень Архива
|