MFC showwindow 返回值有关问题

MFC showwindow 返回值问题
	CRect rectClient;
CRect rectTrackDlg;
GetClientRect(&rectClient);
ClientToScreen(rectClient);//转换为屏幕坐标
dlg.GetWindowRect(rectTrackDlg);//对话框宽高度
    dlg.SetWindowPos(NULL,rectClient.right-rectTrackDlg.right,rectClient.bottom-rectTrackDlg.bottom,0,0,SWP_NOSIZE );//将对话框防止在屏幕左下角

if (Flag)
{
Flag=dlg.ShowWindow(SW_HIDE);
}
else
Flag=dlg.ShowWindow(SW_SHOW);


如上所示代码是使对话框显示或消失的响应函数,但是,响应结果不正确,对话框连续出现了两次,连续消失两次,showwindow的返回值严重不对,在0和24之间切换。这是为什么呀?我在前面OnCreate函数中已经建立了非模态对话框,只是处于隐藏状态。
------最佳解决方案--------------------
返回的是BOOL值  你管他是24还是1  只有0和非0的区别  窗口当前可见,则返回值为非0。当前被隐藏,返回值为0
------其他解决方案--------------------
你上面贴的代码你是放在哪里调用的?
------其他解决方案--------------------
引用:
返回的是BOOL值  你管他是24还是1  只有0和非0的区别  窗口当前可见,则返回值为非0。当前被隐藏,返回值为0
但是响应结果不对呀,不是出现、消失,而是出现、出现、消失、消失、出现、出现、消失、消失这样循环,出现的位置还会变,在左下角和右上角。不明白这是为什么?
------其他解决方案--------------------
我调试的时候发现,这一句
dlg.GetWindowRect(rectTrackDlg);
获取的对话框宽度和高度会变,晕,这就是为什么对话框显示的时候位置会动的原因。但是为什么会变呀????
指点一下吧。
------其他解决方案--------------------
引用:
引用:
返回的是BOOL值  你管他是24还是1  只有0和非0的区别  窗口当前可见,则返回值为非0。当前被隐藏,返回值为0但是响应结果不对呀,不是出现、消失,而是出现、出现、消失、消失、出现、出现、消失、消失这样循环,出现的位置还会变,在左下角和右上角。不明白这是为什么?


你是调试还是什么情况发现  出现、出现、消失、消失、出现、出现、消失、消失这样循环?  看出来的?
------其他解决方案--------------------
上边一个问题知道为什么了。晕,不是宽高度变化,而是对话框位置变了。下边这一句写的不对
dlg.SetWindowPos(NULL,rectClient.right-rectTrackDlg.right,rectClient.bottom-rectTrackDlg.bottom,0,0)
应该减去对话框宽度和高度,而不是减去坐标。晕。
------其他解决方案--------------------
靠,明白了,showwindow的返回值是这样定义的:如果窗口以前可见,则返回值为非零。如果窗口以前被隐藏,则返回值为零。我刚开始理解为当前窗口了。晕。