YMData.cpp
上传用户:asikq0571
上传日期:2014-07-12
资源大小:528k
文件大小:6k
源码类别:

Internet/IE编程

开发平台:

Visual C++

  1. // YMData.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "Peugeot.h"
  5. #include "YMData.h"
  6. #include "MainFrm.h"
  7. #include "PeugeotDoc.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CYMData dialog
  15. IMPLEMENT_DYNCREATE(CYMData, CDialog)
  16. CYMData::CYMData(CWnd* pParent /*=NULL*/)
  17. : CDialog(CYMData::IDD, pParent)
  18. {
  19. //{{AFX_DATA_INIT(CYMData)
  20. // NOTE: the ClassWizard will add member initialization here
  21. //}}AFX_DATA_INIT
  22. m_pYMGridCtrl = NULL;
  23. }
  24. void CYMData::DoDataExchange(CDataExchange* pDX)
  25. {
  26. CDialog::DoDataExchange(pDX);
  27. //{{AFX_DATA_MAP(CYMData)
  28. // NOTE: the ClassWizard will add DDX and DDV calls here
  29. //}}AFX_DATA_MAP
  30. }
  31. BEGIN_MESSAGE_MAP(CYMData, CDialog)
  32. //{{AFX_MSG_MAP(CYMData)
  33. ON_WM_DESTROY()
  34. //}}AFX_MSG_MAP
  35. ON_MESSAGE(WM_GRIDEDITCELL,OnNotifyGrid)
  36. ON_MESSAGE(WM_GRIDDBLCLICK,OnNotifyDblClkGrid)
  37. END_MESSAGE_MAP()
  38. /////////////////////////////////////////////////////////////////////////////
  39. // CYMData message handlers
  40. BOOL CYMData::OnInitDialog() 
  41. {
  42. CDialog::OnInitDialog();
  43. // TODO: Add extra initialization here
  44. if (m_pYMGridCtrl == NULL)
  45. {
  46. //创建m_pDoc->m_pYXGridCtrl对象
  47.         m_pYMGridCtrl = new CGridCtrl;
  48. // m_pYXGridCtrl->m_hGridOwner=m_hGridOwner;
  49. if (!m_pYMGridCtrl) 
  50. {
  51.     AfxMessageBox("创建电度表格失败");
  52. return false;
  53. }
  54. // 创建m_pDoc->m_pYXGridCtrl对象窗体
  55. CRect rect;
  56.         rect.left   = 0;
  57. rect.top    = 0;
  58. rect.bottom = 0;
  59. rect.right  = 273;
  60. m_pYMGridCtrl->Create(rect, this, 100);
  61. m_pYMGridCtrl->SetEditable(TRUE);
  62. m_pYMGridCtrl->EnableDragAndDrop(TRUE);
  63. // TODO: Add extra initialization here
  64. }
  65. return TRUE;  // return TRUE unless you set the focus to a control
  66.               // EXCEPTION: OCX Property Pages should return FALSE
  67. }
  68. //绘制电度电子表格
  69. void CYMData::DrawYMGrid()
  70. {
  71.      CMainFrame* pMainFrame;
  72.      pMainFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd; //框架窗口指针
  73.  CPeugeotDoc* pDoc;
  74.  pDoc = (CPeugeotDoc*) pMainFrame->GetActiveDocument(); //文档指针
  75.      ReDrawCtr();
  76.      try 
  77.  {
  78.    m_pYMGridCtrl->SetRowCount(pDoc->m_YMNum+1);
  79.    m_pYMGridCtrl->SetColumnCount(3);
  80.    m_pYMGridCtrl->SetFixedRowCount(1);
  81.    m_pYMGridCtrl->SetFixedColumnCount(1);
  82.  }
  83.      catch (CMemoryException* e)
  84.  {
  85. e->ReportError();
  86. e->Delete();
  87. AfxMessageBox("电度表格初始化失败");
  88.  }
  89.      GV_ITEM Item;
  90.      Item.mask = GVIF_TEXT|GVIF_FORMAT;
  91.  Item.nFormat = DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS; 
  92.  Item.row    = 0;
  93.  Item.col    = 0;
  94.  Item.szText = "点地址 D";
  95.      m_pYMGridCtrl->SetItem(&Item);
  96.      Item.col    = 1;
  97.  Item.szText = "点名称";
  98.      m_pYMGridCtrl->SetItem(&Item);
  99.  Item.col    = 2;
  100.  Item.szText = "码值 H";
  101.      m_pYMGridCtrl->SetItem(&Item);
  102.    
  103.  for(int i=1;i<pDoc->m_YMNum+1;i++)
  104.  {
  105.  Item.row = i;
  106.      Item.col = 0;   //点地址
  107.  Item.szText.Format("%d",(pDoc->m_YMAddr+i-1));   
  108.      m_pYMGridCtrl->SetItem(&Item);
  109.      Item.col = 1;   //点名称  
  110.      Item.szText.Format("电度%d",i);
  111.      m_pYMGridCtrl->SetItem(&Item);
  112.      Item.col = 2;   //点码值
  113.      Item.szText = "00000000";
  114.      m_pYMGridCtrl->SetItem(&Item);
  115.  }
  116. }
  117. void CYMData::OnDestroy() 
  118. {
  119.  if (m_pYMGridCtrl != NULL)
  120.     delete m_pYMGridCtrl;
  121. CDialog::OnDestroy();
  122. }
  123. LRESULT CYMData::OnNotifyGrid(WPARAM wParam,LPARAM lParam)
  124. {
  125.    CMainFrame* pMainFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;           //框架窗口指针;
  126.    CPeugeotDoc* pDoc      = (CPeugeotDoc*) pMainFrame->GetActiveDocument(); //文档指针
  127.    ASSERT_VALID(pDoc);
  128.    CString strData;
  129.    int strLen;
  130.    char c[8];    
  131.    strData = m_pYMGridCtrl->GetItemText(wParam,2);
  132.    strLen  = strData.GetLength();
  133.    for (int i=0; i<8; i++)
  134.    {
  135.    if (i < strLen) 
  136. {
  137.    c[i] = strData[strLen-1-i];  //从字符右起取值
  138.    ChartToInt(c[i]);            //转换成 0-F 整数
  139. }  
  140. else
  141.    c[i] = 0x00;                //字符不足的按0值补
  142.    }
  143.    
  144.    BYTE hihib,hib,lob,lolob;       //临时变量,4个字节
  145.    WORD hiword,loword;
  146.    hihib = (c[7]<<4) | c[6];
  147.    hib   = (c[5]<<4) | c[4];
  148.    lob   = (c[3]<<4) | c[2];
  149.    lolob = (c[1]<<4) | c[0];
  150.    hiword = (hihib<<8) | hib;
  151.    loword = (lob<<8) | lolob;
  152.    pDoc->m_pYMData[wParam - 1] = (hiword << 16) | loword;
  153.    strData = ByteToString(hihib) + ByteToString(hib) + ByteToString(lob) + ByteToString(lolob);
  154.    m_pYMGridCtrl->SetItemText(wParam,2,strData);
  155.    m_pYMGridCtrl->Invalidate(TRUE);
  156.   
  157.    return 0L;
  158. }
  159. LRESULT CYMData::OnNotifyDblClkGrid(WPARAM wParam,LPARAM lParam)
  160. {
  161.   return 0L;
  162. }
  163. void CYMData::UpdateYMGrid()
  164. {
  165.     CMainFrame* pMainFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;           //框架窗口指针;
  166.     CPeugeotDoc* pDoc      = (CPeugeotDoc*) pMainFrame->GetActiveDocument(); //文档指针
  167.     ASSERT_VALID(pDoc);
  168. CString s1; 
  169. WORD hiw, low;
  170. BYTE hihib,hib,lob,lolob;       //临时变量,4个字节
  171. for (int i=0; i<pDoc->m_YCNum; i++)
  172. {
  173.        hiw = HIWORD(pDoc->m_pYMData[i]);
  174.    low = LOWORD(pDoc->m_pYMData[i]);
  175.    hihib = HIBYTE(hiw);
  176.    hib   = LOBYTE(hiw);
  177.        lob   = HIBYTE(low);
  178.    lolob = LOBYTE(low);
  179.    s1 = ByteToString(hihib) + ByteToString(hib) + ByteToString(lob) + ByteToString(lolob);
  180.    m_pYMGridCtrl->SetItemText(i+1,2,s1);
  181.    m_pYMGridCtrl->Invalidate(TRUE);
  182. }
  183. }
  184. void CYMData::ReDrawCtr()
  185. {
  186. CMainFrame* pMainFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;           //框架窗口指针;
  187. CPeugeotDoc* pDoc      = (CPeugeotDoc*) pMainFrame->GetActiveDocument(); //文档指针
  188.     ASSERT_VALID(pDoc);
  189. CRect BarRect,GridRect;
  190. pMainFrame->m_wndMyBar1.GetClientRect(&BarRect);
  191. int iGridHeight;
  192. iGridHeight = BarRect.bottom-30; 
  193. m_pYMGridCtrl->MoveWindow(0,0,271 ,iGridHeight); 
  194. }