控件大小随窗口大小改变的问题(急~在线等...) 我想在窗口改变大小时,窗口中的控件也随之改变大小.我在网上找了几个例子,但是有些复杂,而且还是重写CDialog类的.请问大家如何解决,有无例子或者相关的文章可以参考的呢?谢谢~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 MoveWindow就可以了.VCKBase有个类[忘记在什么地方了] 这一段应该可以[在对话框]CRect m_ClientOld; CRect m_ClientNew; GetClientRect(m_ClientOld); RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0,reposQuery,m_ClientNew); CPoint pOffset(m_ClientNew.left-m_ClientOld.left,m_ClientNew.top-m_ClientOld.top); CRect m_Child; CWnd* pChild=GetWindow(GW_CHILD); while(pChild) { pChild->GetWindowRect(m_Child); ScreenToClient(m_Child); m_Child.OffsetRect(pOffset); pChild->MoveWindow(m_Child,FALSE); pChild=pChild->GetNextWindow(); } CRect m_Window; GetWindowRect(m_Window); m_Window.right+=m_ClientOld.Width()-m_ClientNew.Width(); m_Window.bottom+=m_ClientOld.Height()-m_ClientNew.Height(); MoveWindow(m_Window,FALSE); 这下面有个东东挺好使的。http://www.codeproject.com/dialog/resizabledialog.asp另外,也可以在OnSize下面处理,使用MoveWindow对每个控件的位置和大小进行调整。 http://www.codeproject.com/dialog/easysize.asp 好的,我先试试.我记得我原来在OnSize里用过MoveWindow做过控件位置改动,不过失败了,一产生OnSize事件系统就报错. 要注意,在OnSize中要判断cx和cy的值是否是合法的值后再改变控件的位置。否则有些控件都还没有创建,调用MoveWindow会出错的。 我在试http://www.codeproject.com/dialog/resizabledialog.asp编译时出现一下错误,请问大概会是什么问题造成的呢?Demo.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CResizableDialog::~CResizableDialog(void)" (??1CResizableDialog@@UAE@XZ) 对不起,我发错链接了,应该是RacoXu(Raco)的那个http://www.codeproject.com/dialog/easysize.asp这个我原来用过,应该没问题。 谢谢baberson(平平狐),终于解决问题啦~~~ 求助illegal call of non-stat Ado方式读取记录集的办法 ATL的学习过程的迷惑 求Visual C++相关帮助文档 急急急!如何传送一幅jpg图像 辞职了,散分 很簡單的問題! 谁在使用MSFlexGrid时见过这种问题,在线等待... 请问谁有将可执行文件中的资源提取出来保存在新的rc文件中的源代码? 一个基于对话框的程序有弹出式菜单,如何在其中加入图标呢? 我将SYSTEMTIME类型的数据转换成CTime类型时出现断言错误 怎样用自己的登陆对话框取代win2000的登陆画面?
CRect m_ClientOld;
CRect m_ClientNew;
GetClientRect(m_ClientOld);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0,reposQuery,m_ClientNew);
CPoint pOffset(m_ClientNew.left-m_ClientOld.left,m_ClientNew.top-m_ClientOld.top);
CRect m_Child;
CWnd* pChild=GetWindow(GW_CHILD);
while(pChild)
{
pChild->GetWindowRect(m_Child);
ScreenToClient(m_Child);
m_Child.OffsetRect(pOffset);
pChild->MoveWindow(m_Child,FALSE);
pChild=pChild->GetNextWindow();
} CRect m_Window;
GetWindowRect(m_Window);
m_Window.right+=m_ClientOld.Width()-m_ClientNew.Width();
m_Window.bottom+=m_ClientOld.Height()-m_ClientNew.Height();
MoveWindow(m_Window,FALSE);
http://www.codeproject.com/dialog/resizabledialog.asp另外,也可以在OnSize下面处理,使用MoveWindow对每个控件的位置和大小进行调整。
http://www.codeproject.com/dialog/resizabledialog.asp
编译时出现一下错误,请问大概会是什么问题造成的呢?
Demo.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CResizableDialog::~CResizableDialog(void)" (??1CResizableDialog@@UAE@XZ)
http://www.codeproject.com/dialog/easysize.asp
这个我原来用过,应该没问题。