菜鸟问题请教? 一个基于对话框的程序,标题栏上有最大/还原/最小化,因为我有一段代码必须是用户点击最小化后,然后点击还原触发此代码,不知道应该是在什么消息下写?也就是说在什么地方添加还原对话框的代码? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果是前者,调用ShowWindow(SW_SHOWNORMAL);如果是后者,响应WM_SIZE消息,在afx_msg void OnSize(UINT nType,int cx,int cy);方法里根据nType==SIZE_RESTORED来判断对话框被恢复了. 是这样的这个基于对话框的程序,有一个状态栏,在显示的时总是被任务栏遮蔽,我想让它和浏览器一样,可以把状态栏显示出来,又因为中CHSMSDlg::OnInitDialog(){... //设置窗口最大化 ShowWindow(SW_MAXIMIZE); //获取窗口大小 GetClientRect(rect); //使状态栏可以显示看到 MoveWindow(0,0,rect.Width(),rect.Height()-10);...}但是一旦点击最小化后,又成最大化了,又看不见状态栏了,我在 OnSize(UINT nType,int cx,int cy);方法中添加了if (nType==SIZE_RESTORED)MoveWindow(0,0,rect.Width(),rect.Height()-10);但是没有触发执行. 是这样的这个基于对话框的程序,有一个状态栏,在显示的时总是被任务栏遮蔽,我想让它和浏览器一样,可以把状态栏显示出来,又因为中CHSMSDlg::OnInitDialog(){... //设置窗口最大化 ShowWindow(SW_MAXIMIZE); //获取窗口大小 GetClientRect(rect); //使状态栏可以显示看到 MoveWindow(0,0,rect.Width(),rect.Height()-10);...}但是一旦点击最小化后,又成最大化了,又看不见状态栏了,我在 OnSize(UINT nType,int cx,int cy);方法中添加了if (nType==SIZE_RESTORED)MoveWindow(0,0,rect.Width(),rect.Height()-10);但是没有触发执行. 那OnSize应该进来的吧。你看看当时那个nType的值是多少。 SIZE_MINIMIZED是窗口最小化时候,后来窗口不是又被放大了吗?那时的nType是多少? 因为在//设置窗口最大化OnInitDialog()中有这么一句ShowWindow(SW_MAXIMIZE);//这句也就是想将对话框高度调少些,以便任务栏显示出来.MoveWindow(0,0,rect.Width(),rect.Height()-10);还原后,是还原成最大化了(因为OnInitDialog()中有这么一句 ShowWindow(SW_MAXIMIZE);),所以返回值是,SIZE_MAXIMIZED 那你就在OnSize里的if(nType==SIZE_MAXIMIZED)后面写那句MoveWindow好了阿~可是真的挺奇怪,为什么你最大化后的窗口会被任务栏遮住?我这里不会遮住的阿~ 用MFC AppWizard[exe]建立的程序没有CChildView类 CTimeSpan 的疑问 Comobox:为什么隐藏时用UpdateData(false) 无法奏效 怎么调用excel 保存成html???? 对话类的对象声明问题! (高分技术讨论)请看一段源码关于动态创建控件的问题? 初级问题!先答定给分! 什么样的类才需要注册? 谁懂com? 如何在IE工具栏里添加一个具有弹出式菜单的按钮? 使用ADO,删除当前记录 关于GDI+中变量声明的问题
如果是后者,响应WM_SIZE消息,在afx_msg void OnSize(UINT nType,int cx,int cy);方法里根据nType==SIZE_RESTORED来判断对话框被恢复了.
CHSMSDlg::OnInitDialog()
{
...
//设置窗口最大化
ShowWindow(SW_MAXIMIZE);
//获取窗口大小
GetClientRect(rect);
//使状态栏可以显示看到
MoveWindow(0,0,rect.Width(),rect.Height()-10);
...
}但是一旦点击最小化后,又成最大化了,又看不见状态栏了,
我在 OnSize(UINT nType,int cx,int cy);方法中添加了if (nType==SIZE_RESTORED)MoveWindow(0,0,rect.Width(),rect.Height()-10);
但是没有触发执行.
CHSMSDlg::OnInitDialog()
{
...
//设置窗口最大化
ShowWindow(SW_MAXIMIZE);
//获取窗口大小
GetClientRect(rect);
//使状态栏可以显示看到
MoveWindow(0,0,rect.Width(),rect.Height()-10);
...
}但是一旦点击最小化后,又成最大化了,又看不见状态栏了,
我在 OnSize(UINT nType,int cx,int cy);方法中添加了if (nType==SIZE_RESTORED)MoveWindow(0,0,rect.Width(),rect.Height()-10);
但是没有触发执行.
//设置窗口最大化OnInitDialog()中有这么一句
ShowWindow(SW_MAXIMIZE);//这句也就是想将对话框高度调少些,以便任务栏显示出来.
MoveWindow(0,0,rect.Width(),rect.Height()-10);还原后,是还原成最大化了(因为OnInitDialog()中有这么一句 ShowWindow(SW_MAXIMIZE);),所以返回值是,SIZE_MAXIMIZED