【发布时间】:2013-11-25 07:15:17
【问题描述】:
CImage image;
image.Load(L"e:\\final.png");
int width = image.GetWidth();
int height = image.GetHeight();
SetWindowPos(NULL, 0, 0, width, height, SWP_NOZORDER | SWP_NOMOVE);
HBITMAP hBmp = image.Detach();
CStatic* pWnd = (CStatic*)GetDlgItem(IDC_STATIC);
pWnd->SetBitmap(hBmp);
pWnd->SetWindowPos(NULL, 0, 0, width, height, SWP_NOACTIVATE | SWP_NOZORDER);
将上述代码添加到 mfc 生成的对话框的 initdialog 例程中。但是png没有显示。
【问题讨论】:
-
为什么要从 CWnd* 转换为 CStatic?之前创建了一个 CStatic 实例?所以它会将其返回为 CWnd* 吗?或者你强迫它变成CStatic*?我认为不建议使用新的转换方式(dynamic_cast、static_cast、reinterpret_cast),寻找完整的示例这可能会导致您找到解决方案,因为我认为这是样式问题,您是否使用了这些样式 SS_BITMAP|SS_CENTERIMAGE,msdn.microsoft.com/en-us/library/vstudio/b7w5x74z.aspx跨度>
-
@Ahmedsafan:这是因为我没有为控件设置位图样式。谢谢你的回答。请发布它作为答案,所以我可以选择它。
-
对控件使用“真实”ID,而不是
IDC_STATIC -
@Jichao:我已添加为答案,等你标记为正确答案。
标签: mfc