由于比较急用,问了说清楚问题,再次开贴,见谅啊。。CDockablePane上放一个对话框,对话框风格设为child,已经去了边框,我要的功能是:点击右上角那个X ,立即隐藏DockablePane对话框当然也跟着隐藏之。
我写了个类,派生于CDockablePane, CDockablePane上方一个对话框,要求: 关闭右上角那个X的时候,将CDockablePane隐藏之(对话框也要隐藏),  于是我就在CDockablePane的OnClose里面处理代码:
void CMyDockablePane::OnClose()
{
// TODO: 在此添加消息处理程序代码和/或调用默认值//CDockablePane::OnClose();AfxMessageBox(_T("隐藏面板"));ShowWindow(SW_HIDE); //隐藏}当我点击的时候,发现毫无反应。!!!!!! 
我查了一下, 有前辈的老帖子提到过,  CDockablePane右上角那个X不是 对应着 OnClose,,所以重载这个函数,毫无意义。。有前辈说重载CloseMiniFrame 这个函数, 我不知道具体如何重载, 用过的,帮忙解答一下

解决方案 »

  1.   

    在msdn找到了,要关闭面板,可以重载这个函数:  
    BOOL CMainFrame::OnCloseMiniFrame(CPaneFrameWnd* pWnd)
    {
    // TODO: 在此添加专用代码和/或调用基类
    AfxMessageBox(_T("面板被关了"));
    return CMDIFrameWndEx::OnCloseMiniFrame(pWnd);
    }
    居然不是重载CDockablePane类的函数,而是面板的父窗口:CMainFrame!!!!!!!!!111
    我现在的疑问就是:  我想重载这个函数,实现 面板隐藏,该如何做呢?   大侠救命啊 
      

  2.   

    BOOL CMainFrame::OnCloseMiniFrame(CPaneFrameWnd* pWnd)
    {
    // TODO: 在此添加专用代码和/或调用基类
    pWnd->ShowWindow(SW_HIDE);
    return CMDIFrameWndEx::OnCloseMiniFrame(pWnd);
    }问题已经解决,