MFC ||onDraw Image png 并移动它

MFC || onDraw Image png and move it

提问人:Cc4Dayz 提问时间:8/25/2021 更新时间:8/25/2021 访问量:167

问:

我创建了一个 Single Document 项目。

我想知道是否有办法在 MFC (CImage) 中制作“移动”对象。

CcpPongView::CcpPongView() noexcept
{
    // TODO: add construction code here
    BackgdoundImage.Load(_T("background.png"));

}

    void CcpPongView::OnDraw(CDC* dc)
{

    FlickerFreeDC pDC(dc);
    CcpPongDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
        return;
    
    BackgdoundImage.Draw(pDC->GetSafeHdc(), 0, 0);
    ball.getBallImage().Draw(pDC->GetSafeHdc(), ball.position.x, ball.position.y, 25, 25);
    Invalidate();
}

但是当我们再次运行此代码时,当它到达 Draw 函数时,程序会崩溃。

该项目是 Pong(旧游戏),我试图让一个球移动和 2 个球拍,我掌握了背后的所有逻辑,但遗憾的是不知道如何显示它..

请帮我解决这个问题,在任何地方都找不到它......

C++ MFC OnDraw

评论

0赞 IInspectable 8/25/2021
程序不会在不报告故障的情况下崩溃。这是什么?
0赞 Constantine Georgiou 8/25/2021
Invalidate()里面没有意义,它会导致发送另一条消息(映射到 )!并不是说这就是你的程序崩溃的原因......OnDraw()WM_PAINTOnDraw()
0赞 IInspectable 8/25/2021
@con未发送。它被发布(或生成,更确切地说)。从处理程序调用只是实现动画的一种简单方法。输入消息具有更高的优先级,因此呈现代码没有机会放弃输入处理。WM_PAINTInvalidate()WM_PAINT
0赞 Cc4Dayz 8/25/2021
@IInspectable:嘿,崩溃是“表达式:hBitmap == m_hBitmap”,WM_PAINT我很遗憾我不知道它的存在,我会尝试查找它:)ConstantineGeorgiou :嘿,对不起,我在互联网上寻找它,它看起来适合那里,我真的不确定我应该如何在 OnDraw 上做一个循环,如果它甚至需要,或者我是否需要在球类内做循环:\
0赞 IInspectable 8/25/2021
那不是崩溃。这是一个失败的调试断言。该对话框包含有关如何继续的说明

答: 暂无答案