EndPage()功能后程序失败

时间:2020-10-05 14:08:15

标签: c++ printing mfc windows-ce gdi

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

我在下面放置了代码段:

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;

1 个答案:

答案 0 :(得分:1)

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

您需要检查每个API调用的返回值以查看是否失败,然后再检查最后一个错误代码。

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

回复:program fail after calling EndPage() function-该呼叫是否在“紧接之后”失败?喜欢在下面的行吗?是哪条线?