BCGPFormView嵌入左侧显示属性页,并且同窗口等比例缩放,属性页添加图表随窗口尺寸变化而变化
2016-11-11 16:36
477 查看
1、在BCGPFormView中放入一个属性页,并且标签放在左边。具体做法如下:
首先,从新建一个单文档应用程序BCGPropShowChartView,view类派生于CBCGPFormView,然后添加两个PropPage对话框资源,并且对对话框资源添加类,CPropOne,和CPropTwo,在头文件和CPP文件中修改基类为CBCGPPropertyPage,这样属性页就暂时放在一边。
在BCGPropShowChartView的头文件中添加如下:
private:
CBCGPPropertySheet m_Sheet;
CPropOne m_PropOne;
CPropTwo m_PropTwo;
在CBCGPropShowChartView::OnInitialUpdate()中添加如下代码
CBCGPFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
m_Sheet.SetLook(CBCGPPropertySheet::PropSheetLook_List);
m_Sheet.AddPage(&m_PropOne);
m_Sheet.AddPage(&m_PropTwo);
//m_Sheet.EnableVisualManagerStyle();
m_Sheet.Create(this, WS_CHILD|WS_VISIBLE|WS_TABSTOP,0);
CRect rect;
GetClientRect(&rect);
m_Sheet.MoveWindow(rect);运行程序如下所示:
![](http://img.blog.csdn.net/20161111164939588?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
程序运行出现问题,右边会被遮挡住,经过仔细的发现在movewindow下面加上这句代码就可以了:
m_Sheet.SetActivePage(m_Sheet.GetPage(0));现在要做的就是让屏幕尺寸缩放的时候page页跟着缩放,响应onsize函数,在size函数里添加如下代码:
CRect rect;
GetClientRect(&rect);
if(m_Sheet.GetSafeHwnd()!=NULL){
m_Sheet.MoveWindow(rect);
m_Sheet.SetActivePage(m_Sheet.GetActivePage());
}
![](http://img.blog.csdn.net/20161111165911022?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
窗口可以随意拖动,并且属性页随着窗口大小缩放而缩放。
2、在属性页one上添加图表,并且可以等比例缩放
首先在page的资源对话框中添加一个静态控件ID为IDC_PROP_SHOW,为该控件添加变量,m_PropShow,在属性页ONE的头文件中修改变量类型为如下:
CBCGPChartCtrl m_PropShow;同时为属性页添加OnInitDialog函数,在OnInitDialog函数中添加如下代码:
CBCGPPropertyPage::OnInitDialog();
CWnd *pWnd = GetDlgItem(IDC_PROP_SHOW);
pWnd->SetWindowPos(this,0,0,100,100,SWP_NOZORDER | SWP_NOACTIVATE);
CBCGPChartVisualObject* pChart = m_PropShow.GetChart();
ASSERT_VALID(pChart);
BCGPChartType type = BCGP_CT_STACKED;
pChart->SetChartType(BCGPChartLine, type);
pChart->SetChartTitle(_T("Furniture Sales"));
CBCGPChartSeries* pSeries1 = pChart->CreateSeries(_T("Tables"));
CBCGPChartSeries* pSeries2 = pChart->CreateSeries(_T("Chairs"));
CBCGPChartSeries* pSeries3 = pChart->CreateSeries(_T("Cabinets"));
pSeries1->AddDataPoint(_T("2011"), 5.);
pSeries1->AddDataPoint(_T("2012"), 8);
pSeries1->AddDataPoint(_T("2013"), 12.);
pSeries1->AddDataPoint(_T("2014"), 13.);
pSeries1->AddDataPoint(_T("2015"), 15.);
pSeries2->AddDataPoint(9.);
pSeries2->AddDataPoint(15.);
pSeries2->AddDataPoint(19.);
pSeries2->AddDataPoint(21.);
pSeries2->AddDataPoint(23.);
pSeries3->AddDataPoint(2.);
pSeries3->AddDataPoint(3.);
pSeries3->AddDataPoint(16.);
pSeries3->AddDataPoint(19.);
pSeries3->AddDataPoint(19.);
CBCGPChartAxis* pYAxis = pChart->GetChartAxis(BCGP_CHART_Y_PRIMARY_AXIS);
ASSERT_VALID(pYAxis);
pYAxis->m_majorTickMarkType = CBCGPChartAxis::TMT_CROSS;
pYAxis->m_minorTickMarkType = CBCGPChartAxis::TMT_CROSS;
CBCGPChartAxis* pXAxis = pChart->GetChartAxis(BCGP_CHART_X_PRIMARY_AXIS);
ASSERT_VALID(pXAxis);
pXAxis->m_majorTickMarkType = CBCGPChartAxis::TMT_CROSS;
pXAxis->m_minorTickMarkType = CBCGPChartAxis::TMT_CROSS;
return TRUE;并且添加OnSize函数添加如下代码:
CRect rect;
GetClientRect(&rect);
CWnd *pWnd = GetDlgItem(IDC_PROP_SHOW);
pWnd->SetWindowPos(this,0,0,rect.Width(),rect.Height(),SWP_NOZORDER | SWP_NOACTIVATE);
![](http://img.blog.csdn.net/20161111172741748?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
当窗口尺寸变化时,效果如下图:
首先,从新建一个单文档应用程序BCGPropShowChartView,view类派生于CBCGPFormView,然后添加两个PropPage对话框资源,并且对对话框资源添加类,CPropOne,和CPropTwo,在头文件和CPP文件中修改基类为CBCGPPropertyPage,这样属性页就暂时放在一边。
在BCGPropShowChartView的头文件中添加如下:
private:
CBCGPPropertySheet m_Sheet;
CPropOne m_PropOne;
CPropTwo m_PropTwo;
在CBCGPropShowChartView::OnInitialUpdate()中添加如下代码
CBCGPFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
m_Sheet.SetLook(CBCGPPropertySheet::PropSheetLook_List);
m_Sheet.AddPage(&m_PropOne);
m_Sheet.AddPage(&m_PropTwo);
//m_Sheet.EnableVisualManagerStyle();
m_Sheet.Create(this, WS_CHILD|WS_VISIBLE|WS_TABSTOP,0);
CRect rect;
GetClientRect(&rect);
m_Sheet.MoveWindow(rect);运行程序如下所示:
程序运行出现问题,右边会被遮挡住,经过仔细的发现在movewindow下面加上这句代码就可以了:
m_Sheet.SetActivePage(m_Sheet.GetPage(0));现在要做的就是让屏幕尺寸缩放的时候page页跟着缩放,响应onsize函数,在size函数里添加如下代码:
CRect rect;
GetClientRect(&rect);
if(m_Sheet.GetSafeHwnd()!=NULL){
m_Sheet.MoveWindow(rect);
m_Sheet.SetActivePage(m_Sheet.GetActivePage());
}
m_Sheet.SetActivePage(m_Sheet.GetActivePage());加上这句就强制刷新属性页,不会出现显示不全的问题。
窗口可以随意拖动,并且属性页随着窗口大小缩放而缩放。
2、在属性页one上添加图表,并且可以等比例缩放
首先在page的资源对话框中添加一个静态控件ID为IDC_PROP_SHOW,为该控件添加变量,m_PropShow,在属性页ONE的头文件中修改变量类型为如下:
CBCGPChartCtrl m_PropShow;同时为属性页添加OnInitDialog函数,在OnInitDialog函数中添加如下代码:
CBCGPPropertyPage::OnInitDialog();
CWnd *pWnd = GetDlgItem(IDC_PROP_SHOW);
pWnd->SetWindowPos(this,0,0,100,100,SWP_NOZORDER | SWP_NOACTIVATE);
CBCGPChartVisualObject* pChart = m_PropShow.GetChart();
ASSERT_VALID(pChart);
BCGPChartType type = BCGP_CT_STACKED;
pChart->SetChartType(BCGPChartLine, type);
pChart->SetChartTitle(_T("Furniture Sales"));
CBCGPChartSeries* pSeries1 = pChart->CreateSeries(_T("Tables"));
CBCGPChartSeries* pSeries2 = pChart->CreateSeries(_T("Chairs"));
CBCGPChartSeries* pSeries3 = pChart->CreateSeries(_T("Cabinets"));
pSeries1->AddDataPoint(_T("2011"), 5.);
pSeries1->AddDataPoint(_T("2012"), 8);
pSeries1->AddDataPoint(_T("2013"), 12.);
pSeries1->AddDataPoint(_T("2014"), 13.);
pSeries1->AddDataPoint(_T("2015"), 15.);
pSeries2->AddDataPoint(9.);
pSeries2->AddDataPoint(15.);
pSeries2->AddDataPoint(19.);
pSeries2->AddDataPoint(21.);
pSeries2->AddDataPoint(23.);
pSeries3->AddDataPoint(2.);
pSeries3->AddDataPoint(3.);
pSeries3->AddDataPoint(16.);
pSeries3->AddDataPoint(19.);
pSeries3->AddDataPoint(19.);
CBCGPChartAxis* pYAxis = pChart->GetChartAxis(BCGP_CHART_Y_PRIMARY_AXIS);
ASSERT_VALID(pYAxis);
pYAxis->m_majorTickMarkType = CBCGPChartAxis::TMT_CROSS;
pYAxis->m_minorTickMarkType = CBCGPChartAxis::TMT_CROSS;
CBCGPChartAxis* pXAxis = pChart->GetChartAxis(BCGP_CHART_X_PRIMARY_AXIS);
ASSERT_VALID(pXAxis);
pXAxis->m_majorTickMarkType = CBCGPChartAxis::TMT_CROSS;
pXAxis->m_minorTickMarkType = CBCGPChartAxis::TMT_CROSS;
return TRUE;并且添加OnSize函数添加如下代码:
CRect rect;
GetClientRect(&rect);
CWnd *pWnd = GetDlgItem(IDC_PROP_SHOW);
pWnd->SetWindowPos(this,0,0,rect.Width(),rect.Height(),SWP_NOZORDER | SWP_NOACTIVATE);
当窗口尺寸变化时,效果如下图:
相关文章推荐
- 主窗口大小发生变化(最大化、向下还原、手工手动)时,FormView中的控件等比例缩放
- 添加新驱动模块到BSP里,并且在Catalog Item View里显示的方法整理
- 在View窗口中添加显示FTGL字体
- iOS超出屏幕的尺寸的图片按比例缩放显示
- ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等。 设置的方式包括: 1. 在layout xml中定义Android:s
- CFormView随着窗口的变化,Control及OLE控件自动居中窗体
- 为 GridView、DetailsView、FormView 等数据显示控件删除功能添加“确认对话框”
- android webView显示html图片比例缩放的效果
- 让弹出窗口在屏幕中间显示,没有滚动条,并且点击某行,窗口大小不变化.
- Android横竖屏切换View设置不同尺寸或等比例缩放的自定义View的onMeasure解决方案(2)
- java swing 怎样添加背景图片并且能根据窗口大小进行缩放(来自网络)
- 安卓中为View添加动画效果(尺寸缩放、透明度渐变、旋转、移动)
- 问题解决——MFC SDI程序 CFormView中控件随窗口缩放
- Android横竖屏切换View设置不同尺寸或等比例缩放的XML解决方案
- java swing 怎样添加背景图片并且能根据窗口大小进行缩放
- MFC对话框程序添加状态栏动态显示时间,随窗口大小变化
- 设置单文档+Formview窗口初始尺寸为固定值
- ios图片缩放,根据UIImageView Frame的尺寸,自动调整UIImage缩放,保证图片显示不变形
- CFormView动态调整对话框的尺寸和调整比例控制的部署
- Android横竖屏切换View设置不同尺寸或等比例缩放的自定义View的onMeasure解决方案(2)