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

Тема в разделе "MS Visual C++", создана пользователем kiki-2, 25 янв 2013.

  1. kiki-2

    kiki-2 Member

    Регистрация:
    20 янв 2013
    Сообщения:
    5
    Симпатии:
    0
    Есть задание, в 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;
    }
     
  2. kiki-2

    kiki-2 Member

    Регистрация:
    20 янв 2013
    Сообщения:
    5
    Симпатии:
    0
    Сделал через StretchBlt, вот только не знаю как размер окна узнать(((
     
  3. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

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

Поделиться этой страницей