如何在MFC对话框上绘制/创建GDI +

时间:2012-12-26 18:21:51

标签: c++ mfc gdi+

我有一个基于Dialog的MFC应用程序。我使用this从资源创建了一个GDI +对象。

MyDlg.cpp:

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

void 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()

我想要做的就是将此图像插入对话框。

感谢任何想法或展示路径。

1 个答案:

答案 0 :(得分:5)

您需要覆盖响应对话框中OnPaint消息的WM_PAINT方法。通常你不需要这样做,因为对话框不需要绘制任何东西,它只是让它包含的控件自己绘制。

将您显示的代码移动到OnPaint处理程序中。

从您自己的处理程序中调用默认的OnPaint。

从OnPaint处理程序中调用Invalidate,否则您将获得无限循环。