重新启动程序后,CDockablePane不会调整大小

jliv902

我启动了Single Document MFC项目,并创建了两个CDockablePane
我遇到的问题是,如果我移动窗格或调整窗格的大小并退出程序,则在重新启动程序时它们的布局不会重置。它们的布局保持修改。

我猜我是做错了什么,还是我找不到Visual Studio生成的一些代码。

我的CMainFrame::OnCreate功能:

// Headers...

#define IDC_MYPANE_1 100
#define IDC_MYPANE_2 101

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    // A lot of pre-generated code...

    if (this->InitMyPane1 () == FALSE) {
        return -1 ;
    }

    if (this->InitMyPane2 () == FALSE) {
        return -1 ;
    }

    return 0;   
}

我的面板初始化功能:

BOOL CMainFrame::InitMyPane1 ()
{
    DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_ALIGN_LEFT | CBRS_FLOAT_MULTI ;

    BOOL bOk = m_MyPane1.Create (
        _T ("MyPane 1"), this, 
        CRect (0, 0, 100, 300), TRUE, IDC_MYPANE_1, dwStyle
    ) ;

    if (bOk == FALSE) {
        return FALSE ;
    }

    m_MyPane1.EnableDocking (CBRS_ALIGN_ANY) ;
    this->DockPane ((CBasePane *) &m_MyPane1, AFX_IDW_DOCKBAR_LEFT) ;
    this->RecalcLayout () ;

    return bOk ;
}

BOOL CMainFrame::InitMyPane2 ()
{
    DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_ALIGN_LEFT | CBRS_FLOAT_MULTI ;

    BOOL bOk = m_MyPane2.Create (
        _T ("MyPane 2"), this, 
        CRect (0, 0, 200, 300), TRUE, IDC_MYPANE_2, dwStyle
    ) ;

    if (bOk == FALSE) {
        return FALSE ;
    }

    m_MyPane2.EnableDocking (CBRS_ALIGN_ANY) ;
    m_MyPane2.DockToWindow (&m_MyPane1, CBRS_ALIGN_RIGHT) ;

    this->RecalcLayout () ;

    return bOk ;
}

OnCreate和的OnSize功能MyPane1

int MyPane1::OnCreate (LPCREATESTRUCT lp)
{
    if (CDockablePane::OnCreate (lp) == -1) {
        return -1 ;
    }

    // Creates a CListCtrl for this pane (I have a member CListCtrl.)
    return this->CreateCListCtrl () ;
}

void MyPane1::OnSize (UINT nType, int cx, int cy)
{
    CDockablePane::OnSize (nType, cx, cy) ;

    CRect rect ;
    this->GetClientRect (&rect) ;

    m_MyList.SetWindowPos 
        (NULL, rect.left, rect.top, rect.Width (), rect.Height (), SWP_NOACTIVATE) ;

    m_MyList.SetColumnWidth (0, LVSCW_AUTOSIZE) ;
    m_MyList.SetColumnWidth (1, LVSCW_AUTOSIZE_USEHEADER) ;
}

OnCreate和的OnSize功能MyPane2

int MyPane2::OnCreate (LPCREATESTRUCT lp)
{
    if (CDockablePane::OnCreate (lp) == -1) {
        return -1 ;
    }

    // Creates a CListCtrl for this pane (I have a member CListCtrl.)
    return this->CreateCListCtrl () ;   
}

void MyPane2::OnSize (UINT nType, int cx, int cy)
{
    CDockablePane::OnSize (nType, cx, cy) ;

    CRect rect ;
    this->GetClientRect (&rect) ;

    m_MyList.SetWindowPos 
        (NULL, rect.left, rect.top, rect.Width (), rect.Height (), SWP_NOACTIVATE) ;

    m_MyList.SetColumnWidth (0, LVSCW_AUTOSIZE_USEHEADER) ;
    m_MyList.SetColumnWidth (1, LVSCW_AUTOSIZE_USEHEADER) ;
    m_MyList.SetColumnWidth (2, LVSCW_AUTOSIZE_USEHEADER) ;
    m_MyList.SetColumnWidth (3, LVSCW_AUTOSIZE_USEHEADER) ;
    m_MyList.SetColumnWidth (4, LVSCW_AUTOSIZE_USEHEADER) ;
    m_MyList.SetColumnWidth (5, LVSCW_AUTOSIZE_USEHEADER) ;
    m_MyList.SetColumnWidth (6, LVSCW_AUTOSIZE_USEHEADER) ;
    m_MyList.SetColumnWidth (7, LVSCW_AUTOSIZE_USEHEADER) ;
}
降低者

我认为对接窗格默认会记住其状态。这里这里

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

输入后不会调整大小

来自分类Dev

输入后的大小不会调整

来自分类Dev

Nativescript IOS:清除输入后,Textview不会调整大小

来自分类Dev

尝试调整分区大小时重新启动

来自分类Dev

重新启动应用程序后,AlarmManager不会停止

来自分类Dev

通过Capistrano 3.x部署后,Rails应用程序不会自动重新启动

来自分类Dev

Windows重新启动后,自动服务不会自动启动

来自分类Dev

服务器重新启动后,PM2不会启动我的nodejs应用程序

来自分类Dev

如果使用硬件按钮重新启动设备,则不会调用BOOT_COMPLETED

来自分类Dev

碰撞后libGDX圈子将不会重新启动

来自分类Dev

更新后,Kubuntu 14.04将不会重新启动

来自分类Dev

GitLab Runner 在重新启动后不会自动获取作业

来自分类Dev

重新启动后永久增加Java堆大小吗?

来自分类Dev

退出程序后可以重新启动程序吗?

来自分类Dev

关闭程序后如何自动重新启动程序

来自分类Dev

重新启动石英调度程序而不会出现错误

来自分类Dev

NSTableCellView中的NSCollectionView不会调整大小

来自分类Dev

GParted不会调整扩展分区的大小

来自分类Dev

ImageButton不会调整图像大小

来自分类Dev

GParted不会调整扩展分区的大小

来自分类Dev

UIImageView不会调整图像大小

来自分类Dev

gparted不会调整大小/移动

来自分类Dev

CLLocationManager startMonitoringForRegion:设备重新启动后不重新启动应用程序

来自分类Dev

我如何知道docker守护程序重新启动后哪个docker将重新启动

来自分类Dev

nginx不会重新启动

来自分类Dev

崩溃后如何重新启动Qt应用程序?

来自分类Dev

重新启动应用程序后导航栏缩小

来自分类Dev

重新启动应用程序后保存布尔状态

来自分类Dev

在错误强制停止后如何使程序重新启动?

Related 相关文章

  1. 1

    输入后不会调整大小

  2. 2

    输入后的大小不会调整

  3. 3

    Nativescript IOS:清除输入后,Textview不会调整大小

  4. 4

    尝试调整分区大小时重新启动

  5. 5

    重新启动应用程序后,AlarmManager不会停止

  6. 6

    通过Capistrano 3.x部署后,Rails应用程序不会自动重新启动

  7. 7

    Windows重新启动后,自动服务不会自动启动

  8. 8

    服务器重新启动后,PM2不会启动我的nodejs应用程序

  9. 9

    如果使用硬件按钮重新启动设备,则不会调用BOOT_COMPLETED

  10. 10

    碰撞后libGDX圈子将不会重新启动

  11. 11

    更新后,Kubuntu 14.04将不会重新启动

  12. 12

    GitLab Runner 在重新启动后不会自动获取作业

  13. 13

    重新启动后永久增加Java堆大小吗?

  14. 14

    退出程序后可以重新启动程序吗?

  15. 15

    关闭程序后如何自动重新启动程序

  16. 16

    重新启动石英调度程序而不会出现错误

  17. 17

    NSTableCellView中的NSCollectionView不会调整大小

  18. 18

    GParted不会调整扩展分区的大小

  19. 19

    ImageButton不会调整图像大小

  20. 20

    GParted不会调整扩展分区的大小

  21. 21

    UIImageView不会调整图像大小

  22. 22

    gparted不会调整大小/移动

  23. 23

    CLLocationManager startMonitoringForRegion:设备重新启动后不重新启动应用程序

  24. 24

    我如何知道docker守护程序重新启动后哪个docker将重新启动

  25. 25

    nginx不会重新启动

  26. 26

    崩溃后如何重新启动Qt应用程序?

  27. 27

    重新启动应用程序后导航栏缩小

  28. 28

    重新启动应用程序后保存布尔状态

  29. 29

    在错误强制停止后如何使程序重新启动?

热门标签

归档