⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainfrm.cpp

📁 基于s3c2440 的TCD132D驱动和数据采集并把采集的数据绘制曲线
💻 CPP
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "quxian.h"

#include "MainFrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

// Array tbSTDButton contains relevant buttons of bitmap IDB_STD_SMALL_COLOR
static TBBUTTON tbButtons[] = {
	{0, 0,				TBSTATE_ENABLED, TBSTYLE_SEP,    0, 0, 0,  0},  
	{0,	ID_FILE_NEW,	TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, -1},
	{1, ID_FILE_OPEN,	TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, -1},
	{2, ID_FILE_SAVE,	TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, -1},
	{0, 0,				TBSTATE_ENABLED, TBSTYLE_SEP,    0, 0, 0, -1},
	{3, ID_EDIT_CUT,	TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, -1},
	{4, ID_EDIT_COPY,	TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, -1},
	{5, ID_EDIT_PASTE,	TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, -1},
	{0, 0,				TBSTATE_ENABLED, TBSTYLE_SEP,    0, 0, 0, -1},
	{6, ID_APP_ABOUT,	TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, -1},
	{0, 0,				TBSTATE_ENABLED, TBSTYLE_SEP,    0, 0, 0,  0}
};
const int nNumButtons = sizeof(tbButtons)/sizeof(TBBUTTON);
const int nNumImages = 7;
const DWORD dwAdornmentFlags = 0; // exit button

/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_COMMAND(IDM_HT, OnHt)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
	
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// Add the buttons and adornments to the CommandBar.
	if (!InsertButtons(tbButtons, nNumButtons, IDR_MAINFRAME, nNumImages) ||
	    !AddAdornments(dwAdornmentFlags))
	{
		TRACE0("Failed to add toolbar buttons\n");
		return -1;
	}

	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs


	return TRUE;
}


/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers

void CMainFrame::OnHt() 
{ 
//bShowLineA=TRUE;

       // Invalidate();//这个函数暂时只需要知道是用来“调用”OnDraw函数的

	
//MessageBox(_T("jalsd"));
	 //   CClientDC dc(this);
//	MessageBox("Simple message box.");
//	dc.MoveTo(int(50), int(20));
//	dc.LineTo(int(50), int(200));
	// TODO: Add your command handler code here
	/*CClientDC dc(this);
 const int num=10;

       float initX[num]={1,2,3,4,5,6,7,8,9,10};

       float initY[num]={0.5,16,2.8,4,5.6,32,7,9.4,13.8,23.4};

 

       //分别取得X和Y最大值,最小值

        float maxX=initX[0];

       float minX=initX[0];

       float maxY=initY[0];

       float minY=initY[0];

        for(int i=0;i<num;i++)              //计算最大最小值

       {

              if(initX[i]>maxX)

                     maxX=initX[i];

              if(initX[i]<minX)

                     minX=initX[i];

              if(initY[i]>maxY)

                     maxY=initY[i];

              if(initY[i]<minY)

                     minY=initY[i];

       }

 
 
       //如果原点必须在X轴上,加上下面2行,否则注释掉

     // if(minX>0)

            // minX=0;

 

       //如果原点必须在Y轴上,加上下面2行,否则注释掉

      // if(minY>0)

           //minY=0;

 

 

       //确定图象显示大小

       int width=300;

       int height=200;

 

       //确定坐标图四周预留的空白大小

       const int mytop=10;

    const int mybottom=40;

    const int myleft=80;

    const int myright=50;

 

       //确定X,Y轴每单位显示宽度

       float intervalX=(width-myleft-myright)/(maxX-minX);

       float intervalY=(height-mybottom-mytop)/(maxY-minY);

 

       //绘制曲线。由于绘图坐标的Y轴是向下延升,所以这里每个点的Y值是用

       //图象高度减去y值大小。

       dc.MoveTo(int(myleft+(initX[0]-minX)*intervalX), 

                     int(height-(mybottom+(initY[0]-minY)*intervalY)));

       for(i=0;i<num;i++)

       {

              dc.LineTo(int(myleft+(initX[i]-minX)*intervalX), 

                     int(height-(mybottom+(initY[i]-minY)*intervalY)));

       }

 

       //绘制X,Y轴

       //X轴从图形区域最左端到最右端

       float bottomY=0;

       float leftX=0;

       //bottomY表示X轴的y值,leftX表示Y轴的x值

       if(minY>0)

              bottomY=minY;

       if(minX>0)

              leftX=minX;

 

       dc.MoveTo(int(myleft),int(height-(mybottom+(bottomY-minY)*intervalY)));

       dc.LineTo(int(width-myright),int(height-(mybottom+(bottomY-minY)*intervalY)));

       //Y轴从图形区域最底端到最顶端

       dc.MoveTo(int(myleft+(leftX-minX)*intervalX),int(height-mybottom));

       dc.LineTo(int(myleft+(leftX-minX)*intervalX),int(mytop));

 

       //确定显示刻度个数

       const int count=5;

 

       //确定每个显示刻度之间的宽度

       float spaceX=(width-myleft-myright)/count;

       float spaceY=(height-mybottom-mytop)/count;

 

       //绘制刻度和刻度值

       CString str;

       //X轴
        CString txtsx[20];
       for(i=0;i<=count;i++)

       {
              
              //str.Format("%.1f",minX+i*(maxX-minX)/count);

              dc.MoveTo(int(myleft+spaceX*i),int(height-(mybottom+(bottomY-minY)*intervalY)));

              dc.LineTo(int(myleft+spaceX*i),int(height-(mybottom+(bottomY-minY)*intervalY+5)));

            
              str.Format(_T(" %.1f"), minX+i*(maxX-minX)/count);

              txtsx[i]=(_T("%s"), (LPCTSTR) str);
             dc.DrawText(txtsx[i],CRect((myleft+spaceX*i-14),(height-(mybottom+(bottomY-minY)*intervalY-5)),(myleft+spaceX*i+14),(height-(mybottom+(bottomY-minY)*intervalY-20))),DT_CENTER);         // x
    
       }

 

     //Y轴
       CString txtsy[20];
       for(i=0;i<=count;i++)

       {     //CString k;
              // float j;
			  //j=minY+i*(maxY-minY)/count;
              //str.Format(_T("%.1f",j));
              //txtsy[i](_T("55"))
              dc.MoveTo(int(myleft+(leftX-minX)*intervalX),int(height-(mybottom+spaceY*i)));

              dc.LineTo(int(myleft+(leftX-minX)*intervalX+5),int(height-(mybottom+spaceY*i)));

			  //CString txtsy(_T("55")); 
	         //pDC->DrawText(txtsy,CRect((myleft+(leftX-minX)*intervalX-30),(height-(mybottom+spaceY*i+8)),(myleft+(leftX-minX)*intervalX),(height-(mybottom+spaceY*i-8))),DT_CENTER);         // x
             
              str.Format(_T(" %.1f"), minY+i*(maxY-minY)/count);

              txtsy[i]=(_T("%s"), (LPCTSTR) str);
             dc.DrawText(txtsy[i],CRect((myleft+(leftX-minX)*intervalX-30),(height-(mybottom+spaceY*i+8)),(myleft+(leftX-minX)*intervalX),(height-(mybottom+spaceY*i-8))),DT_CENTER);         // x
       }
  
 

    //绘制X,Y轴的变量名

       
	   CString txty(_T("y value")); 
       //pDC->DrawText(txt,CRect(myleft,mytop,(width-myright),(height-(mybottom+(bottomY-minY)*intervalY))),DT_SINGLELINE/DT_BOTTOM); 
	   dc.DrawText(txty,CRect(0,(height/2-8),myleft,(height/2+8)),DT_SINGLELINE/DT_CENTER);            // y
       CString txt(_T("x value")); 
	   dc.DrawText(txt,CRect(myleft,(height-(mybottom+(bottomY-minY)*intervalY)+20),(width-myright),(height-(mybottom+(bottomY-minY)*intervalY)+35)),DT_CENTER);         // x
       //pDC->TextOut(width/2,height-20,"像素(个)");

       //pDC->TextOut(0,height/2,"光强");

 */

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -