Как отобразить Bmp картинку

  • Автор темы Автор темы Hokage
  • Дата начала Дата начала
H

Hokage

Использую MS Visual Studio 2008.
На учебе у нас стоит Builder на сколько я знаю и такой вот код работает, но у меня нет.
Пожалуйста подскажите как вставить BMP картинку без всяких MFC/ATL.
Файл ресурсов:
Код:
MYBP1				  BITMAP				 "bitmap1.bmp"
Код:
Код:
// Вывод растра



#include <Windows.h>

LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM,

LPARAM);

char szWinName[]="МоеОкно";	  // Имя класса окна

HBITMAP hBit1;					// Дескриптор растра



int WINAPI WinMain(HINSTANCE hThisInst,

HINSTANCE hPrevInst,

LPSTR lpszArgs,

int nWinMode)

{

HWND hwnd;

MSG msg;

WNDCLASS wcl;			  // Определить класс окна

wcl.hInstance=hThisInst;	// Дескриптор приложения

wcl.lpszClassName=szWinName;// Имя класса окна

wcl.lpfnWndProc=WindowFunc; // Функция окна

wcl.style=0;				// Стиль по умолчанию

wcl.hIcon=LoadIcon(hThisInst,"MYICON");	// Иконка

wcl.hCursor=LoadCursor(hThisInst,"MYCURSOR");//Курс.

wcl.lpszMenuName=NULL;				  // Без меню

wcl.cbClsExtra=0;  // Без дополнительной информации

wcl.cbWndExtra=0;						

wcl.hbrBackground=

(HBRUSH)GetStockObject(WHITE_BRUSH); //Белый фон

if(!RegisterClass(&wcl)) // Регистрируем класс окна

return 0;

hwnd=CreateWindow(szWinName,		 // Создать окно

"Вывод растра",

WS_OVERLAPPEDWINDOW, // Стиль окна

CW_USEDEFAULT,	 // x-координата

CW_USEDEFAULT,	 // y-координата

CW_USEDEFAULT,	 // Ширина

CW_USEDEFAULT,	 // Высота

HWND_DESKTOP, // Нет родител. окна

NULL,			 // Нет меню

hThisInst,// Дескриптор приложения

NULL); // Нет дополнит. аргументов

ShowWindow (hwnd, nWinMode);	  // Показать окно 

UpdateWindow (hwnd);			  // и перерисовать

hBit1=LoadBitmap(hThisInst,"MYBP1"); // Загр. растр

while(GetMessage(&msg,NULL,0,0))  // Запустить цикл

{						  // обработки сообщений

TranslateMessage(&msg); // Разреш. исп. клавиатуры

DispatchMessage (&msg); // Вернуть управл. Windows

}

return msg.wParam;

}



// Следующая функция вызывается операционной

// системой Windows и получает в качестве

// параметров сообщения из очереди сообщений

// данного приложения

LRESULT CALLBACK WindowFunc(HWND hwnd,

UINT message,

WPARAM wParam,

LPARAM lParam)

{

HDC DC;

HDC memDC;

switch(message)

{

case WM_LBUTTONDOWN:

MessageBox(hwnd,"123","wooork",MB_OK);

DC=GetDC(hwnd);				// Получить DC

memDC=CreateCompatibleDC(DC); // Совместимый DC

SelectObject(memDC,hBit1);

BitBlt(DC,LOWORD(lParam),HIWORD(lParam),48,48,

memDC,0,0,SRCCOPY);	 // Вывод растра

ReleaseDC(hwnd,DC);	 // Освободить DC

DeleteDC(memDC);		// Освободить DC памяти

break;																									

case WM_DESTROY:		 // Завершение программы

DeleteObject(hBit1); // Удалить растр из памяти

PostQuitMessage (0);

break;

default:

// Все сообщения, не обрабатываемые в		

// данной функции, направляются на обработку

// по умолчанию

return DefWindowProc(hwnd,message,

wParam,lParam);

}

return 0;

}
 
Если этот код в Билдере работает, то проверьте hBit1 на NULL перед отображением. Скорее всего косяк с ресурсами и картинка просто не загружается.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!