基于Dialog的界面上有5个Button,一个TreeList,一个ListBox。需要实现点击一个按钮的时候,ListBox隐藏,同时5个按钮重新布局,能实现码解决方案

基于Dialog的界面上有5个Button,一个TreeList,一个ListBox。需要实现点击一个按钮的时候,ListBox隐藏,同时5个按钮重新布局,能实现码
RT
TreeList和ListBox的大小是固定的,两者处在同一个水平高度,占据了界面的80%。5个按钮分布在界面的底部。

当按一个按钮的时候,ListBox要隐藏,这样为了美观,要让界面变窄。如何实现?
界面变窄后,5个本来在一排的按钮要分成两排了,要重新布局一下。如何实现?

我试了下动态创建按钮,但是创建之后如何响应按钮消息我不会了。

------解决方案--------------------
创建之后如何响应按钮消息我不会了

还是on..clicked吧?
------解决方案--------------------
其实没有必要动态创建按钮
直接对对话框上的按钮添加控件变量,如m_button,m_list
隐藏ListBox就 m_list.ShowWindow(SW_HIDE)
布局按钮就m_button.MoveWindow(CRect(左,上,下,右));

若要动态创建按钮则要在Resource.h里加自定义的ID号,创建按钮时用该ID号,然后用classwizard添加该ID响应按钮消息
------解决方案--------------------
sorry error
布局按钮是 m_button.MoveWindow(CRect(左,上,右,下));

------解决方案--------------------
控件也是子窗口,类一般从 CWnd 派生,可以找到其窗口句柄,隐藏一个窗口用 ShowWindow ,移动、改变大小用 MoveWindow 即可.
------解决方案--------------------
每一个控件都有ID或者说是名字比如IDB_BUTTON1之类的
你可以在OnButtonDown代码里面
m_bCtrl
~~~~~~
弄在成员变量里面,初始化根据需要随便为TRUE或者FALSE
if(m_bCtrl)
{
GetDlgItem([ID号码])-> ShowWindow([TRUE/FALSE]);
GetDlgItem([ID号码])-> MoveWindow([l,t,r,b]);
~~~~~~~~~
这四个参数不止决定了按钮的位置,也决定了按钮的大小
m_bCtrl = FALSE;
}
else
{
GetDlgItem([ID号码])-> ShowWindow([TRUE/FALSE]);
GetDlgItem([ID号码])-> MoveWindow([l,t,r,b]);
~~~~~~~~~
这四个参数不止决定了按钮的位置,也决定了按钮的大小
如果按钮都不可见了,那么也就没有必要设置移动了
m_bCtrl = TRUE;
}
------解决方案--------------------
哦,对了,如果是按钮的话,补充一下,给按钮添加一个成员变量,使用类向导,将变量的类型设置为Control,CButton,那么每个按钮都有一个控件变量对应了
那么上面的代码里面
GetDlgItem([IDC_BUTTON1])-> ShowWindow
就可以改为
m_bt1.ShowWindow
~~~~~
这个认为是BUTTON1对应的成员变量
但是GetDlgItem是公认的万能方法