• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Растровые Изображения.нужна Помощь.

  • Автор темы kiki-2
  • Дата начала
K

kiki-2

Есть задание, в visual c++ написать программу, которая делит окно на 4 ровные части и выводит в каждой четверти растовое изображение, растягивая его на весь выделенный прямоугольник.При измении размеров окна, размеры изображения должны корректироваться.

Вопрос:Как сделать так чтоб размеры окна и изображения корректировались,и как сразу 4 отобразить?
Вот у Меня есть код что 1 отображало, но размеры не меняються...

Заранее благодарю за ответ.


<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"Код"</div></div><div class="sp-body"><div class="sp-content">LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{

PAINTSTRUCT ps;
HDC hdc;
static int caption, menu, border;
static HDC memBit;
static HBITMAP hBitmap;
static BITMAP bm;


switch (message)

{
case WM_CREATE:

caption=GetSystemMetrics(SM_CYCAPTION);
menu=GetSystemMetrics(SM_CYMENU);
border=GetSystemMetrics(SM_CXFIXEDFRAME);
hBitmap=(HBITMAP)LoadImage(NULL, _T("test.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE | LR_CREATEDIBSECTION);
if (hBitmap==NULL)
{
MessageBox(hWnd,_T("Файл не найден"),_T("Загрузка изоображения"),MB_OK | MB_ICONHAND);
DestroyWindow(hWnd);
return 1;
}
GetObject(hBitmap, sizeof(bm), &bm);
hdc=GetDC(hWnd);
memBit=CreateCompatibleDC(hdc);
SelectObject(memBit, hBitmap);
ReleaseDC(hWnd, hdc);
break;

case WM_SIZE:
MoveWindow(hWnd,100,50,bm.bmWidth+2*border, bm.bmHeight+caption+menu+border, TRUE);
break;


case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDM_EXIT: DestroyWindow(hWnd); break;
default: return DefWindowProc(hWnd, message, wParam, lParam);
}
break;


case WM_PAINT:
hdc=BeginPaint(hWnd, &ps);
BitBlt(hdc,0,0,bm.bmWidth, bm.bmHeight, memBit, 0, 0,SRCCOPY);
hdc=BeginPaint(hWnd, &ps);
BitBlt(hdc,0,0,bm.bmWidth, bm.bmHeight, memBit, 0, 0,SRCCOPY);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY: PostQuitMessage(0);
break;
default: return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
 
K

kiki-2

Сделал через StretchBlt, вот только не знаю как размер окна узнать(((
 
R

rrrFer

WinAPI использовать обязательно ? - могу подсказать как это сделать с Qt - там весьма просто, кидаешь на виджет раскладку типа таблицы, на нее свои 4 картинки.
Чтобы размеры их автоматически изменялись есть специальные флажки в Layout
 
Мы в соцсетях:

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