我有一个基于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()
我想要做的就是将此图像插入对话框。
感谢任何想法或展示路径。
答案 0 :(得分:5)
您需要覆盖响应对话框中OnPaint
消息的WM_PAINT
方法。通常你不需要这样做,因为对话框不需要绘制任何东西,它只是让它包含的控件自己绘制。
将您显示的代码移动到OnPaint处理程序中。
不从您自己的处理程序中调用默认的OnPaint。
不从OnPaint处理程序中调用Invalidate
,否则您将获得无限循环。