1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

Вывод графики в инсталлятор C++

Тема в разделе "C/C++", создана пользователем Tidro, 4 фев 2015.

  1. Пользователь

    Регистрация:
    13 май 2014
    Сообщения:
    13
    Симпатии:
    4
    Может кто написать/выложить пример на отрисовку графики в окно инсталлятора со смещением по координатам (достаточно пикселя)
    Пример:botva,slideshow
     
  2. Он где то тут Администратор

    Регистрация:
    15 июн 2011
    Сообщения:
    754
    Симпатии:
    500
    А при чем тут С++?
     
  3. Пользователь

    Регистрация:
    13 май 2014
    Сообщения:
    13
    Симпатии:
    4
    Через библиотеку нужно
    Можно конечно получить положение окна относительно экрана и сдвинуть по координатам, нужно еще проверять свернут ли инсталлятор, наверняка есть другое решение
    Еще можно попробовать прицепится к хэндлу
    Код (Text):
    void foo(HWND hWnd){
         if (IsWindow(hWnd))
         {
           ShowWindow(hWnd, SW_HIDE);
         }
    }
     
    Последнее редактирование: 5 фев 2015
  4. Безумный Лорд Администратор

    Регистрация:
    15 июн 2011
    Сообщения:
    746
    Симпатии:
    1.094
    Пол:
    Мужской
    Tidro, что конкретно то требуется? А то отрисовка графики понятие растяжимое.
     
  5. Пользователь

    Регистрация:
    13 май 2014
    Сообщения:
    13
    Симпатии:
    4
    Отрисовка квадрата/прямоугольника например:
    Код (Text):
         if (IsWindow(hWnd))
         {
            HDC hDC;
        hDC = GetWindowDC(hWnd);
            Rectangle(hDC, 100, 100, 200, 200);
         }
    Только его надо перерисовывать, можно ли как то этого избежать?
    Иначе при сворачивание и разворачивание он исчезает или часть отрисовки пропадает
    Было из-за списка компонентов :D
    Что бы удалить пред рисовки InvalidateRect(hWnd,NULL,RDW_ERASE); есть способ лучше?
     
    Последнее редактирование: 5 фев 2015
  6. Старожил Проверенный

    Регистрация:
    28 июн 2011
    Сообщения:
    169
    Симпатии:
    226
    Пол:
    Мужской
    Wm_paint надо перехватывать. SetWindowLong\GWL_WNDPROC - если окно чужое.

    Вот пример отрисовки изображения:
    Код (Text):
    case WM_CREATE:
            {
                hbm = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_IMAGE));

            }
            break;

        case WM_PAINT:
            {
                hdc = BeginPaint(hWnd, &ps);

                Rectangle(hdc, 10, 10, 110, 110);

                BITMAP bm;
                HDC hdcMem = CreateCompatibleDC(hdc);
                HBITMAP hbmOld = (HBITMAP)SelectObject(hdcMem, hbm);
                GetObject(hbm, sizeof(bm), &bm);
                BitBlt(hdc, 200, 200, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY);
                SelectObject(hdcMem, hbmOld);
                DeleteDC(hdcMem);

                EndPaint(hWnd, &ps);
            }
            break;
     

    Вложения:

    Adil, Tidro и sergey3695 нравится это.
  7. Безумный Лорд Администратор

    Регистрация:
    15 июн 2011
    Сообщения:
    746
    Симпатии:
    1.094
    Пол:
    Мужской
    При сворачивании/разворачивании форме посылается сообщение WM_PAINT, так что в любом случае нужно перерисовывать.
    При собственной отрисовке нужно обрабатывать сообщение WM_PAINT, как это сделать David.D.Rocco уже показал.
    Нет, InvalidateRect стандартный способ уведомить форму, о том что ей нужно выполнить перерисовку. Другое дело, что можно указывать только нужную область для очистки, а не всю форму.
     

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