问题描述
我正在使用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,offsets[current]);
Exttextout(hDC,WYDRUK_I_CH_CAPTION_X,offsets[current],NULL,captions[current],3,NULL);
pointer += channelLength;
//int diff = channelLength - new_sign_len;
}
DWORD error = GetLastError();
EndPage(hDC);
}
break;
解决方法
您对GetLastError();
的随机调用没有任何意义。
您需要检查每个API调用的返回值以查看是否失败,然后再检查最后一个错误代码。
此外,您对DWORD error
不做任何事情。它的目的只是为了在Debugger中看到其价值吗?然后有一个更好的方法:将$err
添加到“调试器的监视”窗口中以监视其值。或者更好的方法是,使用$err,hr
获取该错误的字符串表示形式。
回复:program fail after calling EndPage() function
-该呼叫是否在“紧接之后”失败?喜欢在下面的行吗?是哪条线?