窗口程序画一个尺子

先不废话直接上图:

 

 

第一步:新建项目

 

选择Visual VC++ 和 Win32控制台程序,在名称那给这个程序取个名字。然后在位置那选择保存在哪,点击确定。

第二步:写程序

头文件:Ruler.h

#ifndef _RULER_H_
#define _RELER_H_
#endif
class CMyApp : public CWinApp
{
public: virtual BOOL InitInstance();

};

class CMainWindow : public CFrameWnd
{
public:
CMainWindow();
protected:
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP();
};

 

主程序 Ruler.cpp

// Ruler.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <afxwin.h>
#include "Ruler.h"

CMyApp myApp;

BOOL CMyApp::InitInstance()
{
m_pMainWnd = new CMainWindow;
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}

BEGIN_MESSAGE_MAP(CMainWindow, CFrameWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()

CMainWindow::CMainWindow()
{
Create(NULL, _T("Rulur"));

}

void CMainWindow::OnPaint()
{
CPaintDC dc(this);
/*
*设置映射模式,映射模式定义了将逻辑单位转换为设备单位的单位量,并定义了X和Y的方向
*每一逻辑单位对换0.01英寸,X向右为正,Y向上为正
*/
dc.SetMapMode(MM_LOENGLISH);
dc.SetTextAlign(TA_CENTER | TA_BOTTOM);//对齐方式
dc.SetBkMode(TRANSPARENT);//设置背景模式为背景在绘图之前不改变,否则TextOut输出的数字背景会是白色

/*
* 画尺子的主体
*/
CBrush brush(RGB(255, 255, 0));
CBrush *pOldBrush = dc.SelectObject(&brush);
dc.Rectangle(100, -100, 1300, -200);
dc.SelectObject(pOldBrush);

/*
*画尺子的尺寸
*/

for (int i = 125; i < 1300; i += 25)
{
dc.MoveTo(i, -192);
dc.LineTo(i, -200);

}

for (int i = 150; i < 1300; i += 50)
{
dc.MoveTo(i, -184);
dc.LineTo(i, -200);

}

for (int i = 200; i < 1300; i += 100)
{
dc.MoveTo(i, -175);
dc.LineTo(i, -200);
/*
* 画数值
*/
CString string;
string.Format(_T("%d"), (i / 100) - 1);//格式化文本
dc.TextOutW(i, -175, string);
}
}

 注意:这样直接运行会报错,因为窗口程序,我们在新建项目时选的是控制台。

首选:点击项目,选择项目属性

 

然后在依次:配置属性->连接器->系统,在右边的子系统那把控制台改为窗口。

 

 

还有最后一步:

在配置属性->常规。把MFC的使用从使用标准weindows库改选为在共享DLL中使用MFC。

posted @ 2014-04-06 15:51  RogerGold  阅读(637)  评论(0编辑  收藏  举报