什么';将png加载到mfc静态图片控件的代码有什么问题?

什么';将png加载到mfc静态图片控件的代码有什么问题?,mfc,Mfc,将上述代码添加到mfc生成的对话框的initdialog例程中。但是png没有显示 正如我在评论中所建议的,@Jichao报道的那样,这是正确的解决方案 看看完整的例子,这可能会导致你的解决方案,因为我认为这是窗口风格的问题。您应该在静态控件资源定义中包含SS_BITMAP | SS_CENTERIMAGE的样式 看 备注 位图将在静态控件中自动绘制。通过 默认情况下,将在左上角和静态 控件的大小将调整为位图的大小 可以使用各种窗口和静态控件样式,包括: SS\u位图位图始终使用此样式 SS_C

将上述代码添加到mfc生成的对话框的initdialog例程中。但是png没有显示

正如我在评论中所建议的,@Jichao报道的那样,这是正确的解决方案

看看完整的例子,这可能会导致你的解决方案,因为我认为这是窗口风格的问题。您应该在静态控件资源定义中包含
SS_BITMAP | SS_CENTERIMAGE
的样式

备注

位图将在静态控件中自动绘制。通过 默认情况下,将在左上角和静态 控件的大小将调整为位图的大小

可以使用各种窗口和静态控件样式,包括:

SS\u位图
位图始终使用此样式

SS_CENTERIMAGE
用于在静态控件中将图像居中。如果 图像大于静态控件,将对其进行剪裁。如果是 小于静态控件,图像周围的空白空间将 由图像左上角像素的颜色填充 位图


看看这个答案,这也是为什么你要从CWnd*到CStatic??以前是否创建过一个CStatic实例??那么它将以CWnd*的形式返回它?还是你强迫它变成CStatic*?我认为不建议使用新的强制转换方式(动态强制转换、静态强制转换、重新解释强制转换),请查看完整示例,这可能会导致您找到解决方案,因为我认为这是样式问题,您是否使用了这些样式SS|u BITMAP | SS|u CENTERIMAGE,@Ahmedsafan:这是因为我没有将位图样式设置为控件。谢谢你的回答。请把它贴出来作为答案,这样我就可以选择它了。用一个“真实”的ID作为控件,而不是
IDC\u STATIC
@Jichao:我已经添加了它作为答案,等待你把它标记为正确答案。
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);