基于对话框程序中的对话框中的控件如何使大小随对话框大小变化而变化,始终填充客户区

致我们即将逝去D青春 2011-07-15 03:44:54
基于对话框程序中的对话框中的控件如何使大小随对话框大小变化而变化,始终填充客户区。谢谢
...全文
65 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiuzhoulh 2011-07-15
  • 打赏
  • 举报
回复
在OnSize()函数中处理!
Eleven 2011-07-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 maimaiti123 的回复:]

设置了下,不用重复定义了。崩溃错误没有了,但是,还是大小没有发生改变
[/Quote]
你每次进入OnSize中都会调用Create函数,重复创建当然会崩溃了
你判断一下当前HWND句柄是否不为空,为NULL就创建(调用Create),否则就不创建(不调用Create函数)
psbeond 2011-07-15
  • 打赏
  • 举报
回复
不要在OnSize中创建控件,而是应该放到OnInitDialog或OnCreate中创建,然后在OnSize中移动控件,在移动前,要用m_webbrowser.GetSafeHwnd()来判断控件是否被创建,因为第一次WM_SIZE消息比WM_CREATE消息早。

------------------------------------------------------------------------
  • 打赏
  • 举报
回复
设置了下,不用重复定义了。崩溃错误没有了,但是,还是大小没有发生改变
lslsyqyq 2011-07-15
  • 打赏
  • 举报
回复
CREATE的话 只要调用一次吧
设个标志
m_webbrowser.Create(NULL,WS_CHILD,rect,AfxGetApp()->m_pMainWnd,
IDC_EXPLORER1);
只运行一次就好了
  • 打赏
  • 举报
回复
我现在在对话框的onsize里面放了如下代码但 是会报错的
CRect rect;
GetClientRect(&rect);
m_webbrowser.Create(NULL,WS_CHILD,rect,AfxGetApp()->m_pMainWnd,
IDC_EXPLORER1);
m_webbrowser.SetLeft(rect.left);
m_webbrowser.SetTop(rect.top);
m_webbrowser.SetWidth(rect.Width());
m_webbrowser.SetHeight(rect.Height());

这个creat不能少,少了下面的没有办法设置,但是,这样写CREATE也有问题,但是不知道出在哪里。谁帮我完善改进下,谢谢。为IDC_EXPLORER1为WEBBROWSER的ID

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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