我的程序不断的输入数据,我想把他们连起来,用直线就行,能够滚动的程序谢谢

解决方案 »

  1.   

    划线会吧
    然后判断界限
    bitblt进行移动
    再画出来新的轨迹
      

  2.   

    // DemoDlg.h : 头文件
    //#pragma once
    #include "afxwin.h"
    // CDemoDlg 对话框
    class CDemoDlg : public CDialog
    {
    // 构造
    public:
    CDemoDlg(CWnd* pParent = NULL); // 标准构造函数// 对话框数据
    enum { IDD = IDD_DEMO_DIALOG }; protected:
    virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
    // 实现
    protected:
    HICON m_hIcon; // 生成的消息映射函数
    virtual BOOL OnInitDialog();
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    DECLARE_MESSAGE_MAP()
    public:
    virtual BOOL PreTranslateMessage(MSG* pMsg);
    CStatic m_screen;
    CEdit m_input;
    afx_msg void OnBnClickedButton1();
    int count;
    int x;
    int y;
    };
    // DemoDlg.cpp : 实现文件
    //#include "stdafx.h"
    #include "Demo.h"
    #include "DemoDlg.h"#ifdef _DEBUG
    #define new DEBUG_NEW
    #endif
    // CDemoDlg 对话框CDemoDlg::CDemoDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CDemoDlg::IDD, pParent)
    {
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    count = 0;
    x = 0;
    y = 0;
    }void CDemoDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_SCREEN, m_screen);
    DDX_Control(pDX, IDC_EDIT1, m_input);
    }BEGIN_MESSAGE_MAP(CDemoDlg, CDialog)
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    //}}AFX_MSG_MAP
    ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
    END_MESSAGE_MAP()
    // CDemoDlg 消息处理程序BOOL CDemoDlg::OnInitDialog()
    {
    CDialog::OnInitDialog(); // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
    //  执行此操作
    SetIcon(m_hIcon, TRUE); // 设置大图标
    SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO:在此添加额外的初始化代码

    ::SetWindowPos( m_screen.m_hWnd, 0, 0, 0, 400, 250, NULL );
    return TRUE;  // 除非设置了控件的焦点,否则返回 TRUE
    }// 如果向对话框添加最小化按钮,则需要下面的代码
    //  来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
    //  这将由框架自动完成。void CDemoDlg::OnPaint() 
    {
    CPaintDC dc(this); // 用于绘制的设备上下文
    if (IsIconic())
    {
    CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作矩形中居中
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标
    dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
    CDialog::OnPaint();
    }
    CString s;
    for( int i = 0; i < 20; i++ )
    {
    s.Format( "%d", i );
    dc.TextOut( i * 20, 250, ( LPCTSTR )s );
    }
    }//当用户拖动最小化窗口时系统调用此函数取得光标显示。
    HCURSOR CDemoDlg::OnQueryDragIcon()
    {
    return static_cast<HCURSOR>(m_hIcon);
    }BOOL CDemoDlg::PreTranslateMessage(MSG* pMsg)
    {
    // TODO: 在此添加专用代码和/或调用基类
    return CDialog::PreTranslateMessage(pMsg);
    }void CDemoDlg::OnBnClickedButton1()
    {
    // TODO: 在此添加控件通知处理程序代码
    #define MAXNUM 15
    CDC *pDc = m_screen.GetDC();
    CString str;
    m_input.GetWindowText( str );
    int oldy = y; m_input.SetSel( 0, 100 );
    if( !str.GetLength() )
    return;
    y = atoi( ( LPCTSTR )str );
    if( !( ( y >= 0 ) && ( y <= 9 ) ) )
    {
    y = oldy;
    return;
    }
    m_input.SetSel( 0, 100 ); if( count < MAXNUM )
    {
    pDc->MoveTo( x, oldy * 20 );
    }
    else
    {
    pDc->BitBlt( 0, 0, 400, 250, pDc, 20, 0, SRCCOPY );
    x -= 20;
    pDc->MoveTo( x, oldy * 20 );
    }
    pDc->LineTo( x + 20, y * 20 );
    x += 20;
    count++;
    m_input.SetSel( 0, 100 );
    }
      

  3.   

    这是我以前写的一个小东西,你要的话可以给你,这是用.net写的,改变一些就能编译执行了
      

  4.   

    已经懂了,还想要你的代码
    [email protected]
    谢谢