H
Hokage
Использую MS Visual Studio 2008.
На учебе у нас стоит Builder на сколько я знаю и такой вот код работает, но у меня нет.
Пожалуйста подскажите как вставить BMP картинку без всяких MFC/ATL.
Файл ресурсов:
Код:
На учебе у нас стоит 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;
}