对话框分割后的显示问题

rollrock1987 2008-04-02 12:55:32
我建立了一个基于对话框的应用程序,想把这个对话框分割成两部分,在点“高级设置”的时候,下半部分的对话框显示出来,点“精简模式”的时候,下半部分的对话框隐藏。 我用一个 图片空间作为分割线来分割对话框的。
static CRect rectlarge2;
static CRect rectsmall2;

if(rectlarge2.IsRectNull())
{
CRect rectsep2;
GetWindowRect(&rectlarge2);
GetDlgItem(IDC_SEPARATE)->GetWindowRect(&rectsep2);
rectsmall2.left=rectlarge2.left;
rectsmall2.top=rectlarge2.top;
rectsmall2.right=rectlarge2.right;
rectsmall2.bottom=rectsep2.bottom;
}

CString str;
if(GetDlgItemText(IDC_BUTTON_ADVANCED,str),str=="高级设置>>")
{

SetWindowPos(NULL,0,0,rectlarge2.Width(),rectlarge2.Height(),SWP_NOMOVE|SWP_NOZORDER);
SetDlgItemText(IDC_BUTTON_ADVANCED,"精简模式<<");
}
else
{
SetDlgItemText(IDC_BUTTON_ADVANCED,"高级设置>>");
SetWindowPos(NULL,0,0,rectsmall2.Width(),rectsmall2.Height(),SWP_NOMOVE|SWP_NOZORDER);
}

这个功能倒是可以简答的实现的,但是就是在对话框 第一次出现 的时候,上下两个部分都有的,怎么样才能把下半部分的对话框隐藏呢??我试了很多方法都不行,是不是要在OnInitDialog做修改呢?怎么改呢??谢谢啊
...全文
179 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianhaixin 2012-03-21
  • 打赏
  • 举报
回复
谢谢 学习了
datoucaicai 2008-04-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 rollrock1987 的回复:]
to:datoucaicai 我试过了的,刚显示出来的时候,下半部分是没有的,但是点“高级设置”的时候,可以变成“精简模式”,但是下半部分的对话框不会出现
[/Quote]


static CRect rectlarge2; //rect定义成成员变量
static CRect rectsmall2;

//这段代码放到OnInitDialog
if(rectlarge2.IsRectNull())
{
CRect rectsep2;
GetWindowRect(&rectlarge2); //因为对话框在OnInitDialog中已经显示成rectsmall大小,所以这里
//GetWindowRect获得的也是rectsmall大小,即rectlarge等于rectsmall
GetDlgItem(IDC_SEPARATE)->GetWindowRect(&rectsep2);
rectsmall2.left=rectlarge2.left;
rectsmall2.top=rectlarge2.top;
rectsmall2.right=rectlarge2.right;
rectsmall2.bottom=rectsep2.bottom;
}
rollrock1987 2008-04-02
  • 打赏
  • 举报
回复
给分了 给分了 谢谢啊
datoucaicai 2008-04-02
  • 打赏
  • 举报
回复
上面OnInitDialog中

// CString strtemp;
// GetDlgItemText(IDC_BUTTON_TEST,strtemp);
// if(strtemp == "收缩 < <")
// {

SetDlgItemText(IDC_BUTTON_TEST, "扩展>>"); //只留这两句也没问题
SetWindowPos(NULL,0,0,m_rectSmall.Width(),m_rectSmall.Height(),
SWP_NOMOVE ¦SWP_NOZORDER);
// }
datoucaicai 2008-04-02
  • 打赏
  • 举报
回复
我vc6做了例程,没问题啊

OnInitDialog中:
GetClientRect(&m_rectLarge);
CRect rectseparator;
GetDlgItem(IDC_STATIC_SEPARATOR)->GetWindowRect(&rectseparator);

m_rectSmall.left = m_rectLarge.left;
m_rectSmall.top = m_rectLarge.top;
m_rectSmall.right = m_rectLarge.right;
m_rectSmall.bottom = rectseparator.bottom;

CString strtemp;
GetDlgItemText(IDC_BUTTON_TEST,strtemp);
if(strtemp == "收缩<<")
{
SetDlgItemText(IDC_BUTTON_TEST, "扩展>>");
SetWindowPos(NULL,0,0,m_rectSmall.Width(),m_rectSmall.Height(),
SWP_NOMOVE|SWP_NOZORDER);
}

按钮响应函数中:

CString strtemp;
GetDlgItemText(IDC_BUTTON_TEST,strtemp);
if(strtemp == "扩展>>")
{
SetDlgItemText(IDC_BUTTON_TEST,"收缩<<");
SetWindowPos(NULL,0,0,m_rectLarge.Width(),m_rectLarge.Height(),
SWP_NOMOVE|SWP_NOZORDER);
}
else
{
SetDlgItemText(IDC_BUTTON_TEST,"扩展>>");
SetWindowPos(NULL,0,0,m_rectSmall.Width(),m_rectSmall.Height(),
SWP_NOMOVE|SWP_NOZORDER);
}
rollrock1987 2008-04-02
  • 打赏
  • 举报
回复
to:datoucaicai 我试过了的,刚显示出来的时候,下半部分是没有的,但是点“高级设置”的时候,可以变成“精简模式”,但是下半部分的对话框不会出现
datoucaicai 2008-04-02
  • 打赏
  • 举报
回复
SetDlgItemText(IDC_BUTTON_ADVANCED,"高级设置>>");
SetWindowPos(NULL,0,0,rectsmall2.Width(),rectsmall2.Height(),SWP_NOMOVE ¦SWP_NOZORDER);

//这段代码添加到OnInitDialog中试试

15,979

社区成员

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

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