📄 mainfrm.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 + -