| Код | #define STRICT
#include <windows.h>
BOOL RegClass(WNDPROC, LPCTSTR, UINT); LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
HINSTANCE hInstance; char szMainClass[] = "MainName"; char szTitle[] = "Example";
static HWND hwnd;
static BYTE byBits [] = { 0x51, 0x77, 0x10, 0x00, 0x51, 0x77, 0x10, 0x00, 0x51, 0x77, 0x10, 0x00, 0x51, 0x77, 0x10, 0x00, 0x51, 0x77, 0x10, 0x00 };
static BITMAP bitmap = { 0, 20, 5, 4 , 1, 1 };
int WINAPI WinMain ( HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{ MSG msg; hInstance=hInst; if(!RegClass(WndProc, szMainClass,COLOR_WINDOW)) return FALSE; hwnd = CreateWindow(szMainClass,szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, NULL, NULL, hInstance, NULL); if(!hwnd) { MessageBox(NULL,"Cannot create window","Error",MB_OK); return 0; } ShowWindow(hwnd,nCmdShow); UpdateWindow(hwnd); while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
BOOL RegClass(WNDPROC Proc, LPCTSTR szName, UINT brBackground) { WNDCLASS wc; wc.style = CS_HREDRAW|CS_VREDRAW; wc.lpfnWndProc = Proc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(NULL,IDI_APPLICATION); wc.hCursor = LoadCursor(NULL,IDC_ARROW); wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszMenuName = (LPCTSTR)NULL; wc.lpszClassName = szName; return (RegisterClass(&wc) !=0); } LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; switch(msg) { case WM_CREATE: { return 0; } case WM_PAINT: HBITMAP hBitmap, hBitmap1; HDC hdcMem; DWORD dwSize; POINT ptSize, ptOrg; hdc = BeginPaint(hwnd, &ps); bitmap.bmBits = (LPVOID) byBits; hBitmap = CreateBitmapIndirect (&bitmap); hdcMem = CreateCompatibleDC(hdc); hBitmap1 = (HBITMAP)SelectObject(hdcMem, hBitmap); if(hBitmap1) { SetMapMode(hdcMem, GetMapMode(hdc)); GetObject(hBitmap, sizeof(BITMAP),(LPVOID) &bitmap); ptSize.x = bitmap.bmWidth; ptSize.y = bitmap.bmHeight; DPtoLP(hdc, &ptSize, 1); ptOrg.x = 0; ptOrg.y = 0; DPtoLP(hdcMem, &ptOrg, 1); BitBlt( hdc, 10, 10, ptSize.x, ptSize.y, hdcMem, ptOrg.x, ptOrg.y, SRCCOPY); SelectObject(hdcMem,hBitmap1); } DeleteDC(hdcMem); DeleteObject(hBitmap); EndPaint(hwnd, &ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, msg, wParam,lParam); }
|
растровое изображение теперь выводит, но, думается мне наворотил я тут не мало лишнего. Буду разбираться дальше, спасибо за помощь |