菜鸟问题请教?
一个基于对话框的程序,标题栏上有最大/还原/最小化,因为我有一段代码必须是用户点击最小化后,然后点击还原触发此代码,不知道应该是在什么消息下写?
也就是说在什么地方添加还原对话框的代码?
问题点数:20、回复次数:13Top
1 楼EddieCai()回复于 2006-07-04 16:37:46 得分 0
lz,你是要写代码来恢复对话框?还是要在对话框恢复时执行一些代码?Top
2 楼kelelipeng(kelelipeng)回复于 2006-07-04 16:41:15 得分 0
我是想执行一些代码Top
3 楼EddieCai()回复于 2006-07-04 16:41:18 得分 0
如果是前者,调用ShowWindow(SW_SHOWNORMAL);
如果是后者,响应WM_SIZE消息,在afx_msg void OnSize(UINT nType,int cx,int cy);方法里根据nType==SIZE_RESTORED来判断对话框被恢复了.
Top
4 楼kelelipeng(kelelipeng)回复于 2006-07-04 16:41:51 得分 0
我是恢复时执行一些代码Top
5 楼kelelipeng(kelelipeng)回复于 2006-07-04 16:57:11 得分 0
是这样的这个基于对话框的程序,有一个状态栏,在显示的时总是被任务栏遮蔽,我想让它和浏览器一样,可以把状态栏显示出来,又因为中
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);
但是没有触发执行.
Top
6 楼kelelipeng(kelelipeng)回复于 2006-07-04 17:01:45 得分 0
是这样的这个基于对话框的程序,有一个状态栏,在显示的时总是被任务栏遮蔽,我想让它和浏览器一样,可以把状态栏显示出来,又因为中
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);
但是没有触发执行.
Top
7 楼EddieCai()回复于 2006-07-04 17:15:05 得分 0
那OnSize应该进来的吧。你看看当时那个nType的值是多少。Top
8 楼kelelipeng(kelelipeng)回复于 2006-07-04 17:49:15 得分 0
SIZE_MINIMIZEDTop
9 楼kelelipeng(kelelipeng)回复于 2006-07-04 17:51:00 得分 0
我的最终目的就是想将状态栏显示出来呀Top
10 楼EddieCai()回复于 2006-07-04 17:51:08 得分 0
SIZE_MINIMIZED是窗口最小化时候,后来窗口不是又被放大了吗?那时的nType是多少?Top
11 楼kelelipeng(kelelipeng)回复于 2006-07-04 17:56:09 得分 0
因为在
//设置窗口最大化OnInitDialog()中有这么一句
ShowWindow(SW_MAXIMIZE);
//这句也就是想将对话框高度调少些,以便任务栏显示出来.
MoveWindow(0,0,rect.Width(),rect.Height()-10);
还原后,是还原成最大化了(因为OnInitDialog()中有这么一句 ShowWindow(SW_MAXIMIZE);),所以返回值是,SIZE_MAXIMIZED
Top
12 楼kelelipeng(kelelipeng)回复于 2006-07-04 17:59:22 得分 0
或者有什么方法可以让程序的对话框不被任务栏遮蔽吗?Top
13 楼EddieCai()回复于 2006-07-05 11:31:05 得分 0
那你就在OnSize里的if(nType==SIZE_MAXIMIZED)后面写那句MoveWindow好了阿~
可是真的挺奇怪,为什么你最大化后的窗口会被任务栏遮住?我这里不会遮住的阿~Top




