100分求教(急!在线等待!):怎么关闭父窗口的所有子窗口,举个例子父窗口是view 视图,在视图中我创建了多个非模式对话框,做为子窗口但是我在视图的析够函数中,我想关闭所有的对话框,怎么做?望高手不吝赐教!,谢谢!
解决方案 »
- 新手求教,glGetDoublev(GL_MODELVIEW_MATRIX, modelview);的用法,谢谢!
- ComboBox DrawItem问题
- 急求:请问如何将"计算机管理"中的内容用程序读取出来?
- 难呀,两个星期了,还没解决的问题
- [大虾请进] ATL中的窗口中的Active控件的事件处理
- 请教模拟退火——遗传算法
- MFC使用Teenchart绘制曲线,如何根据横坐标的值获取对应的纵坐标的值?
- 俄罗斯方块遇到的小问题
- MFC中,单击BUTTON 将多个编辑框的内容另存为自己设定的TXT中!
- 学习windows C编程时,对话框显示不出来
- Listctrl控件边框绘制问题
- 在不能用TRACE的地方用什么来代替他
HWND hwndChild = ::GetWindow(hwndParent, GW_CHILD);
while (hwndChild)
{
::GetClassName(hwndChild, szClass, 255);
if (_tcscmp(szClass, _T("#32770")) == 0)
{
::PostMessage(hwndChild, WM_CLOSE, 0, 0);
}
hwndChild = ::GetNextWindow(hwndChild, GW_HWNDNEXT);
}
{
if (hwnd != (HWND)lParam)
SendMessage(hwnd, WM_CLOSE, 0, 0);
return TRUE;
}
EnumThreadWindows(GetCurrentThreadId(), EnumThreadWndProc, (LPARAM)m_hWnd);
BOOL CALLBACK EnumThreadWndProc(HWND hwnd, LPARAM lParam)
{
if (GetParent(hwnd) == (HWND)lParam)
SendMessage(hwnd, WM_CLOSE, 0, 0);
return TRUE;
}
BOOL CALLBACK EnumThreadWndProc(HWND hwnd, LPARAM lParam)
{
if (GetWindowLong(hwnd, GWL_HWNDPARENT) == (long)lParam)
SendMessage(hwnd, WM_CLOSE, 0, 0);
return TRUE;
}
while (hwndChild)
{
::PostMessage(hwndChild, WM_DESTROY, 0, 0);
hwndChild = ::GetNextWindow(hwndChild, GW_HWNDNEXT);
}
{
if (GetWindowLong(hwnd, GWL_HWNDPARENT) == (long)lParam)
SendMessage(hwnd, WM_CLOSE, 0, 0);
return TRUE;
}这种方法我试了下,但是整个窗口都关闭了,我要的效果是,主框架mainfram下的两个视图cview1和cview2窗口不销毁,在两个视图切换的时候
只销毁,视图cview2中所有的非模式对话矿,
上面的方法,把整个窗口都关闭了,而7楼的方法,我也试了下,结果遍历对话矿的时候找不到对话矿的指针,郁闷,求救啊效果出来了 马上送分,还要麻烦大家了!~
目前的问题可能是你创建子窗口时指定的父窗口不是cview2;也可能是你给的cview2的句柄不对。如果自己找不出问题可以把相关代码贴出来,或者整个打包上传。
创建的时候动态创建个数,删除的时候动态删除就可以了
虽然是自己找的方法,但是还的感谢大家的帮助,尤其是cnzdgs 满天星,这位大虾帮了我很多,也给了不少建议
感谢大家散分喽!~~~~~~~~~~~