EndGame() 函数后程序失败

Posted

技术标签:

【中文标题】EndGame() 函数后程序失败【英文标题】:Program fail after EndPage() fucntion 【发布时间】:2021-01-20 10:01:22 【问题描述】:

我正在使用 C++ MFC 框架。 不幸的是,我遇到了 EndPage() 函数的一些问题。 在调用 EndPage() 函数后,我调试了代码并让该程序失败。我不知道为什么

我把代码sn-p放在下面:

void Druk::DrawECG(short * pointer, int channel_nr, int channelLength)


pointer += startSample;
switch (mode)

case 1:
    int offsets[12];
    
    for (int z = 0; z < 2; z++)
        
    
        StartPage(hDC);
    //  pointer = 0;
        
        DrawGrid(WYDRUK_I_START_X, WYDRUK_I_START_Y, WYDRUK_I_LIMIT_X, WYDRUK_I_LIMIT_Y, PEN_WIDTH);
        DrawScaleVertic(150, 300);
        SelectObject(hDC, hFontVertic);
        
        for (int i = 0; i < 12; i++)
        
            offsets[i] = WYDRUK_I_OFFSET + i*WYDRUK_I_SPACE;
        
        pointer += z*channel_nr*new_sign_len;
        //pointer += startSample;
        for (int i = 0; i < channel_nr; i++)
        
            //pointer = memECG[channels[i]] + startSample;  
            int current = channels[i];
            //new_sign_len = new_sign_len - startSample;
            rysujEKG_Vertical(pointer, WYDRUK_I_START_X, WYDRUK_I_LIMIT_X, offsets[current]);
            ExtTextOut(hDC, WYDRUK_I_CH_CAPTION_X, offsets[current], NULL, NULL, captions[current], 3, NULL);
            pointer += channelLength;
            //int diff = channelLength - new_sign_len;
        
        DWORD error = GetLastError();
        EndPage(hDC);
        
    
    break;

【问题讨论】:

我在调用 EndPage() 函数后调试了代码并导致程序失败 -- “程序失败”到底是什么意思?如果有错误,请贴出错误信息、错误号等。 【参考方案1】:

您对GetLastError(); 的随机调用没有意义。

你需要检查每个 API 调用的返回值,看看它是否失败,那么你应该检查最后一个错误代码。

另外,您不会对DWORD error 做任何事情。它的目的只是为了在 Debugger 中看到它的价值吗?然后有一个更好的方法:将$err 添加到您的调试器的Watch 窗口以监控其值。或者更好的是,使用$err,hr 获取该错误的字符串表示形式。

回复:program fail after calling EndPage() function - 是不是“在”那个电话“之后”失败了?就像在下一行?是哪条线?

【讨论】:

以上是关于EndGame() 函数后程序失败的主要内容,如果未能解决你的问题,请参考以下文章

出现新场景后,SKScene 在背景中挥之不去

Kafka Streams开发入门

如何在 Java 中从 C DLL 加载和使用结构和函数?

开源程序员绝望毁库跑路的背后

Java坦克大战 跟学韩顺平老师视频开发

如何通过 JavaScript 插入 HTML 元素? [复制]