我有一个基于对话框的 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()
我想做的就是将此图像插入到对话框中。
任何想法或展示路径表示赞赏。
最佳答案
您需要重写响应对话框中的 WM_PAINT
消息的 OnPaint
方法。通常您不需要这样做,因为对话框不需要绘制任何内容,它只是让其中包含的控件自行绘制。
将您显示的代码移至 OnPaint 处理程序中。
请勿从您自己的处理程序中调用默认的 OnPaint。
请勿从 OnPaint 处理程序中调用 Invalidate
,否则您将陷入无限循环。
关于c++ - 如何在 MFC 对话框上绘制/创建 GDI+,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14044536/