0

このコードを使用してIplImageをpictureBoxに入れています。コメント部分が機能しないため、コードの最初の3行を試してみましたが、3行目はコンパイル時に3つのエラーを返します:
1>UIThread.obj : error LNK2028: 未解決のトークン (0A00030D) "extern "C" struct HDC__ * stdcall GetDC(struct HWND *)" (?GetDC@@$$J14YGPAUHDC_ @@PAUHWND _@@@Z) が関数 "private: void clrcall UIThread: で参照されています: :Form1::BtnAcquire_Click(class System::Object ^,class System::EventArgs ^)" (?BtnAcquire_Click@Form1@UIThread@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) 1>UIThread.obj : エラー LNK2019: 未解決の外部シンボル "extern "C" struct HDC * stdcall GetDC(struct HWND *)"(?GetDC@@$$J14YGPAUHDC_ @@PAUHWND_@@@Z) 関数 "private: void __clrcall UIThread::Form1::BtnAcquire_Click(class System::Object ^,class System::EventArgs ^)" で参照 (?BtnAcquire_Click@Form1@UIThread@@$$FA$ AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) 1>C:\Users\Andrea Parola\Documents\Visual Studio 2008\Projects\UIThread\Debug\UIThread.exe: 致命的なエラー LNK1120: 2 つの未解決の外部

どうすれば HWND を HDC に変換できますか?

            HANDLE handle = (HANDLE)this->PbBoxImg->Handle.ToInt32();
    HWND hWnd=*(HWND*)&handle;
    HDC hdc = GetDC(hWnd);
    //HDC hdc = picturebox.GetDC()->m_hDC;
    char m_chBmpBuf[2048];
    BITMAPINFO *m_pBmpInfo =0;
    m_pBmpInfo = (BITMAPINFO *)m_chBmpBuf;
    m_pBmpInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
    m_pBmpInfo->bmiHeader.biWidth = img->width;
    m_pBmpInfo->bmiHeader.biHeight = -img->height;
    m_pBmpInfo->bmiHeader.biBitCount= 24;

    m_pBmpInfo->bmiHeader.biPlanes = 1;
    m_pBmpInfo->bmiHeader.biCompression = BI_RGB;
    m_pBmpInfo->bmiHeader.biSizeImage = 0;
    m_pBmpInfo->bmiHeader.biXPelsPerMeter = 0;
    m_pBmpInfo->bmiHeader.biYPelsPerMeter = 0;
    m_pBmpInfo->bmiHeader.biClrUsed = 0;
    m_pBmpInfo->bmiHeader.biClrImportant = 0;
    StretchDIBits(hdc, 0, 0, img->width, img->height, 
                       0, 0, img->width, img->height, 
                       img->imageData, m_pBmpInfo,
                       DIB_RGB_COLORS, SRCCOPY);
4

1 に答える 1

2

プロジェクト、プロパティ、リンカー、入力を右クリックします。[追加の依存関係] 設定で $(NoInherit) を削除して、リンカーが標準の Windows インポート ライブラリをリンクするように指示されるようにします。GetDC() を提供する user32.lib を含みます。

これは、あなたが変わったコードを書いているというヒントと考えてください。Winforms アプリで System::Drawing を使用する必要があります。StretchDIBits() は Graphics::DrawImage() でカバーされています

于 2012-01-14T13:55:52.170 に答える