我使用Visual Studio 2008,在资源 View 中加载了PNG文件,并将其分配为IDB_BANG_PNG。

优化校准称为IDC_STATIC15。

我在尝试将PNG加载到图片控件中时遇到了麻烦。

LRESULT CALLBACK DialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{

// Way of loading a bmp with a mask perhaps?  Or a PNG file programatically?

static HBRUSH hBrushStatic;
HBITMAP hBmp = LoadBitmap(hDlg,MAKEINTRESOURCE(IDB_BANG_PNG));

switch(message)
{
case WM_INITDIALOG:
    CheckDlgButton(hDlg, IDC_CHECK, FALSE);
    EnableWindow(GetDlgItem(hDlg, IDOK), FALSE);
    // Bitmap version is IDB_BANG, PNG is at IDB_BANG_PNG
    // IDC_STATIC15 is the picture frame
    HWND item = GetDlgItem(hDlg,IDC_STATIC15);
    SendMessage(item,STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)hBmp);
    return TRUE;

// .... snip

对于Win32/GUI开发,我很天真,做一个快速的项目并卡住了她,任何帮助都值得赞赏。

最佳答案

这可以使用GDI+bitmap class起作用:

Bitmap oBmp(L"D:\\test.png");
HBITMAP hBmp;
oBmp.GetHBITMAP(0, &hBmp);
SendMessage(item,STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)hBmp);

请注意,您的控件需要SS_BITMAP样式。不要忘记包括gdiplus.h及其库。您需要初始化(GdiplusStartup)并关闭GDI +。
释放所有系统资源就在您身上。

09-05 23:30