如何实现登陆窗口的高级设置界面 主要是不明白如何显示高级设置。刚开始初始化的时候登录界面是一般的界面,当点击了高级设置后,会出现下半部分,再次点击高级设置,会把下半部分隐藏掉。类似QQ那种样子的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不需要,比如你弄一个Dialog,只要按那个按钮,用SetWindowPos(带SWP_NOMOVE),或者MoveWindow重新设置一下窗口的大小,展开隐藏的部分。Dialog初始化时设置其大小是较小,把额外的部分隐藏。 还可以设置递增的高和宽,再设置个计时器,这样就会慢慢扩张开,好看一些。以前有弄过一个这样的。重新设置窗口大小直接用movewindow就好了啊。 CRect rect; GetClientRect(&rect); for (int i=0;i<rect.Width();i+=5) { SetWindowPos(0,0,0,i,rect.Height(),SWP_NOMOVE); Sleep(1); }这个只是演示的,具体大小你自己设定 在隐藏和显示方法中,如何是初始化界面为隐藏的情况,如果直接用DoModal()的话,显示的对话框为整个对话框,此时会显示高级设置界面,如何初始化登录窗口使它不显示高级设置界面呢 Dialog初始化时设置其大小是较小,把额外的部分隐藏。初始化的时候怎么设置其为较小呢 直接DoModle好像不行。 计算最小的尺寸大小,在size里用MoveWindows实现。 在OnInitDialog里MoveWindow调整一下 我先试试 不过MoveWindow里面的参数是不是要提前设定好啊,不能从窗口中读取吧? 关键2点:1、改变窗口的尺寸,SetWindowPos或MoveWindow;2、显示控件,ShowWindow( SW_SHOW );/*SW_HIDE*/收缩时,窗口尺寸设置小一点,把展开高级设置后的控件都隐藏了。展开式,窗口尺寸设置大一些,把展开后需要显示的空间显示出来。 孙鑫老师里有 就是加一个图片控件 static CRect rectLarge; static CRect rectSmall; if(rectSmall.IsRectNull()) { CRect rectSeparator; GetWindowRect(&rectSmall); GetDlgItem(IDC_SEPARATOR)->GetWindowRect(&rectSeparator); rectSmall.bottom=rectSeparator.top; } if(rectLarge.IsRectNull()) { GetWindowRect(&rectLarge); } if(rectbool) { SetWindowPos(NULL,0,0,rectSmall.Width(),rectSmall.Height(), SWP_NOMOVE | SWP_NOZORDER); } else { SetWindowPos(NULL,0,0,rectLarge.Width(),rectLarge.Height(), SWP_NOMOVE | SWP_NOZORDER); } rectbool=!rectbool; 在OnInitDialog()函数中: CRect rt; GetClientRect(&rt); SetWindowPos(0,0,0,rect.Width(),rect.Height()-100;,SWP_NOMOVE); //这里的100就是你弹出高级设置的窗口的高度然后再按钮响应函数中: SetWindowPos(0,0,0,rect.Width(),rect.Height();,SWP_NOMOVE); 上面代码有点小错误修改如下:设置全局变量:CRect rt;在OnInitDialog()函数中:GetClientRect(&rt);SetWindowPos(0,0,0,rt.Width(),rt.Height()-100,SWP_NOMOVE); //这里的100就是你弹出高级设置的窗口的高度然后再按钮响应函数中: SetWindowPos(0,0,0,rt.Width(),rt.Height();,SWP_NOMOVE); //定义两个全局变量 static CRect rectLarge;//保存不改变的对话框的位置static CRect rectSmall;//保存改变了的对话框的位置bHighLevel=FALSE;//全局的//在初始化函数中将对话框初始化为小的,IDC_PART_LINE_BOTTOM是我加的一个静态文本框,用来做分割 if(rectLarge.IsRectNull()) { CRect rectSeparator; GetWindowRect(&rectLarge); GetDlgItem(IDC_PART_LINE_BOTTOM)->GetWindowRect(&rectSeparator); rectSmall.left = rectLarge.left; rectSmall.top = rectLarge.top; rectSmall.right = rectLarge.right; rectSmall.bottom = rectSeparator.bottom; }//在登录函数中添加判断,点击一下为高级大框,再点击一下为显示小的 if(!bHighLevel) { SetWindowPos(NULL,0,0,rectLarge.Width(),rectLarge.Height(), SWP_NOMOVE | SWP_NOZORDER);//设置窗口位置 bHighLevel=TRUE; } else { SetWindowPos(NULL,0,0,rectSmall.Width(),rectSmall.Height(), SWP_NOMOVE | SWP_NOZORDER); bHighLevel=FALSE; } MFC 程序 客户端发送文件到服务端 MD5改变 关于打开文件写数据 0和0L的区别? 已知一个图标句柄,请问怎样把这个图标所在的内存块读出来?? 问题已经解决但没有结帖的在这里给出地址,我帮你们结 关于VC的语法 TransmitFile会阻塞,怎么办? 满分请教! 服务的制作 如何屏蔽ESC键? 这才叫真正的高手!!!看看吧!这个语言是用啥语言开发的。c? c++?basic? 程序如何向已锁定的计算机发送解锁事件? 普通键盘钩子跟低级键盘钩子的区别
CRect rect;
GetClientRect(&rect);
for (int i=0;i<rect.Width();i+=5)
{
SetWindowPos(0,0,0,i,rect.Height(),SWP_NOMOVE);
Sleep(1);
}这个只是演示的,具体大小你自己设定
Dialog初始化时设置其大小是较小,把额外的部分隐藏。
初始化的时候怎么设置其为较小呢 直接DoModle好像不行。
1、改变窗口的尺寸,SetWindowPos或MoveWindow;
2、显示控件,ShowWindow( SW_SHOW );/*SW_HIDE*/收缩时,窗口尺寸设置小一点,把展开高级设置后的控件都隐藏了。
展开式,窗口尺寸设置大一些,把展开后需要显示的空间显示出来。
static CRect rectLarge;
static CRect rectSmall;
if(rectSmall.IsRectNull())
{
CRect rectSeparator;
GetWindowRect(&rectSmall);
GetDlgItem(IDC_SEPARATOR)->GetWindowRect(&rectSeparator);
rectSmall.bottom=rectSeparator.top;
}
if(rectLarge.IsRectNull())
{
GetWindowRect(&rectLarge);
}
if(rectbool)
{
SetWindowPos(NULL,0,0,rectSmall.Width(),rectSmall.Height(),
SWP_NOMOVE | SWP_NOZORDER);
}
else
{
SetWindowPos(NULL,0,0,rectLarge.Width(),rectLarge.Height(),
SWP_NOMOVE | SWP_NOZORDER);
}
rectbool=!rectbool;
CRect rt;
GetClientRect(&rt);
SetWindowPos(0,0,0,rect.Width(),rect.Height()-100;,SWP_NOMOVE);
//这里的100就是你弹出高级设置的窗口的高度
然后再按钮响应函数中:
SetWindowPos(0,0,0,rect.Width(),rect.Height();,SWP_NOMOVE);
GetClientRect(&rt);
SetWindowPos(0,0,0,rt.Width(),rt.Height()-100,SWP_NOMOVE);
//这里的100就是你弹出高级设置的窗口的高度
然后再按钮响应函数中:
SetWindowPos(0,0,0,rt.Width(),rt.Height();,SWP_NOMOVE);
static CRect rectLarge;//保存不改变的对话框的位置
static CRect rectSmall;//保存改变了的对话框的位置
bHighLevel=FALSE;//全局的
//在初始化函数中将对话框初始化为小的,IDC_PART_LINE_BOTTOM是我加的一个静态文本框,用来做分割
if(rectLarge.IsRectNull())
{
CRect rectSeparator;
GetWindowRect(&rectLarge);
GetDlgItem(IDC_PART_LINE_BOTTOM)->GetWindowRect(&rectSeparator);
rectSmall.left = rectLarge.left;
rectSmall.top = rectLarge.top;
rectSmall.right = rectLarge.right;
rectSmall.bottom = rectSeparator.bottom;
}
//在登录函数中添加判断,点击一下为高级大框,再点击一下为显示小的
if(!bHighLevel)
{
SetWindowPos(NULL,0,0,rectLarge.Width(),rectLarge.Height(),
SWP_NOMOVE | SWP_NOZORDER);//设置窗口位置
bHighLevel=TRUE; }
else
{
SetWindowPos(NULL,0,0,rectSmall.Width(),rectSmall.Height(),
SWP_NOMOVE | SWP_NOZORDER);
bHighLevel=FALSE;
}