一个用VS2010写的一个MFC运行界面的程序。我现在想改一下界面,能不能帮我参考一下! 点击:1986 | 回复:8



未卜先知1

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 1回
  • 年度积分:0
  • 历史总积分:63
  • 注册:2017年7月05日
发表于:2017-09-14 13:06:18
楼主

界面截图是这样的:

从第一页图片中可以看到:传感器1001号和1002号分别显示了两个传感器的温度值,但是另外两个传感器1003号和1004号显示的数值分别与1001号和1002号显示的一样。


从第二页图片中可以看到:传感器编号1001和1002又分别显示了两个与第一页不同的温度值,编号1003和1004传感器还是与这两个显示的数值一样。


我解调仪分别连接了四个不同的传感器1001 1002 1003 1004,现在的问题是我想把第二页上标号为1003 1004传感器显示的两个温度值移到第一页的1003 1004所要显示的区域,让四个传感器的温度值在同一页上来显示,我应该如何来做到呢?  这个程序使用的是自动加页的一个机制,我是初学者所以觉得不太好改?有没有老师能帮我看一下的,可以重谢您!!!


另外,存放四个列表控件的对话框ID为 :IDD_SENSOR_DLG,为其关联的类是CSensorInfoDlg,程序里面就是将这个对话框放在了主对话框里面,主对话框ID为: IDD_MAINFRAMEVIEW, 为其关联的类是CMainFrameView


部分相关代码如下:

头文件:


//数据

private:

  int iPageCount; //tab控件属性页个数

  bool bEndFlag; //结束标志


private:

 CSensorInfoDlg *m_pSensorInfoDlg; //传感器特性对话框

 CMFCTabCtrl m_wndSensorTabView; //tab控件选择显示


public:

 void InitTabCtrl(); //初始化Tab控件的视图

 void DrawSensorRTCurve();


源文件:

void CMainFrameView::InitTabCtrl()

{

  //计算Tab控件页面的个数


  iPageCount = 0;

  if(iSensorCount)

  {

    iPageCount = iSensorCount%2;

    if(iPageCount)

    {

      iPageCount = iSensorCount /2+1; //Tab属性页个数


      }

     else

     {

       iPageCount = iSensorCount/2; //Tab属性页个数


     }

    }

   if(iPageCount>0)

   {

      m_pSensorInfoDlg = new CSensorInfoDlg[iPageCount]

    }

   // 初始化Tab控件

   TCITEM tcItem;

   tcItem.mask = TCIF_TEXT;

   for(int i = 0;i<iPageCount; i++)

   {

       CString cs;

       cs.Format(_T("第 %d 页"),i+1);

       tcItem.pszText = cs.GetBuffer(MAX_PATH)

       cs.ReleaseBuffer();

      

       m_pSensorInfoDlg[i].Create(IDD_SENSOR_DLG.&m_wndSensorTabView);

       m_wndSensorTabView.AddTab(&m_pSensorInfoDlg[i],cs);

    }

    //初始化传感器信息


    CString cs;

    CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd();

    POSITION pos;

    pos = (pMainFrame ->sensorlst).GetHeadPosition();

    for(int i = 0;i<iSensorCount;i++)

   {

      int sensorNumber = i%2;

      int iPageNumber = i/2;

      

      SENSORINFO* s = (pMainFrame->sensorlst).GetNext(pos);

      cs.Format(_T("传感器编号:%s"),s->sensor_name);


      m_pSensorInfoDlg[pageNumber].SetSensorName(sensorNumber,cs); //设置传感器标题

      m_pSensorInfoDlg[pageNumber].SetsensorPtr(sensorNumber,s); //设置传感器信息指针

    }

}

//绘制实时曲线

void CMainFrameView::DrawSensorRTCurve()

{

   int pageNumber = 0;

   int sensorNumber = 0;

   for(int index = 0;index < iSensorCount;index++)

   {

     pageNumber = index / 2;

     sensorNumber = index%2;

    //绘制实时曲线

     m_pSensorInfo[pageNumber].DrawRTCurve(sensorNumber,pPeakWavelength + index);

   }

}






虫里的菜

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 14回
  • 年度积分:0
  • 历史总积分:104
  • 注册:2017年9月05日
发表于:2017-09-14 17:19:28
1楼

谢谢楼主分享,学习了!!!!!

未卜先知1

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 1回
  • 年度积分:0
  • 历史总积分:63
  • 注册:2017年7月05日
发表于:2017-09-15 10:21:54
2楼

有没有人能帮我解决一下问题!!!

AutoCtrl888

  • 精华:0帖
  • 求助:0帖
  • 帖子:57帖 | 465回
  • 年度积分:48
  • 历史总积分:2394
  • 注册:2007年3月04日
发表于:2017-09-17 22:04:44
3楼

推荐一个高级语言通讯解决方案的文章资源:

http://blog.sina.com.cn/s/blog_16d7d3ecb0102x1z5.html

小凳子

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 45回
  • 年度积分:17
  • 历史总积分:805
  • 注册:2017年3月03日
发表于:2017-09-18 14:45:54
4楼

学习了,学习了。。谢谢

xiaolongfei87

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 338回
  • 年度积分:0
  • 历史总积分:792
  • 注册:2013年8月05日
发表于:2017-09-19 13:15:04
5楼

程序发上来,尝试一下

矛头小子

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 180回
  • 年度积分:0
  • 历史总积分:554
  • 注册:2009年6月16日
发表于:2017-09-19 15:17:35
6楼

qt做界面更好看!!!!!!!1

SFHN

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 51回
  • 年度积分:0
  • 历史总积分:89
  • 注册:2017年9月04日
发表于:2017-09-19 16:19:13
7楼


引用 小凳子 的回复内容: 学习了,学习了。。谢谢


马西

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 53回
  • 年度积分:15
  • 历史总积分:1407
  • 注册:2014年12月26日
发表于:2017-09-27 15:35:24
8楼

数值一样是链接的值,是一样的吧, 把你的源文件发出来


热门招聘
相关主题

官方公众号

智造工程师