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

时间:2013-11-25 07:15:17

标签: mfc

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没有表现出来。

1 个答案:

答案 0 :(得分:2)

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

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

请参阅http://msdn.microsoft.com/en-us/library/vstudio/b7w5x74z.aspx

  

<强>说明

     

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

     

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

     

SS_BITMAP始终将此样式用于位图。

     

SS_CENTERIMAGE用于将图像置于静态控件中心。如果   图像大于静态控件,它将被剪裁。如果是   小于静态控件,图像周围的空白区域将   用左上角像素的颜色填充   位图。