MFC MDI相关日记

1、右键点击子窗口菜单灰色;
theApp.GetContextMenuManager()->ShowPopupMenu(IDR_POPUP_EDIT, point.x, point.y, this, FALSE);

将最后一个参数改为false 消息使用标准MFC路由

2、设置子窗口是否是选项卡方式
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

    CMDITabInfo mdiTabParams;
    mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D_ONENOTE; // 其他可用样式...
    mdiTabParams.m_bActiveTabCloseButton = TRUE;      // 设置为 FALSE 会将关闭按钮放置在选项卡区域的右侧
    mdiTabParams.m_bTabIcons = FALSE;    // 设置为 TRUE 将在 MDI 选项卡上启用文档图标
    mdiTabParams.m_bAutoColor = TRUE;    // 设置为 FALSE 将禁用 MDI 选项卡的自动着色
    mdiTabParams.m_bDocumentMenu = TRUE; // 在选项卡区域的右边缘启用文档菜单
    EnableMDITabbedGroups(TRUE, mdiTabParams);




3、不打开默认文档

BOOL ***ShowApp::InitInstance()

{

……………………

    CCommandLineInfo cmdInfo;
    ParseCommandLine(cmdInfo);

    if (cmdInfo.m_nShellCommand == CCommandLineInfo::FileNew)  //替换命令 取消默认窗口生成

        cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;


……………………

}


4、添加不同类型的子窗口

    1)创建新的View类如:

class COperationView : public CView
{
    DECLARE_DYNCREATE(COperationView)

protected:
    COperationView();           // 动态创建所使用的受保护的构造函数
    virtual ~COperationView();

public:
    virtual void OnDraw(CDC* pDC);      // 重写以绘制该视图
#ifdef _DEBUG
    virtual void AssertValid() const;
#ifndef _WIN32_WCE
    virtual void Dump(CDumpContext& dc) const;
#endif
#endif

protected:
    DECLARE_MESSAGE_MAP()
};

2)添加新的模板并记录

BOOL ***ShowApp::InitInstance()

{

……………………

  

CMultiDocTemplate* pDocTemplate;
    pDocTemplate = new CMultiDocTemplate(IDR_DicomShowTYPE,
        RUNTIME_CLASS(CDicomShowDoc),
        RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子框架
        RUNTIME_CLASS(CDicomShowView));
    if (!pDocTemplate)
        return FALSE;
    AddDocTemplate(pDocTemplate);
    m_pMultiDocTempPacs = pDocTemplate;
    
    pDocTemplate = new CMultiDocTemplate(IDR_DicomShowTYPE,
        RUNTIME_CLASS(CDicomShowDoc),
        RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子框架
        RUNTIME_CLASS(COperationView));
    if (!pDocTemplate)
        return FALSE;
    AddDocTemplate(pDocTemplate);
    m_pMultiDocTempShowDicom = pDocTemplate;


……………………

}

3)、重载OnFileNew

BEGIN_MESSAGE_MAP(CDicomShowApp, CWinAppEx)
    ON_COMMAND(ID_APP_ABOUT, &CDicomShowApp::OnAppAbout)
    // 基于文件的标准文档命令
    ON_COMMAND(ID_FILE_NEW, &CDicomShowApp::OnFileNew)
    ON_COMMAND(ID_FILE_OPEN, &CWinAppEx::OnFileOpen)
    // 标准打印设置命令
    ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinAppEx::OnFilePrintSetup)

END_MESSAGE_MAP()

5)添加新的ChildFrm后出现“创建空文档失败的情况”

头文件中

DECLARE_DYNAMIC(ChildFrmDCM)

    替换

DECLARE_DYNCREATE(ChildFrmDCM)

源文件中

IMPLEMENT_DYNAMIC(ChildFrmDCM, CMDIChildWndEx)

替换为

IMPLEMENT_DYNCREATE(ChildFrmDCM, CMDIChildWndEx)


4)打开空文档

void CDicomShowApp::OnFileNew()
{
    //打开指定模板
    m_pMultiDocTempPacs->OpenDocumentFile(NULL);

    int n = 10;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值