MFC程序设计——标尺的例子
生活随笔
收集整理的這篇文章主要介紹了
MFC程序设计——标尺的例子
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
我們首先看一個例子:
頭文件:
//Ruler.h//CMyApp類代表應(yīng)用程序本身,CMyApp::InitInstance通過構(gòu)造CMainWindow對象創(chuàng)建一個主窗口; //而CMainWindow的構(gòu)造函數(shù)通過Create創(chuàng)建了在屏幕上顯示的窗口;class CMyApp : public CWinApp { public:virtual BOOL InitInstance (); };class CMainWindow : public CFrameWnd { public:CMainWindow (); protected://CMainWindow::OnPaint()處理所有的畫圖任務(wù)afx_msg void OnPaint ();DECLARE_MESSAGE_MAP () };源文件:
//Ruler.cpp #include <afxwin.h> #include "Ruler.h" CMyApp myApp; /////////////////////////////////////////////////////////// // CMyApp member functionsBOOL CMyApp::InitInstance () {m_pMainWnd = new CMainWindow;m_pMainWnd->ShowWindow (m_nCmdShow);m_pMainWnd->UpdateWindow ();return TRUE; }/////////////////////////////////////////////////////////// // CMainWindow消息映射以及成員函數(shù)BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd)ON_WM_PAINT () END_MESSAGE_MAP ()CMainWindow::CMainWindow () {Create (NULL, _T ("Ruler")); }void CMainWindow::OnPaint () {CPaintDC dc (this); //初始化設(shè)備描述表//設(shè)置映射模式dc.SetMapMode (MM_LOENGLISH);//設(shè)置設(shè)備描述表的屬性dc.SetTextAlign (TA_CENTER | TA_BOTTOM); //設(shè)置背景模式,透明dc.SetBkMode (TRANSPARENT);// 畫標尺的主體//黃色的畫刷被選為設(shè)備描述表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);//CDC::TextOut畫出數(shù)字標注CString string;string.Format (_T ("%d"), (i / 100) - 1);dc.TextOut (i, -175, string);} }注:C語言中的%d代表整型
標尺的應(yīng)用程序沒有采用把要傳遞給TextOut的字符串硬編碼的方法,而是調(diào)用了CString::Format 生成標尺上的文本,CString是描述文本字符串的MFC類,對于CString對象而言,Format就能完成文本格式化,而不調(diào)用其它的外部函數(shù)。
總結(jié)
以上是生活随笔為你收集整理的MFC程序设计——标尺的例子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【路径规划】局部路径规划算法——人工势场
- 下一篇: matlab条件and,matlaban