怎么不允许关闭MDI的子窗口

时间:2021-08-09 03:12:42
我的MDI子窗口,因为我要最大化,最小化的按钮,但是我又不要关闭按钮和最左边的那个小图标的菜单。。。所以不能把MENU关了。。。
所以我想到了WM_CLOSE。。但是我发现我在CCHILDFRAME里拦截不成功。。是不是非要到MAINFRAME里才能拦截?

或者有什么其他办法。。

我就想不要关闭按钮,不要小图标的那个菜单。。也就是,我不想这个VIEW被关闭。。。允许最小最大化。。

6 个解决方案

#1


OnClose处理一下。

#2


我是IF(MESSAGE == WM_CLOSE)就返回的。。。这样不行吗?
用 OnClose()放在子框架里还是主框架里?

我放在子框架里没用。。。还是照样关了。。

#3



// WS_SYSCOMMAND消息
void CChildFrame::OnSysCommand(UINT nID, LPARAM lParam) 
{
// TODO: Add your message handler code here and/or call default
if(SC_CLOSE == nID)
{
return ;
}
CMDIChildWnd::OnSysCommand(nID, lParam);
}

#4


引用 3 楼 visualeleven 的回复:
C/C++ code

// WS_SYSCOMMAND消息
void CChildFrame::OnSysCommand(UINT nID, LPARAM lParam) 
{
    // TODO: Add your message handler code here and/or call default
    if(SC_CLOSE == nID)
    {
    ……


+

#5


你这个要求不如自绘一下了

#6


想要不要关闭按钮? 答: 自己定义窗口类  然后自己CreateWindow()(坐等其他方法)

#1


OnClose处理一下。

#2


我是IF(MESSAGE == WM_CLOSE)就返回的。。。这样不行吗?
用 OnClose()放在子框架里还是主框架里?

我放在子框架里没用。。。还是照样关了。。

#3



// WS_SYSCOMMAND消息
void CChildFrame::OnSysCommand(UINT nID, LPARAM lParam) 
{
// TODO: Add your message handler code here and/or call default
if(SC_CLOSE == nID)
{
return ;
}
CMDIChildWnd::OnSysCommand(nID, lParam);
}

#4


引用 3 楼 visualeleven 的回复:
C/C++ code

// WS_SYSCOMMAND消息
void CChildFrame::OnSysCommand(UINT nID, LPARAM lParam) 
{
    // TODO: Add your message handler code here and/or call default
    if(SC_CLOSE == nID)
    {
    ……


+

#5


你这个要求不如自绘一下了

#6


想要不要关闭按钮? 答: 自己定义窗口类  然后自己CreateWindow()(坐等其他方法)