首页 > 其他分享 >MFC 根据定时器 ICON 移动 定时器的应用

MFC 根据定时器 ICON 移动 定时器的应用

时间:2024-01-27 10:23:18浏览次数:25  
标签:定时器 30 MFC rect x2 x3 x1 x4 ICON

▲ 会从做向右跑动

构造函数:

void CMFCApplication1View::OnDraw(CDC* pDC)
{
    CMFCApplication1Doc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
        return;

    // 绘制代码
    pDC->DrawIcon(x1, y1, icon[0]);
    pDC->DrawIcon(x2, y2 + 50, icon[1]);
    pDC->DrawIcon(x3, y3 + 100, icon[2]);
    pDC->DrawIcon(x4, y4 + 150, icon[3]);
}

实现:

int CMFCApplication1View::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CView::OnCreate(lpCreateStruct) == -1)
        return -1;

    SetTimer(1, 500, NULL); // 定时器

    return 0;
}


void CMFCApplication1View::OnTimer(UINT_PTR nIDEvent)
{
    switch (nIDEvent)
    {
    case 1:
    {
        x1 += 20;
        x2 += 40;
        x3 += 60;
        x4 += 80;
        Invalidate(); // 更新窗口

        // 获取客户区范围
        CRect rect;
        GetClientRect(&rect);
        if (x1 > rect.Width()) {
            x1 = 30;
        }
        if (x2 > rect.Width()) {
            x2 = 30;
        }
        if (x3 > rect.Width()) {
            x3 = 30;
        }
        if (x4 > rect.Width()) {
            x4 = 30;
        }
    }
    break;
    default:
        break;
    }


    CView::OnTimer(nIDEvent);
}


void CMFCApplication1View::On32771()
{
    x1 = x2 = x3 = x4 = 30;
    y1 = y2 = y3 = y4 = 30;

    // 刷新窗口
    Invalidate();
}

标签:定时器,30,MFC,rect,x2,x3,x1,x4,ICON
From: https://www.cnblogs.com/huvjie/p/17991151

相关文章

  • MFC 动态图标切换
    主要是学会获取应用实例,然后是定时器的使用。▲会一直变动,4个轮流滚。标题是属于框架的。头文件:private:HICONicon[4];构造函数:CMainFrame::CMainFrame()noexcept{//加载图标//获取应用程序icon[0]=AfxGetApp()->LoadIconW(IDI_ICON1);......
  • MFC 菜单路由事件,按钮可用不可用
    点击b会切换a可用状态:添加Menu选项a对应IDID_DEMO_A,b对应IDID_DEMO_B。弹式菜单无法编辑ID。▲右键添加事件处理程序▲路由传递路径frame给到view如果view处理好了,就返回给frame;如果没处理的话,view会给这个路由消息给doc,如果doc没有处理,再返回给......
  • MFC 定时器的简单用法
    View下两个消息事件:ON_WM_CREATEON_WM_TIMERBEGIN_MESSAGE_MAP(CMFCApplication1View,CView)//标准打印命令ON_COMMAND(ID_FILE_PRINT,&CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT,&CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW,&a......
  • MFC 插入符输入文字
    在View中,三个消息事件:BEGIN_MESSAGE_MAP(CMFCApplication1View,CView) //标准打印命令 ON_COMMAND(ID_FILE_PRINT,&CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT,&CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW,&CView::OnFilePrintPreview)......
  • EXTI中断、TIM定时器
    一.中断系统1.中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行。2.中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源。......
  • MFC 简单的绘图用法
    ▲效果在OnDraw函数中://CMFCApplication1View绘图voidCMFCApplication1View::OnDraw(CDC*pDC){CMFCApplication1Doc*pDoc=GetDocument();ASSERT_VALID(pDoc);if(!pDoc)return;/*a)定义画家b)定义画笔(画刷)CPen,CBrush......
  • MFC 画线
    ▲连续划线//鼠标是否按下标志点位变量private://是否按下boolm_isPress;//存点数据CPointm_myPoint;消息:BEGIN_MESSAGE_MAP(CMFCApplication1View,CView) //标准打印命令 ON_COMMAND(ID_FILE_PRINT,&CView::OnFilePrint) ON_COMMAND(ID_......
  • 记录--你敢信?比 setTimeout 还快 80 倍的定时器
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助起因很多人都知道,setTimeout是有最小延迟时间的,根据MDN文档setTimeout:实际延时比设定值更久的原因:最小延迟时间中所说:在浏览器中,setTimeout()/setInterval()的每调用一次定时器的最小间隔是4ms,这通常是由于......
  • MFC 简单的事件测试
    View的WM_LBUTTONDOWN事件消息。voidCMFCApplication1View::OnLButtonDown(UINTnFlags,CPointpoint){CStringstr;str.Format(TEXT("x=%d,y=%d"),point.x,point.y);MessageBox(str);CView::OnLButtonDown(nFlags,point);}View......
  • MFC 简单的界面切换测试主窗体类似控件的方式嵌入其他窗体
    ▲类向导->MFC类创建两个子窗体。1。创建两个子窗体。2。属性设置:1)、“Style”选择“Child”;中文版“样式”选择“下层”。2)、“Border”为“None”;中文版“边框”选择“无”。3。主窗体中实例子窗体对象:声明:private:CSubForm1*m_CSubForm1;CSubForm2*m_CSu......