2

ダイアログベースの MFC アプリケーションがあります。thisを使用して、リソースから GDI+ オブジェクトを作成しました。

MyDlg.cpp:

BOOL CSetupDlg::OnInitDialog()
{
    Gdiplus::GdiplusStartupInput gdiplusStartupInput;
    Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
        ...
}

ボイド MyFunction():

CGdiPlusBitmapResource* pBitmap = new CGdiPlusBitmapResource;
if (pBitmap->Load(ID_SPL_LG))
{
    CPaintDC dc(this);
    Gdiplus::Graphics graphics(dc);
    graphics.DrawImage(*pBitmap, 0, 0);
    //It is loaded . I checked with messagebox and its in here.
}
Invalidate(); //Not sure if necessary.

現在、フォーム/ダイアログには何も表示されていません。画像は挿入も添付もされていません。

今、この画像をダイアログに追加するためにいくつかのことを試みましたが、できません。

私が試したのはGDIObject.Create()CStatic.Create()そしてPictureControl.Create()

私がしたいのは、この画像をダイアログに挿入することだけです。

任意のアイデアまたはパスを示していただければ幸いです。

4

1 に答える 1

5

ダイアログ内のメッセージにOnPaint応答するメソッドをオーバーライドする必要があります。WM_PAINT通常、ダイアログは何も描画する必要がないため、これを行う必要はありません。ダイアログに含まれるコントロールが自分自身を描画できるようにするだけです。

表示するコードを OnPaint ハンドラーに移動します。

独自のハンドラからデフォルトの OnPaint を呼び出さないでください。

OnPaint ハンドラ内から呼び出さないでください。無限ループが発生します。Invalidate

于 2012-12-26T18:32:09.383 に答える