高分征求答案:如何动态改变CFormView中对话框模版的大小

copy 2000-11-22 12:28:00
一个分割视图,一部分是CFormView,在此窗口中控件显示的数量是动态改变的,象3DMAX
中的操作视。我希望FormView的对话框模板动态改变,比如当当前屏幕能够显示完所有可视控件时,不显示滚动条,显示不下时,显示滚动条。请问大虾如何实现。
...全文
353 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuxin 2000-11-29
  • 打赏
  • 举报
回复
咦,我怎么没遇过这个问题。
要注意的是:不要直接改变CFormView窗口的大小,只设置他的ScrollSize。
如果还不行的话,可在SetScrollSize后,调用CSplitterWnd的成员函数RecalcLayout试一试。
也可调用框架类的相应函数。
该函数的作用是重新设置子视类的位置和大小。
copy 2000-11-28
  • 打赏
  • 举报
回复
to wuxin:
在调用SetScrollSizes后,滚动条显示不正确,该视将状态条覆盖,当将窗口改变大小,
如恢复或最大化才能显示正确。我使用Invalidate、OnUpdate、传递WM_SIZE消息也不行。
如何解决。
wuxin 2000-11-27
  • 打赏
  • 举报
回复
呵呵,还没解决吗?
其实 very very very simple。
CFormView是从CScrollView中派生的。
你在显示完控件后,算出控件所在区域的大小 cx,cy。
用 CFormView::SetScrollSize(MM_TEXT,CSize(cx,cy))设置一下就行了。
longx 2000-11-23
  • 打赏
  • 举报
回复
其实很简单。用到分割条,此FormView会自动改变大小的,这时需要
你重新组织FormView中的各个控件。为什么有时会出现滚动条?是因为
你在资源模板中FormView太大了。最好在你资源模板将之最小化,
只有几个像数,以后再它的WM_SIZE事件中再调整各个控件的大小和位置。
例如:
//以下代码将FormView中的TreeView始终充满整个FormView.
void CLeftView::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
CRect rc;
GetWindowRect(rc);
ScreenToClient(rc);
WINDOWPLACEMENT wndPlace;
m_tree.GetWindowPlacement(&wndPlace);
wndPlace.rcNormalPosition=rc;
m_tree.SetWindowPlacement(&wndPlace);
}

coolfired 2000-11-23
  • 打赏
  • 举报
回复
太简单了,在PreCreateWindow中加入cs.Style的滚动风格位就行,在程序中任何时候都可以使用
SetWindowLong改变风格,看我的程序中的这一句;SetWindowLong(m_hWnd,GWL_STYLE,WS_VISIBLE | WS_CHILD);我在我的程序中随时都在改变窗口的风格和位置,还是刚在Active/Com中回答的那句话,windows就是窗口,消息,事件驱动,CWnd类是搞定(一切)的根本.
copy 2000-11-23
  • 打赏
  • 举报
回复
分白给了吗??????????
copy 2000-11-22
  • 打赏
  • 举报
回复
???????????????????????这么难吗?????????
copy 2000-11-22
  • 打赏
  • 举报
回复
高手哪去了?

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧