无法加载图像错误代码2

时间:2014-10-08 04:52:20

标签: c++ image runtime-error

我对编程很新,我很难理解作为我的任务的一部分给我的代码。

我正在尝试使用此代码在程序中绘制位图

void Sprite::Draw(Canvas & c)
{
    draw_impl(c);
        c.DrawBitmap(50, 50, 50, 50, "H:\UserData\Desktop\ArcadeGame\ArcadeGame\Images\circle.bmp", 255, 0, 0);

}

我现在已经改变它,所以我使用的是完整路径而不是相对路径。但是错误仍然存​​在。

void WinCanvas::DrawBitmap(int x, int y, int w, int h, std::string filename, int r, int g, int b)
{
    std::wstring stemp = std::wstring(filename.begin(), filename.end());    // convert to wide string

    HBITMAP  hBmp = (HBITMAP)LoadImage(NULL, stemp.c_str(), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE | LR_LOADTRANSPARENT);
    if( hBmp == NULL )
    {
        DWORD err = GetLastError();
            std::wstring errorMsg = L"Failed to LoadImage - '" + stemp + L"', error code (" + std::to_wstring((long long)err) + L")";
        MessageBox(NULL, errorMsg.c_str(), L"WinCanvas::DrawBitmap()", MB_OK);

        PostMessage(m_hWnd, WM_DESTROY, NULL, NULL);    // Post a message to destroy (shutdown) the program
        return;
        .
    }

我不确定我的图片位置来源是否有问题,或者我没有使用正确的整数正确绘制我的位图。

以下是使用的整数的声明

virtual void DrawBitmap(int x, int y, int w, int h, std::string filename, int r=0, int g=0, int b=0);

谢谢大家的帮助。我将代码更改为

c.DrawBitmap(50, 50, 50, 50, "H:\\UserData\\Desktop\\ArcadeGame\\ArcadeGame\\Images\\circle.bmp", 255, 0, 0);

但是,它现在出现错误代码0而不是2.如果我正确读取它,则错误消息表示无法加载字符串字符。

1 个答案:

答案 0 :(得分:0)

错误代码2:ERROR_FILE_NOT_FOUND. 2 (0x2). The system cannot find the file specified.

  • 确保文件存在
  • 在您的路径字符串中使用双斜杠,否则您将转义下一个字符,例如: “H:\\的UserData \\桌面\\ ArcadeGame \\ ArcadeGame \\图像\\ circle.bmp”