Автор Тема: GraphicsDrawImageRect в дочернем окне  (Прочитано 995 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн angro [?]

  • Новичок
  • *
  • Сообщений: 21
  • Репутация: 1
    • Награды
_GDIPlus_GraphicsDrawImageRect не работает в окне со стилем $WS_CHILD
Картинка находиться в переменной.
Как побороть это ?

Русское сообщество AutoIt

GraphicsDrawImageRect в дочернем окне
« Отправлен: Май 28, 2018, 13:10:00 »

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3975
  • Репутация: 1056
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: GraphicsDrawImageRect в дочернем окне
« Ответ #1, Отправлен: Май 29, 2018, 14:47:35 »
angro  [?]
Цитировать
_GDIPlus_GraphicsDrawImageRect не работает в окне со стилем $WS_CHILD
Не подтверждается
(нажмите для показа/скрытия)

Оффлайн angro [?]

  • Новичок
  • *
  • Сообщений: 21

  • Автор темы
  • Репутация: 1
    • Награды
Re: GraphicsDrawImageRect в дочернем окне
« Ответ #2, Отправлен: Май 31, 2018, 15:35:19 »
Не работает с чистым $WS_CHILD и в некоторых вариантах не работает $WS_EX_COMPOSITED как в дочернем так и в основном окне. С таким стилем работает в примере BitOR($WS_POPUP, $WS_CHILD), логику не могу проследить, думал дело в $GUI_SS_DEFAULT_GUI

Код: AutoIt [Выделить]
#include <ScreenCapture.au3>
#include <GuiConstants.au3>

$Main = GUICreate('', 500, 500, Default, Default, $WS_POPUPWINDOW);, $WS_EX_COMPOSITED)
$Child1 = GUICreate('', 150, 150, Default, Default, BitOR($GUI_SS_DEFAULT_GUI, $WS_CHILD), Default, $Main)

GUISetState(@SW_SHOW, $Main)
GUISetState(@SW_SHOW, $Child1)

GUISetBkColor(0xABABAB, $Child1)

_GDIPlus_Startup()
$hBmp = _ScreenCapture_CaptureWnd("", _WinAPI_GetDesktopWindow(), 1, 1, 128, 128)
$hImg = _GDIPlus_BitmapCreateFromHBITMAP($hBmp)
$hGraph = _GDIPlus_GraphicsCreateFromHWND($Child1)
_GDIPlus_GraphicsDrawImageRect($hGraph, $hImg, 5, 5, 128, 128)


Do
Until GUIGetMsg() = -3


_WinAPI_DeleteObject($hBmp)
_GDIPlus_ImageDispose($hImg)
_GDIPlus_GraphicsDispose($hGraph)
_GDIPlus_Shutdown()
 


К сожалению в проекте вариант BitOR($WS_POPUP, $WS_CHILD) ведёт себя как не дочернее окно, логика такого кода не понятна, поэтому считаю такое решение не верным.
« Последнее редактирование: Май 31, 2018, 15:52:19 от angro »

Онлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 407
  • Репутация: 94
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: GraphicsDrawImageRect в дочернем окне
« Ответ #3, Отправлен: Май 31, 2018, 17:42:11 »
angro  [?]
Цитировать
К сожалению в проекте вариант BitOR($WS_POPUP, $WS_CHILD) ведёт себя как не дочернее окно

Цитата: Справка


Добавлено: Май 31, 2018, 18:30:33
Код: AutoIt [Выделить]
#include <ScreenCapture.au3>
#include <GUIConstants.au3>

$hParent = GUICreate("", 500, 500, -1, -1, $WS_POPUPWINDOW)
$hChild = GUICreate("", 150, 150, 0, 0, BitOR($WS_VISIBLE, $WS_CHILD), -1, $hParent)
GUISetBkColor(0xABABAB)
GUISwitch($hParent)
GUISetState()

_GDIPlus_Startup()
$hBmp = _ScreenCapture_CaptureWnd("", _WinAPI_GetDesktopWindow(), 1, 1, 128, 128)
$hImg = _GDIPlus_BitmapCreateFromHBITMAP($hBmp)
_WinAPI_DeleteObject($hBmp)
$hGraph = _GDIPlus_GraphicsCreateFromHWND($hChild)
_GDIPlus_GraphicsDrawImageRect($hGraph, $hImg, 5, 5, 128, 128)

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

_GDIPlus_ImageDispose($hImg)
_GDIPlus_GraphicsDispose($hGraph)
_GDIPlus_Shutdown()



Добавлено: Май 31, 2018, 18:45:35
Если вы не заметили то проблема в позиции дочернего окна
« Последнее редактирование: Май 31, 2018, 18:45:35 от Tempo, Причина: Объединение сообщений »

Русское сообщество AutoIt

Re: GraphicsDrawImageRect в дочернем окне
« Ответ #3 Отправлен: Май 31, 2018, 17:42:11 »

Оффлайн angro [?]

  • Новичок
  • *
  • Сообщений: 21

  • Автор темы
  • Репутация: 1
    • Награды
Re: GraphicsDrawImageRect в дочернем окне
« Ответ #4, Отправлен: Май 31, 2018, 22:42:41 »
В моём примере нет проблем в позиции дочернего окна.
BitOR($WS_VISIBLE, $WS_CHILD) в проекте не создаёт окна совсем.
BitOR($WS_POPUP, $WS_CHILD) не совместим ?, так почему работает в примере ?

Онлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 407
  • Репутация: 94
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: GraphicsDrawImageRect в дочернем окне
« Ответ #5, Отправлен: Май 31, 2018, 22:55:57 »
angro, вы пробовали запустить приложенный код?


Добавлено: Май 31, 2018, 23:23:09
angro  [?]
Цитировать
BitOR($WS_POPUP, $WS_CHILD) не совместим ?, так почему работает в примере ?
angro  [?]
Цитировать
вариант BitOR($WS_POPUP, $WS_CHILD) ведёт себя как не дочернее окно
« Последнее редактирование: Май 31, 2018, 23:23:09 от Tempo, Причина: Объединение сообщений »

Русское сообщество AutoIt

Re: GraphicsDrawImageRect в дочернем окне
« Ответ #5 Отправлен: Май 31, 2018, 22:55:57 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
4 Ответов
4543 Просмотров
Последний ответ Июнь 16, 2010, 13:40:57
от Noober
2 Ответов
2395 Просмотров
Последний ответ Сентябрь 25, 2011, 00:30:58
от agikon
30 Ответов
7371 Просмотров
Последний ответ Сентябрь 26, 2011, 20:26:27
от agikon
7 Ответов
2853 Просмотров
Последний ответ Февраль 28, 2012, 23:39:31
от CreatoR
0 Ответов
1474 Просмотров
Последний ответ Февраль 28, 2012, 22:55:49
от CreatoR
4 Ответов
2192 Просмотров
Последний ответ Март 05, 2014, 14:04:11
от Yuriy
0 Ответов
861 Просмотров
Последний ответ Апрель 11, 2014, 20:29:53
от firex
0 Ответов
1127 Просмотров
Последний ответ Октябрь 01, 2014, 12:49:33
от vlv993
1 Ответов
965 Просмотров
Последний ответ Май 08, 2015, 23:39:04
от joiner
2 Ответов
1270 Просмотров
Последний ответ Июль 17, 2015, 17:34:03
от Medic84