我建立了一个基于对话框的应用程序,想把这个对话框分割成两部分,在点“高级设置”的时候,下半部分的对话框显示出来,点“精简模式”的时候,下半部分的对话框隐藏。 我用一个 图片空间作为分割线来分割对话框的。
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做修改呢?怎么改呢??谢谢啊
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做修改呢?怎么改呢??谢谢啊
解决方案 »
- 如何在一个主对话框中打开小对话框的时候关闭其他的对话框(如图所示)
- 请教用CSplitter分成两列后为何第一列宽显示时总为0?
- fullContext=_T("mysyncpath");的错误在哪里???编译不过,报无法转换
- 怎样保存和恢复当前文件的指针?
- 钩子的问题,请高手帮忙!
- 对你来说可能是简单问题,但是我却不知道该怎么解决,在线等待,谢谢谢谢谢谢
- 关于AfxBeginThread建立线程的参数问题,请帮助,谢谢!
- 有谁知道如何获取MAC地址?
- 我在一个socket类中这样做为何不能使用文档类的成员函数?
- 如何才能使程序常驻内存运行?
- VC中调用WORD中如何设置WORD 的页面设置
- 写入位置“0X8080808084”时发生访问冲突
SetWindowPos(NULL,0,0,rectsmall2.Width(),rectsmall2.Height(),SWP_NOMOVE ¦SWP_NOZORDER); //这段代码添加到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);
}
// 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);
// }
static CRect rectsmall2; //这段代码放到OnInitDialog中
if(rectlarge2.IsRectNull())
{
CRect rectsep2;
GetWindowRect(&rectlarge2); //因为对话框在OnInitDialog中已经显示成rectsmall大小,所以这里
//GetWindowRect获得的也是rectsmall大小,即rectlarge等于rectsmallGetDlgItem(IDC_SEPARATE)->GetWindowRect(&rectsep2);
rectsmall2.left=rectlarge2.left;
rectsmall2.top=rectlarge2.top;
rectsmall2.right=rectlarge2.right;
rectsmall2.bottom=rectsep2.bottom;
}