AnimateWindow不能用于对话框的退出

来源:百度知道 编辑:UC知道 时间:2024/06/26 02:50:32
咋办 ,创建对话框时可以用,退出时就不可以,在WM_CLOSE里的
1楼说的两种情况我都用过,都不可以,没有动态效果,直接就隐藏了
无论你退出窗口与否,总是直接隐藏
AnimateWindow(GetSafeWindow(),1000,AW_CENTER|AW_HIDE);

让程序响应WM_CLOSE消息,受到这个消息后就执行AnimateWindow(GetSafeWindow(),1000,AW_CENTER|AW_HIDE);
你代码没写错,我有例子:
void CCLEANDlg::OnClose()
{
if(6==::MessageBox (m_hWnd,"是否要退出?","RetVal",4+32+256))
{
AnimateWindow(m_hWnd,500,AW_CENTER | AW_HIDE);
CDialog::OnClose();
}
return ;
}
看不懂的话Q我
我的群:57408075

你不应该把AnimateWindow函数放到OnClose里,因为如果你点击关闭按钮,对话框将能执行动态效果,如果你点击Cancel按钮,程序将跳过OnClose函数直接退出程序。

所以你应将该函数放在OnCancel处理函数或者是DestroyWindow() 函数中

void CTestExeDlg::OnCancel()
{
// TODO: Add extra cleanup here
AnimateWindow(GetSafeHwnd(),1000,AW_HIDE|AW_CENTER);
CDialog::OnCancel();
}
我这样就可以,有退出的动画效果

winuser.h文件中的两处这你改了没?
#if(WINVER >= 0x0400)

跟踪一下看看AnimateWindow(GetSafeWindow(),1000,AW_CENTER|AW_HIDE);这一行执行了?

注意研究一下次序,必须保证AnimateWindow调用在对话框的资源被销毁前。

如果窗口(资源而不是c++类)已经被销毁仍要隐藏窗口就没效果了。