• 模态MFC框架窗口


    介绍 有时,它可能是有用的和文档/视图结构,模态窗口工具栏/状态栏支持(即基本功能实现MFC框架窗口)。如何让这些没有实现所有这些功能在CDialog-derived类?这里给出的CModalFrame实用程序类可以帮助您实现一个模态对话框的行为对任何CFrameWnd-derived窗口类的一个简单的方法。 如果你要使用它,有一点时间,请添加一个评论这一页的底部,告诉,您决定使用这段代码的上下文。我会很感兴趣。 背景 一些基本的事实: 所有必需的功能已经实现CFrameWnd-derived类。 模态的基本支持消息循环已经CWnd类中实现。 简短描述:实现 该实用程序代码只使用CFrameWnd类接口和不做任何建议任何CFrameWnd-derived类的内部实现细节。 CModalFrame:创建内部CModalDialogLock类的一个实例,运行: 商店模态循环的背景下, 运行模态消息循环, 支持多个模态运行框架。 CModalDialogLock子类创建的框架窗口提供: 更新命令帧的UI WM_KICKIDLE消息, 退出模态WM_NCDESTROY消息和消息循环, 恢复标准模态窗口行为ncactivate消息的信息。 你不应该使用WS_CHILD窗口风格的框架。因为它的父窗口在模态循环是禁用的。所以孩子框架窗口也将被禁用(例如,MDI子帧)! 使用的代码 所需文件: ModalFrame.h ModalFrame.cpp 用法:样本隐藏,复制Code

    void CMyView::OnRunModalFrame()
    {
        CCreateContext context;
        context.m_pNewViewClass = RUNTIME_CLASS(CMyOtherView);
        context.m_pCurrentDoc = GetDocument();
        context.m_pNewDocTemplate = GetDocument()->GetTemplate();
        context.m_pLastView = this;
        context.m_pCurrentFrame = GetParentFrame();
    
        CRuntimeClass * pFrameClass = RUNTIME_CLASS(CMyModalFrame);
    
        if (!CModalFrame::Run(*pFrameClass, false, IDR_MYFRAMERESOURCE,
                              WS_OVERLAPPEDWINDOW | 
                              FWS_ADDTOTITLE, this, &context))
        {
            AfxMessageBox(AFX_IDP_COMMAND_FAILURE);
        }
    }
    
    // don't forget close modal frame like a modal dialog box!
    void CMyModalFrame::OnClose()
    {
        int nModalResult = -1;
        CModalFrame::End(this, nModalResult);
    }

    看到演示项目代码的更多细节。 历史 版本1.2 修复Bug。 更准确的处理一堆模态帧。 版本1.1 实现支持多种运行模式框架。 更准确的恢复活动窗口后的模态消息循环。 版本1.0 最初的版本。 本文转载于:http://www.diyabc.com/frontweb/news5438.html

  • 相关阅读:
    【转】用.NET 2.0压缩/解压封装的类
    复制到剪贴板的js代码(兼容ie、firefox、chorme、safari...什么都兼容!)
    感觉文章和回复都不错,转载了用正则表达式找出不包含连续字符串abc的单词
    订阅到抓虾、google reader、鲜果等的代码
    [转]妙说23种设计模式
    实现Server.UrlEncode和Server.UrlDecode功能的js代码
    【转】用JS操作XML
    添加到某某书签、某某收藏的代码
    [总结]关于在线用户列表的统计![转载]
    多张图片交替变换的实现方法JS实现和flash实现
  • 原文地址:https://www.cnblogs.com/Dincat/p/13462980.html
Copyright © 2020-2023  润新知