A
Der Code, den DieSeenDerHerrlichkeit gepostet hat, ist komplett falsch, hier gibt es nichts zu diskutieren. Habe nämlich aus Neugier versucht, zum Laufen zu bekommen...
Dann musste ich es wenig bearbeiten und das ist bei mir rausgekommen (wobei ich nicht weiss, ob das Ergebnis genau das, was DieSeenDerHerrlichkeit habe möchte):
Das ist main.c:
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include "resource.h"
HBITMAP hSkinBmp;
BOOL CALLBACK DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
HDC hdcMem;
switch (uMsg)
{
case WM_INITDIALOG:
{
return TRUE;
}
case WM_CLOSE:
{
EndDialog(hWnd, 0);
return TRUE;
}
case WM_PAINT:
{
hdc = BeginPaint(hWnd, &ps);
hdcMem = CreateCompatibleDC(hdc);
SelectObject(hdcMem, hSkinBmp);
BitBlt(hdc, 0, 0, 200, 100, hdcMem, 0, 0, SRCCOPY);
DeleteDC(hdcMem);
EndPaint(hWnd,&ps);
break;
}
default:
{
break;
}
}
return FALSE;
}
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
hSkinBmp = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_SKIN));
if (NULL == hSkinBmp)
{
MessageBox(NULL, TEXT("cant load bitmap"), TEXT("Error"), MB_OK);
return -1;
}
return DialogBox(hInstance, MAKEINTRESOURCE(DLG_MAIN), NULL, DialogProc);
}
Das ist main.rc:
#include "resource.h"
IDB_SKIN BITMAP DISCARDABLE "skin.bmp"
DLG_MAIN DIALOG DISCARDABLE 100, 100, 200, 100
STYLE WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "abc.w"
FONT 8, "MS Sans Serif"
BEGIN
END
Das ist resource.h:
#include <windows.h>
// ID of Main Dialog
#define DLG_MAIN 102
#define IDB_BITMAP1 101
#define IDB_SKIN 101
Und hier mein Makefile:
all:
mingw32-gcc -c main.c -o main.o -mwindows
windres main.rc -o main_Rc.o
mingw32-gcc main_Rc.o main.o -o main.exe -mwindows
Wie gesagt, der Code läuft, ist aber sicherlich nicht "das Gelbe vom Ei"...