вопрос по DC

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
arechemist
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 173
Зарегистрирован: 24.10.2003 (Пт) 8:45

вопрос по DC

Сообщение arechemist » 09.08.2004 (Пн) 19:27

Как можно работать с DC и что и как в него можно записывать и как его использовать?

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 09.08.2004 (Пн) 19:48

Если Вы ещё не обзавелись программой API-Guide, то скачайте её или какой-нибудь справочник по API с примерами (линков на форуме великое множество). Записывать желательно графическую информацию - используйте поиск по ключевым словам BitBlt, StretchBlt, TransparentBlt...
Листинги не горят!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.08.2004 (Вт) 7:55

А что нужно-то? Что-то конкретное, или просто так?
Изображение

arechemist
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 173
Зарегистрирован: 24.10.2003 (Пт) 8:45

Сообщение arechemist » 10.08.2004 (Вт) 10:27

tyomitch
Да вот просмотрел статью про BitBlt, а там новые созданные DC использовались, совместные с пикчурбоксами, но пример из статьи не работал... Вроде написано, что DC работают гораздо быстрее чем обычные пикчурбоксы... Так вот хочу научиться их создавать ...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.08.2004 (Вт) 12:21

Покажи статью - посмотрим пример, работает или нет. Заодно и объясним что-то, если непонятно.
Пока непонятно только, что тебе нужно. Пользоваться DC вместо PictureBox-ов? ;-)

А создавать их просто: CreateCompatibleDC (Form1.hDC)

arechemist
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 173
Зарегистрирован: 24.10.2003 (Пт) 8:45

Сообщение arechemist » 10.08.2004 (Вт) 13:55

Что делают в этой статье функции:
CreateCompatibleBitmap
DeleteObject
SelectObject
Зачем они нужны

ps а что за API-Guide и где его скачать?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.08.2004 (Вт) 14:35

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

arechemist
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 173
Зарегистрирован: 24.10.2003 (Пт) 8:45

Сообщение arechemist » 10.08.2004 (Вт) 14:50

А на русском такой шняги про АПИ нет?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 10.08.2004 (Вт) 15:05

Шняги сколько угодно, но нормальная документация в MSDN и на английском
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.08.2004 (Вт) 16:25

arechemist писал(а):Что делают в этой статье функции:
CreateCompatibleBitmap
DeleteObject
SelectObject
Зачем они нужны

Я чего-то не догоняю :shaking:. О какой статье идёт речь?

В общем: CreateCompatibleBitmap создаёт картинку, DeleteObject её удаляет, SelectObject выбирает её в DC. Более конкретно - когда покажешь статью.

arechemist писал(а):ps а что за API-Guide и где его скачать?

http://www.mentalis.org/agnet/apiguide.shtml

arechemist
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 173
Зарегистрирован: 24.10.2003 (Пт) 8:45

Сообщение arechemist » 10.08.2004 (Вт) 17:45

вот эта статья. http://www.vbstreets.ru/VB/Articles/65569.aspx
Расскажите поподробнее что делают функции объявленные в этой статье( ну кроме BitBlt. Тут все ясно )

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.08.2004 (Вт) 18:12

Хм... Ну ладно :)
DeviceContext – это структура, формат которой объявлен закрытым с целью безболезненного изменения его в будущем. Для работы с этой структурой используются только специальные функции и никогда – напрямую.
Главное в DC – его содержимое. В изначально созданном DC ничего нет. Чтобы работать, нужно создать ещё и графические объекты, после чего создать логическую связь оных с DC (это называется «выбрать в DC», занимается этим функция SelectObject). Одновременно в одном DC может находиться только один объект данного типа (один битмап, одна кисть, одно перо...). При этом в случае с битмапом зависимость взаимно однозначная: если битмап выбран в DC, то он не может быть выбран в другой DC.
В общем случае работа с DC выглядит так: есть некий уже существующий DC, работать с которым мы хотим. При помощи CreateCompatibleDC мы создаём новый DC, совместимый со старым. Битмапа в нём пока нет, просто пустышка нулевого размера. Создаём битмап (CreateCompatibleBitmap) и выбираем его в DC (SelectObject). При этом запоминаем в переменные хэндлы и DC, и битмапа (по окончании работы нужно всё вручную удалять – DeleteDC для DC и DeleteObject для картинки).
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.08.2004 (Вт) 19:50

GSerg писал(а):Хм... Ну ладно :)
DeviceContext – это структура, формат которой объявлен закрытым с целью безболезненного изменения его в будущем. Для работы с этой структурой используются только специальные функции и никогда – напрямую.
Главное в DC – его содержимое. В изначально созданном DC ничего нет. Чтобы работать, нужно создать ещё и графические объекты, после чего создать логическую связь оных с DC (это называется «выбрать в DC», занимается этим функция SelectObject). Одновременно в одном DC может находиться только один объект данного типа (один битмап, одна кисть, одно перо...). При этом в случае с битмапом зависимость взаимно однозначная: если битмап выбран в DC, то он не может быть выбран в другой DC.
В общем случае работа с DC выглядит так: есть некий уже существующий DC, работать с которым мы хотим. При помощи CreateCompatibleDC мы создаём новый DC, совместимый со старым. Битмапа в нём пока нет, просто пустышка нулевого размера. Создаём битмап (CreateCompatibleBitmap) и выбираем его в DC (SelectObject). При этом запоминаем в переменные хэндлы и DC, и битмапа (по окончании работы нужно всё вручную удалять – DeleteDC для DC и DeleteObject для картинки).

Придерусь, можно? Не нулевого:
Note: When a memory device context is created, it initially has a 1-by-1 monochrome bitmap selected into it

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.08.2004 (Вт) 20:06

Можно, можно... :razz:

Я не злопамятный. Я просто злой и память у меня хорошая.

Я не злопамятный, у меня просто склероз. Отомщу, забуду - и снова отомщу...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.08.2004 (Вт) 20:26

Ещё, мне кажется, стоит рассказать про то, зачем вообще нужны DC.
Когда создавалась Винда - а создавалась она не как ОС, а как графическая среда, что-то вроде теперяшнего DirectX - стандартов на видеоадаптеры было очень много; каждый производитель PC-клона пихал в него собственные разработки. Соответственно, графические программы приходилось снабжать десятками разных видеодрайверов (программировавшие под BGI помнят, сколько разных BGI-драйверов поставлялось с BP/BC). Microsoft решила, что она сэкономит много головной боли авторам и много места на дискетах пользователям, если эти видеодрайверы будут в едином формате и в одном экземпляре (а не свой у каждой программы). Под это дело была разработана концепция DC: программист не знает, какова структура под-лежащего устройства, какая там глубина цвета, какое выравнивание строк и т.п. Он просто пишет код, оперируя понятиями "кистей" и "перьев", а ОС сама преобразует их в операции над соответствующим устройством.
Однако, ещё перед релизом Win10 Microsoft сообразила, что одним только SDK программистов к платформе не привлечь, и написала для неё несколько прикладных программ - Реверси (почему-то исчезнувшее ко времени Win31), Блокнот, Пэйнтбраш и т.п. В те времена подобных платформ было немало, и Win10 никакой выдающейся популярности не получила. Однако тяжёлое наследство первых версий тянется в Винде до сих пор.
Естественно, графические приложения, работавшие с GDI, были гораздом медленнее работавших с виеопамятью напрямую: ведь на каждый вызов GetPixel/SetPixel приходились сотни системных вызовов. Поэтому начиная с Win30, в GDI появилась поддержка DIB: блоков памяти, с которыми можно работать напрямую побайтно, причём соответствующие изменения отображались в том DC, куда был выбран DIB. Несмотря на удобство работы с DIB, многие программисты почему-то по-прежнему работают с GetPixel/SetPixel.
И в завершение экскурса в историю, о BitBlt. Согласно официальной трактовке, это читается "БитБлит" и означает Bit Block Transfer. В старых Виндах, которые могли работать с цветностью 4bpp или менее, для переноса куска изображения из одного DC в другое было недостаточно переноса байт; нужно было "рассекать" байты по границе области переноса и "вклеивать" их посреди байтов приёмника. Это было достаточно нетривиально и, действительно, требовало специальной функции. Сейчас же, когда цветность у всех 8bpp и более, BitBlt по сути осуществляет Byte Block Transfer - а это уже можно выполнить обычным двойным циклом. Мораль: не юзайте GetPixel, SetPixel и BitBlt, работайте сразу с данными картинки.
Как ещё один памятник истории, сохранены флаги класса окна CS_BYTEALIGNCLIENT и CS_BYTEALIGNWINDOW, которые использовались для ускорения отрисовки в окно и позволяли ему занимать только целое число байт в видеопамяти (т.е. не позволяли какому-нибудь байту видеопамяти быть наполовину в окне и наполовину вне его). Сейчас, при цветности 8bpp и более, эти флаги эффекта уже не имеют.
Вот, почти статья получилась. Стандартный дизклеймер: ни за что, написанное в ней, я не отвечаю; при воспроизведении сохранение копирайта обязательно.

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 11.08.2004 (Ср) 3:56

Не из вредности. :)
tyomitch писал(а):Ещё, мне кажется, стоит рассказать про то, зачем вообще нужны DC.

Хочется - расскажи. Кста, imo, в твоём последующем тексте "про это" почти ничего не было сказано.
И в завершение экскурса в историю, о BitBlt. Согласно официальной трактовке, это читается "БитБлит" и означает Bit Block Transfer. В старых Виндах, которые могли работать с цветностью 4bpp или менее, для переноса куска изображения из одного DC в другое было недостаточно переноса байт; нужно было "рассекать" байты по границе области переноса и "вклеивать" их посреди байтов приёмника. Это было достаточно нетривиально и, действительно, требовало специальной функции. Сейчас же, когда цветность у всех 8bpp и более, BitBlt по сути осуществляет Byte Block Transfer - а это уже можно выполнить обычным двойным циклом. Мораль: не юзайте GetPixel, SetPixel и BitBlt, работайте сразу с данными картинки.

Мораль нормальная, но лишь в отношении Get/SetPixel. Ибо, Bit Blitting происходит несравненно быстрее нежели Get/SetDIBits. И это объяснимо - ведь по сути приходится сначала битовый образ форматировать, а уже затем запихивать его по месту Device контекстной памяти. Я уже не говорю про то, что может понадобиться в цикле эти байты обрабатывать... Мораль, прежде чем советовать - тестируй на производительность, то бишь не используй истины: "не верь глазам своим - поверь своей совести".
Вот, почти статья получилась... при воспроизведении сохранение копирайта обязательно.

Вон, оказывается, как тебя сильно на этом клинит. :) Не сердись, nothing personal.
С уважением, Approximator.

arechemist
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 173
Зарегистрирован: 24.10.2003 (Пт) 8:45

Сообщение arechemist » 11.08.2004 (Ср) 8:31

всмысле Эюзайте сразу данные картинки..."?
Но перед тем как их юзать их вроде бы сначала нужно достать из файла и переписать куда-нибудь пикчурбокс например... как я делал раньше, но тут я узнал про DC, которые занюмают меньше памяти чем пикчур боксы и хочу узнать как с ними можно работь...

А не мог бы кто-нибудь написать маленький примерчик работы с DC
Ну там созданию, засовывание в нее какую-нибудь картинку и удаление чтоб было в это примерчике... Я буду очень благодарен...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.08.2004 (Ср) 10:06

Approximator писал(а):
tyomitch писал(а):Ещё, мне кажется, стоит рассказать про то, зачем вообще нужны DC.

Хочется - расскажи. Кста, imo, в твоём последующем тексте "про это" почти ничего не было сказано.

Ну как же ничего:
Под это дело была разработана концепция DC: программист не знает, какова структура под-лежащего устройства, какая там глубина цвета, какое выравнивание строк и т.п. Он просто пишет код, оперируя понятиями "кистей" и "перьев", а ОС сама преобразует их в операции над соответствующим устройством.

Approximator писал(а):Мораль нормальная, но лишь в отношении Get/SetPixel. Ибо, Bit Blitting происходит несравненно быстрее нежели Get/SetDIBits. И это объяснимо - ведь по сути приходится сначала битовый образ форматировать, а уже затем запихивать его по месту Device контекстной памяти. Я уже не говорю про то, что может понадобиться в цикле эти байты обрабатывать... Мораль, прежде чем советовать - тестируй на производительность, то бишь не используй истины: "не верь глазам своим - поверь своей совести".

Get/SetDIBits здесь вообще не при чём. Я о создании битмапа из двумерного массива и работы с ним попиксельно как с двумерным массивом. Скорость этого трюка я проверял - мне понравилось.
Ещё раз, не о создании буфера битмапа в двумерном массиве, а о создании самого битмапа.
Approximator писал(а):
Вот, почти статья получилась... при воспроизведении сохранение копирайта обязательно.

Вон, оказывается, как тебя сильно на этом клинит. :) Не сердись, nothing personal.
"У каждого придурка свои радости" (с)

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 12.08.2004 (Чт) 1:29

tyomitch писал(а):
Approximator писал(а):
tyomitch писал(а):Ещё, мне кажется, стоит рассказать про то, зачем вообще нужны DC.

Хочется - расскажи. Кста, imo, в твоём последующем тексте "про это" почти ничего не было сказано.

Ну как же ничего:...

Я сказал почти ничего. На самом деле GDI это универсальный интерфейс и способен работать не только с монитором :), при этом, работая через него вовсе не обязательно задумываться как об особенностях hardware, так и об особенностях поставляемых драйверов... Впрочем, про DC не у меня было желание рассказывать, а у тебя :) вот и отдувайся. "Назвался груздём..."
tyomitch писал(а):
Approximator писал(а):Мораль нормальная, но лишь в отношении Get/SetPixel. Ибо, Bit Blitting происходит несравненно быстрее нежели Get/SetDIBits. И это объяснимо - ведь по сути приходится сначала битовый образ форматировать, а уже затем запихивать его по месту Device контекстной памяти. Я уже не говорю про то, что может понадобиться в цикле эти байты обрабатывать... Мораль, прежде чем советовать - тестируй на производительность, то бишь не используй истины: "не верь глазам своим - поверь своей совести".

Get/SetDIBits здесь вообще не при чём. Я о создании битмапа из двумерного массива и работы с ним попиксельно как с двумерным массивом. Скорость этого трюка я проверял - мне понравилось.
Ещё раз, не о создании буфера битмапа в двумерном массиве, а о создании самого битмапа.

Если об ОДНОКРАНОМ заполнении битмапа - нет вопросов, если же... кста, что за "попиксельная работа", то есть, что именно необходимо было сделать с ОТДЕЛЬНЫМ пикселем (например)? Конечно, может быть сама задача не позволяла использовать стандартные процедуры (логические операции над массивом данных с использованием, пускай даже обсчитываемых, примитивов), но, что-то мне подсказывает, что ты просто на корню отверг подобную возможность (ну, не любят некоторые люди математику, что ж с того?). Разубеди. :)
С уважением, Approximator.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 12.08.2004 (Чт) 10:53

Approximator писал(а):
tyomitch писал(а):
Approximator писал(а):
tyomitch писал(а):Ещё, мне кажется, стоит рассказать про то, зачем вообще нужны DC.

Хочется - расскажи. Кста, imo, в твоём последующем тексте "про это" почти ничего не было сказано.

Ну как же ничего:...

Я сказал почти ничего. На самом деле GDI это универсальный интерфейс и способен работать не только с монитором :), при этом, работая через него вовсе не обязательно задумываться как об особенностях hardware, так и об особенностях поставляемых драйверов... Впрочем, про DC не у меня было желание рассказывать, а у тебя :) вот и отдувайся. "Назвался груздём..."

Я не говорил про монитор, я говорил про "под-лежащее устройство".
Про независимость от hardware и конкретных драйверов я писал в самом первом абзаце.
Короче, всё, что я хотел сказать - я сказал. Если кто-то чего-то не понял, или не нашёл в тексте - его проблемы. Я считаю, что зачем вообще нужны DC я рассказал достаточно полно и подробно.

Approximator писал(а):Если об ОДНОКРАНОМ заполнении битмапа - нет вопросов, если же... кста, что за "попиксельная работа", то есть, что именно необходимо было сделать с ОТДЕЛЬНЫМ пикселем (например)? Конечно, может быть сама задача не позволяла использовать стандартные процедуры (логические операции над массивом данных с использованием, пускай даже обсчитываемых, примитивов), но, что-то мне подсказывает, что ты просто на корню отверг подобную возможность (ну, не любят некоторые люди математику, что ж с того?). Разубеди. :)

Короче, я ниччё не понял. Объясни, можешь личкой, что тебе надо - начну разубеждать.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 12.08.2004 (Чт) 13:14

Видимо, имеется в виду, что когда пиксель описывается нецелым числом байт, то для работы с ним лучше использовать всё-таки функции.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 12.08.2004 (Чт) 14:42

GSerg писал(а):Видимо, имеется в виду, что когда пиксель описывается нецелым числом байт, то для работы с ним лучше использовать всё-таки функции.

Так не бывает.
Т.е. это возможно, но так не бывает.
Если только область применения не какая-то узкоспецифичная (напр. комп с полуметровой видеокартой)

Я про то, что не стоит к функциям привыкать, а не про то, что они вообще лишние и никогда не нужны.

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 13.08.2004 (Пт) 4:45

tyomitch писал(а):
Approximator писал(а):
tyomitch писал(а):
Approximator писал(а):
tyomitch писал(а):Ещё, мне кажется, стоит рассказать про то, зачем вообще нужны DC.

Хочется - расскажи. Кста, imo, в твоём последующем тексте "про это" почти ничего не было сказано.

Ну как же ничего:...

Я сказал почти ничего. На самом деле GDI это универсальный интерфейс и способен работать не только с монитором :), при этом, работая через него вовсе не обязательно задумываться как об особенностях hardware, так и об особенностях поставляемых драйверов... Впрочем, про DC не у меня было желание рассказывать, а у тебя :) вот и отдувайся. "Назвался груздём..."

Я не говорил про монитор, я говорил про "под-лежащее устройство".
Про независимость от hardware и конкретных драйверов я писал в самом первом абзаце.
Короче, всё, что я хотел сказать - я сказал. Если кто-то чего-то не понял, или не нашёл в тексте - его проблемы. Я считаю, что зачем вообще нужны DC я рассказал достаточно полно и подробно.

Прости, Тёмыч, но я перечитав ещё раз так ничего и не нашёл об описании GD-интерфейса. А что можно было сказать про DC не затронув этой темы я не знаю. То что я прочёл у тебя - что-то очень мокрое, то бишь вода. Ладно, уже говорил, что не из вредности. Считаешь, что сказанного хватит - хозяин-барин.
tyomitch писал(а):
Approximator писал(а):Если об ОДНОКРАНОМ заполнении битмапа - нет вопросов, если же... кста, что за "попиксельная работа", то есть, что именно необходимо было сделать с ОТДЕЛЬНЫМ пикселем (например)? Конечно, может быть сама задача не позволяла использовать стандартные процедуры (логические операции над массивом данных с использованием, пускай даже обсчитываемых, примитивов), но, что-то мне подсказывает, что ты просто на корню отверг подобную возможность (ну, не любят некоторые люди математику, что ж с того?). Разубеди. :)

Короче, я ниччё не понял. Объясни, можешь личкой, что тебе надо...
Мне - ничего. Думал, что может пригодиться тебе. Если нет - ещё раз прости, видимо то, что я написал прошло "мимо бани". Не забивай голову.
С уважением, Approximator.

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 13.08.2004 (Пт) 4:47

GSerg писал(а):Видимо, имеется в виду, что когда пиксель описывается нецелым числом байт, то для работы с ним лучше использовать всё-таки функции.

Не, я не об этом. А о том, что функции выполняющие прямой логический блиттинг (которые Тёмычу не нравятся) работают несравненно быстрее, чем работа побайтно. А ими ЛЮБУЮ работу побайтно с картинкой можно заменить. Но тут, я же сказал, необходимо желание того, кто это делает, а если его нет - навязываться не буду.
С уважением, Approximator.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.08.2004 (Пт) 7:51

Хм... Да. Видимо, не зря есть фича девайса RC_BITBLT :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot, The trick и гости: 12

    TopList