Копирование экрана

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

atavin-ta, я не хочу ни у кого спрашивать. Ты факты можешь привести? Собственно, даже фактов мне твоих не нужно, я знаю правильный ответ - это функция VCL. Просто когда бросаешься словами "Учи API" нужно быть уверенным в свои словах, чтобы не ударить лицов в грязь. А если оказался не прав после такого, то не мешало бы извиниться.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

Тебя что, не удовлетворяет ссылка на книгу? А ответа ты не знаешь.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Нет, не удовлетворяет. Мне нужны факты.

Кстати, ссылку ты так и не дал. Дай мне ссылку на электронный вариант его книги, где используется эта функция. Я тебе говорю, ты её путаешь с какой другой функцией. А ты вместо того, чтобы доказать свою правоту или сознаться в том, что ошибся, съезжаешь с темы.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

Чарлз Петзолд. Программирование для Windows 95. Это и есть факты. А вот вопрос, на который ты не ответишь: зачем вцлу вообще возиться с контекстом, если на поверхности вцл-компонентов рисуют только методами? То есть внутри процедура прорисовки конгечно использует контекст. Но нафига его передавать самой проге?
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

&quot писал(а):Чарлз Петзолд. Программирование для Windows 95. Это и есть факты.
Это не факт, это слова. Ссылку на книгу мне и номер страницы, на которой это написано.

Я тоже могу сказать, что Пифагор писал о времени жизни CORBA объектов, но без доказательства мои слова не будет стоит и ломанного гроша, так же, как и твои.
&quot писал(а):А вот вопрос, на который ты не ответишь: зачем вцлу вообще возиться с контекстом, если на поверхности вцл-компонентов рисуют только методами?
То есть интеграцию с Win API ты отвергаешь на корню? Представь, что у тебя есть сторонняя библиотека, на вход которой ты должен передать DC. Если размышлять, как ты, то эту библиотеку в Borland C++ использовать не получится, так как средствами VCL контекст не получить. В топку такой компилятор, скажу тебе по секрету.

Кстати, метод GetDeviceContext есть, кажется, у VCL-еского TWinControl. Ты, наверное, очень удивишься, когда увидишь что именно он возвращает... так как возвращает он HDC.

Я ответил на твой вопрос?
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

А HDC разве не контекст? Но зачем он нужен вцлу? И у меня вызывается не метод, а функция, не входящая в класс.
&quot писал(а):То есть интеграцию с Win API ты отвергаешь на корню? Представь, что у тебя есть сторонняя библиотека, на вход которой ты должен передать DC. Если размышлять, как ты, то эту библиотеку в Borland C++ использовать не получится, так как средствами VCL контекст не получить. В топку такой компилятор, скажу тебе по секрету.
Бред. Любая апишная функция создания контекса, вызванная с полем Handle вцл-компонента в качестве параметра типа HWND, даст контекст. Зачем ещё метод-обролочка? Без неё проще.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

&quot писал(а):А HDC разве не контекст? Но зачем он нужен вцлу? И у меня вызывается не метод, а функция, не входящая в класс
Я понимаю, что это метод. Я тебе только указал пример, когда VCL методы возвращают контекст в ответ на то вот эти твои слова:

А вот вопрос, на который ты не ответишь: зачем вцлу вообще возиться с контекстом, если на поверхности вцл-компонентов рисуют только методами?
&quot писал(а):Бред. Любая апишная функция создания контекста, вызванная с полем Handle вцл-компонента в качестве параметра типа HWND даст контекст.
Согласен, бред. Бред в твоей интерпретации.

Я повторяю постановку задачи. Представь, что у тебя есть сторонняя библиотека, из которой выставлена наружу функция, принимающая HDC. Если бы VCL методы не могли возвращать контекст, то такую библиотеку мы бы не смогли использовать в Builder/Delphi. Тебе не кажется, что это ограничение надуманным?

Я сторонник идеи того, что любая библиотека-враппер-для-Win-API (будь то MFC, ATL/WTL, VCL, не важно) должна уметь возвращать raw примитивы самой Win API для того, чтобы не накладывать подобные необдуманные ограничения. Все подобные библиотеки, которые мне известны следуют этому принципу и получить их методами, к примеру HDC, не является проблемой.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

У любого вцл обекта есть открытое поле для хранения дискриптора окна данного компонента. Этот хэндл можно непосредственно скормить апи. А любой метод, работающий с контекстом - оболочка для точно такой же апишной функции. Но если есть сама функция, то зачем нужен такой метод? Кроме того, существование метода-оболочки доказывает существование апишного аналога, так как получить контекст самостоятельно вцл не способен.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

atavin-ta писал(а):У любого вцл обекта есть открытое поле для хранения дискриптора окна данного компонента. Этот хэндл можно непосредственно скормить апи. А любой метод, работающий с контектом - оболочка для точно такой же апишной функции. Но если есть сама функция, то зачем нужен такой метод? Кроме того, существование метода-оболочки доказывает существование апишного аналога, так как получить контекст самостоятельно вцл не способен.
Прочитал и вспомнил:

Если головоломка, которую вы разгадали перед тем, как вы разгадали эту, была труднее, чем головоломка, которую вы разгадали после того, как вы разгадали головоломку, которую вы разгадали перед тем, как вы разгадали эту, то была ли головоломка, которую вы разгадали перед тем, как разгадали эту, труднее, чем эта?
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

&quot писал(а):Прочитал и вспомнил:

Если головоломка, которую вы разгадали перед тем, как вы разгадали эту, была труднее, чем головоломка, которую вы разгадали после того, как вы разгадали головоломку, которую вы разгадали перед тем, как вы разгадали эту, то была ли головоломка, которую вы разгадали перед тем, как разгадали эту, труднее, чем эта?
Ты что воще?
Romeo писал(а): Если бы VCL методы не могли возвращать контекст, то такую библиотеку мы бы не смогли использовать в Builder/Delphi. Тебе не кажется, что это ограничение надуманным?
Где ты вообще увидел ограничение? Бери хэндл и никаких гвоздёв. Кроме того, рисование с помощью апи на вцле - источник проблем, так как вцл имеет собственную процедуру прорисовки, которая точно не договрится ни с какой библиотекой. Если уж очень хочется, то создай потомка вцл класса, перегрузи метод прорисовки и из него вызови все нужные библиотеки.
&quot писал(а):Я понимаю, что это метод. Я тебе только указал пример, когда VCL методы возвращают контекст в ответ на то вот эти твои слова:
А вот вопрос, на который ты не ответишь: зачем вцлу вообще возиться с контекстом, если на поверхности вцл-компонентов рисуют только методами?
Разве это ответ? Ты дал пример того, когда вцл именно так и делает, но не сказал, зачем.
А в связи с переходом в другую ось у меня возник вопрос: имеет ли моя задача вообще какое нибудь решение под linuxом? Без TImageа, но чтоб файл можно было сразу после съёмки экрана показать щелчком мыши в окне снимающей экран проги. И чтоб его ещё можно было скролить и менять масштаб его отображения. Формат под linuxом - любой растровый, но задаётся жёстко на этапе разработки. И чтоб картинка в нём сохранялась без потерь. Под виндой постановка задачи не меняется, но сама задача откладывается.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответить