wxWidgets的多文档界面(MDI)

本文介绍了使用wxWidgets库创建MDI(多文档界面)应用程序的方法,包括标准MDI和Tab风格的MDI。在MDI中,wxMDIParentFrame和wxMDIChildFrame是核心类,分别代表父窗口和子窗口。Tab风格的MDI利用AUI框架,通过wxAuiMDIParentFrame和wxAuiMDIChildFrame实现,子窗口以标签形式切换。文章还提到了在关闭程序时如何处理子窗口的存在以避免异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MDI

MDI是多文档界面的简称。在这种界面下,所有子窗口都在父窗口之内,子窗口之间相互独立,可以在父窗口内活动和排列,也可以放大后占据父窗口的所有空间(遮盖其他子窗口)。

MDI界面中,主要的两个类是wxMDIParentFrame和wxMDIChildFrame。wxMDIParentFrame代表MDI父窗口,wxMDIChildFrame代表MDI子窗口。一般MDI程序需要一个继承自wxMDIParentFrame的对象作为主窗口,主窗口可以包含多个继承自wxMDIChildFrame的子窗口。

一个MDI窗口程序例子如下。该程序可以通过单机工具栏按钮创建子窗口,运行效果如下:
这里写图片描述
(1)主窗口类代码如下:

/// MainFrame.h

#pragma once

#include "wxInc.h"

class MainFrame : public wxMDIParentFrame
{
    DECLARE_EVENT_TABLE();

public:
    MainFrame(void);
    ~MainFrame(void);

public:
    void CreateBars();
    void CreateChild(wxCommandEvent & evt);
};
/// MainFrame.cpp

#include "MainFrame.h"

enum {
    ID_ITEM_1 = wxID_HIGHEST + 1,
    ID_ITEM_2,
    ID_ITEM_3,
    ID_ITEM_4,
};


BEGIN_EVENT_TABLE(MainFrame, wxMDIParentFrame)
    EVT_TOOL(ID_ITEM_3, CreateChild)
END_EVENT_TABLE()

MainFrame::MainFrame() : wxMDIParentFrame(NULL, wxID_ANY, wxT("main window"))
{
    /// 创建菜单栏、工具栏和状态栏.
    CreateBars();
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值