Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 701
от 01.03.2004, 03:20
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 5017 Отправлено ответов: 13911 Активность: 277.2 %
|
РекламаWWW.KARATETSKI.NAROD.RU/-Персональный сайт каратецкого Кирилла.Документация, программы, исходники, компиляторы Паскаля и тд. Flash-Player 1.0 - http://club.fdd5-25.net/zip/flash.zip - плейер SWF-файлов. Полоса прокрутки в виде синей полоски(Win 9x), поддержка WinXP-тем, асоциация swf-файлов с программой, stop-play по нажатии на выбранную кнопку в настройках, дружественный интерфейс. |
Список экспертов, ответы которых опубликованы в данном выпуске |
Foamplast Статус: Опытный Общий рейтинг: 163.54 URL: мой личный сайт [Подробней >>] |
Andrew Статус: Начальный Общий рейтинг: 105 [Подробней >>] |
_vt Статус: Профессиональный Общий рейтинг: 117.88 [Подробней >>] |
SedHg Статус: Опытный Общий рейтинг: 113.44 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 116.58 [Подробней >>] |
Snowm@n Статус: Начальный Общий рейтинг: 122.03 [Подробней >>] |
vitya Статус: Профессиональный Общий рейтинг: 108.63 [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 144.22 URL: Программирование [Подробней >>] |
fC Статус: Профессиональный Общий рейтинг: 140.35 URL: Самоподобие сетевого трафика [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 4989. Здравствуйте, эксперты! Окажите помощь в написании курсового на тему "Конструктор диалогов"... (ответов: 1)
Вопрос № 4990. При использовании MASM, получил сл. сообщение: 'fatal error A1000:cannot open file: prog.asm' програ... (ответов: 3)
Вопрос № 4991. Надо сложить два числа и вывести на экран результат. Подскажите еррор, и правильное решение!... (ответов: 4)
Вопрос № 4992. Здрасте. Вот я в VC6 cделал DLL (Debug), она, судя по PE Header'у имеет Fixup, однако RVA (выравнива... (ответов: 1)
Вопрос № 4993. Как, используя WinAsm, отобразить на экране изоражение (например, в формате BMP) и получить доступ к... (ответов: 2)
Вопрос № 4994. Здрасте! Можно ли из пользовательского режима, в Win32, получить какие нибудь сведения о железе? Есл... (ответов: 2)
Вопрос № 4995. здравстуйте господа программеры у меня вот какой вопрос назрел: сеанс мс-дос в виндах 9х полностью э... (ответов: 3)
Вопрос № 4996. здравствуйте господа программеры, я наверное запарил вас дурацкими вопросами, но одному очень трудно... (ответов: 2)
Вопрос № 4997. Приветствую программистов и любителей! мои вопросы: 1) что такое стек (шутка) 2) можно ли задавать г... (ответов: 4)
Вопрос № 4998. Уточняю вопрос по поводу отображения BMP-файла: имя файла следует вводить с клавиатуры (как это дела... (ответов: 1)
Вопрос № 4999. Здравствуйте, эксперты! С прошедшим вас 23 февраля. Очень извиняюсь за офтопик, но, пожалуйста, не д... (ответов: 7)
Вопросов: 11, ответов: 30
Вопрос № 4989 |
Здравствуйте, эксперты!
Окажите помощь в написании курсового на тему "Конструктор диалогов" (по типу как в VC++, с возможностью добавления на диалог элементов управления с помощью мыши, изменение их размеров и некоторых свойств). Я не прошу код, а только рекомендации. Пока не понятно как спроектировать сам редактируемый диалог (рисовать его вручную или создавать динамически реальную диалоговую панель, если реальную - то как организовать маркеры для изменениия его размеров).
Буду благодарен за Ваши предложения.
EraSer
Вопрос отправлен: 23.02.2004, 17:09
Отправитель: EraSer (eraser99@tut.by)
[Следующий вопрос >>] [Список вопросов]
Отвечает Foamplast
Здравствуйте, EraSer!
Как мне кажется, самый простой путь - создавать реальный диалог динамически, добавляя в него элементы управления в соответствии с действиями пользователя.
Маркеры изменения размеров можно рисовать функциями рисования.
Когда пользователь ткнёт мышью на диалог, он становится "активным", т.е. выделяешь его как-нибудь, запоминаешь handle и, затем, узнаёшь его размеры и рисуешь маркеры.
Перехватываешь сообщения мыши и, если пользователь тащит за маркер, изменяешь размеры "активного" окна, перемещая тем самым и маркеры.
Ответ отправлен: 24.02.2004, 02:30
Отправитель: Foamplast
Вопрос № 4990 |
При использовании MASM, получил сл. сообщение:
'fatal error A1000:cannot open file: prog.asm'
программа 01 из книги Калашникова
Вопрос отправлен: 23.02.2004, 17:56
Отправитель: ****
[Следующий вопрос >>] [Список вопросов]
Отвечает Andrew
Добрый день, ****!
Возможно ты не правильно компилировал.
Компилируй: ...ml.exe/AT prog.asm
Ответ отправлен: 23.02.2004, 20:16
Отправитель: Andrew
Отвечает _vt
Приветствую Вас, ****!
Ты неправильно указал путь к файлу prog.asm.
--- E-Man 1.5+ : Sorry for terrible english. My native language is C++
Ответ отправлен: 24.02.2004, 14:21
Отправитель: _vt
Отвечает SedHg
Здравствуйте, ****!
Скорее всего неправильно написана командная строка.
Что ты пишешь в командной строке?
Ответ отправлен: 24.02.2004, 17:08
Отправитель: SedHg
Вопрос № 4991 |
Надо сложить два числа и вывести на экран результат.
Подскажите еррор, и правильное решение!
Приложение:
Вопрос отправлен: 23.02.2004, 19:19
Отправитель: Kirill
[Следующий вопрос >>] [Список вопросов]
Отвечает SedHg
Приветствую Вас, Kirill!
Относительно твоего вороса об ошибках в твоей программе, ты использцешь 9-ю функцию 21-го прерывания, а это вывод строки, а не символа, и в dl запихиваешь cx, что физически
невозможно(в наперсток, бутылку не нальешь). Вобщем проще сказать где у тебя нет ошибок.
Поэтому, чтобы не уходить в пространные рассуждения привожу пример программы, которая делает, то что тебе надо.
Задачу, которую ты перед собой поставил решается далеко не в одно действие =). В этой программе много процедур, это сделано для большей простоты понимания.
Я закоментировал только ту часть программы, которая наиболее сложна для понимания. Если тебе не понятны спобы преобразования которые я использовал, пиши я опишу их отдельно.
Приложение:
Ответ отправлен: 24.02.2004, 21:19
Отправитель: SedHg
Отвечает Andrew
Приветствую Вас, Kirill!
В регистр DX не поместилось твое CX ,поэтому у тебя возникает Error.
Присылай еще вопросы!
Приложение:
Ответ отправлен: 23.02.2004, 20:21
Отправитель: Andrew
Отвечает Foamplast
Здравствуйте, Kirill!
ОШИБКА
Функция 9 прерывания 21h (как и все подобные ей) хочет от тебя УКАЗАТЕЛЬ на строку, содержащую выводимый на экран текст. Указатель на что-то - это переменная, содержащая адрес начала этого чего-то в памяти.
Таким образом, ты передаёшь ей в качестве указателя 100+100=200. А что у тебя находится в памяти по адресу 200?
Наверняка ерунда какая-то.
Ой, блин, да у тебя вообще косяк там: "mov dl, cx" - это НЕ ДОЛЖНО АССЕМБЛИРОВАТЬСЯ!!! У тебя ассемблер ошибку не выводит?
CX - 16-разрядный регистр, а DL - 8-разрядный. Так присваивать нельзя! Это всё равно, что в 10-лировое ведро запихать а/м "жигули". Не войдёт (проверь, если хочешь).
ПРАВИЛЬНОЕ РЕШЕНИЕ
будет достаточно длинным в общем случае, так как придётся писать функцию перевода числа в строку. Т.е. будет что-то типа:
сложить числа
перевести число в строку
вывести на экран
Естественно, при переводе числа в строку и выводе на экран в программе появится указатель на буфер, в который функция перевода числа в строку запишет строку.
Решение значительно упростится, если есть ограничение на количество цифр. Посмотри приложение, это у меня ученица писала, оно не очень эффективное, зато правильное. Там всего две цифры.
Приложение:
Ответ отправлен: 24.02.2004, 02:30
Отправитель: Foamplast
Отвечает Ayl
Добрый день, Kirill!
Ошибка - функция 9 прерывания 21 выводит СТРОКУ по адресу ds:dx!
Что надо написать.
Написать нужно процедуру перевода числа, записанного в регистре, в строковый вид. У тебя регистр CX содержит число 200 (0000 0000 1100 1000 в двоисном виде). Тебе нужно преобразовать это к виду '2', '0', '0', '$'. Символ '$' служит для обозначения конца строки для функции 9.
Как это сделать. Берешь значение и начинаешь делить на 10:
200 = 20 * 10 + 0
20 = 2 * 10 + 0
В результате получаешь: 2 (последнее частное), 0 (последний остаток) и 0 (первый остаток). Остается только преобразовать полученные цифры в символы (прибавить 48 - код символа '0').
Ответ отправлен: 24.02.2004, 16:49
Отправитель: Ayl
Вопрос № 4992 |
Здрасте.
Вот я в VC6 cделал DLL (Debug), она, судя по PE Header'у имеет Fixup, однако RVA (выравнивание и
в памяти и в файле 0x1000) фиксапа превышает размер самого файла. Ну то есть блин, если есть
фиксап, то где он лежит-то?
Вот я в VC6 сделал DLL (Release), она не имеет фиксапа.
Отсюда вопрос №1:
Вот я возьму и скомпилю две ДЛЛ с базовыми адресами 0х10000000, и если в них нет фиксапа, то как
(куда), ёпрст, они в память отражаются? (винда2000.) В реале при отладке я наблюдал такую
картину: ДЛЛ грузится по 0х10000000, а её данные, экспорты, и прочее лежат не по тем RVA, которые
указаны в файле. Я задавал вопрос, но на него не ответили, (спасибо Foamplast'у, но вопрос не в
преборазовании RVA в файловое смещение). Ну люди, как грузится ДЛЛ????
Вопрос №2:
Задача-то у меня такая: надо некий кусок кода ДЛЛ вырезать и вставить в другой исполняемый файл
(не в памяти, а на диске, то есть из *.ДЛЛ в *.ЕХЕ). Для этого мне нужно знать к каким данным
(размер данных заранее известен) и импортируемым функциям (обращений к не импортируемым функциям
не предполагается) происходят обращения из этого куска кода. Короче, поскольку кусок (из ДЛЛ)
вставляется по другим адресам (в ЕХЕ), необходимо произвести поправки адресов данных и функций.
Друзья, как это сделать? Я так понял нужен фиксап. Как скомпилить в VC6 релизную ДЛЛ с фиксапом.
Вопрос 3:
имеем, например, такой код:
CAnyСlass var1, var2;
var1.Metod();
var2.Metod();
при компиляции Metod() прописывается каждый раз в месте вызова или существует где-то в памяти в
одном экземпляре? (Я писал простенькие классы для примера, так там тело функции подставлялось
каждый раз в месте вызова, но ведь это не логично).
/////////////////////
Спасибо.
Вопрос отправлен: 24.02.2004, 00:47
Отправитель: ПАПА (rezervx@ezmail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Foamplast
Здравствуйте, ПАПА!
1. "Вот я в VC6 сделал DLL (Release), она не имеет фиксапа" - такого вообще быть не может, поэтому вопрос у тебя справедливый. У DLL таблица перемещений должна быть ВСЕГДА.
"но вопрос не в преборазовании RVA в файловое смещение" - значит, в каких-то других операциях с RVA.
2. Б-р-р-р! А для чего это всё вообще надо? Ты расскажи про основное задание, может ты способ не совсем эффективный выбрал. Я бы, например, дизассемблировал и написал код заново. А то может он диск форматирует или ещё чего, а ты его вставлять... И вообще, переписав, можно так соптимизировать, что вырезать вообще не захочется больше.
Хотя, я так понял, что DLL твоя собственная, но тогда тем более зачем?
3. По логике, по понятиям да и по тому же ООП, метод - это свойство класса, а не его экземпляра. И, дизассемблируя DLL, написанные с использованием ООП, можно это увидеть. То, что ты пишешь, говорит о том, что кто-то сильно заблуждается, либо ты, либо создатели VC.
И вообще, давай с тобой по почте свяжемся, ты пришлёшь мне свои загадочные файлы, и я на них погляжу.
Ответ отправлен: 24.02.2004, 02:30
Отправитель: Foamplast
Вопрос № 4993 |
Как, используя WinAsm, отобразить на экране изоражение (например, в формате BMP) и получить доступ к отдельным пикселям изображени для их обработки.
Спасибо.
Вопрос отправлен: 24.02.2004, 11:31
Отправитель: Александр
[Следующий вопрос >>] [Список вопросов]
Отвечает Foamplast
Приветствую Вас, Александр!
ОТОБРАЗИТЬ
Определить картинку как ресурс
Загрузить ресурс (функция LoadBitmap)
Получить handle текущего контекста устройства вывода (функция BeginPaint или GetDC)
Создать контекст, совместимый с полученным (функция CreateCompatibleDC)
Отобразить картинку в совместимом контексте (функция SelectObject)
Скопировать картинку из совместимого контекста на устройство вывода (функция BitBlt)
см. приложение
(написано в дурацком стиле, но оно не моё, а Iczelion'а)
ДОСТУП К ПИКСЕЛЯМ
можно получить с помощью функции GetDIBits.
(есть и другие, но эта "официальная")
Приложение:
Ответ отправлен: 25.02.2004, 00:32
Отправитель: Foamplast
Отвечает Snowm@n
Добрый день, Александр!
Можно отобразить изображение ручками, а затем произвести попиксельную обработку. Вот формат изображения BMP
1) заголовок файла
2) заголовок изображения
3) палитра
4) пиксельная часть
Подробно:
{структура заголовка файла}
type BMPInfoHeader=record
FileId:word; {сигнатура BM (файла формата BMP)}
FileSize:longint; {размер файла}
Reserved1:word; {резервировано}
Reserved2:word; {резервировано}
ImgOffset:longint; {смещение графической информации}
end;
{структура заголовка изображения}
type ImgInfoHeader=record
HeaderSize:longint; {размер этого заголовка}
ImgWidth:longint; {ширина изображения}
ImgHeight:longint; {высота изображения}
NumPlanes:word; {количество слоев}
PixelDepth:word; {глубина цвета}
Compression:longint; {есть сжатие?}
BitmapSize:longint; {размер пиксельной части}
Hresolution:longint; {горизонтальное разрешение}
Vresolution:longint; {вертикальное разрешение}
UsedColors:longint; {использовано цветов}
SignificantColors:longint; {назначено цветов}
end;
{структура цвета палитры}
type PaletteColor=record
Blue:byte; {синий}
Green:byte; {зеленый}
Red:byte; {красный}
Reserved:byte; {резервировано}
end;
p.s. ИМХО, API функции не позволяют обрабатывать изображение попиксельно.
Ответ отправлен: 25.02.2004, 09:03
Отправитель: Snowm@n
Вопрос № 4994 |
Здрасте!
Можно ли из пользовательского режима, в Win32, получить какие нибудь сведения о железе? Если да, то как?
Вопрос отправлен: 24.02.2004, 17:42
Отправитель: pasha
[Следующий вопрос >>] [Список вопросов]
Отвечает Foamplast
Приветствую Вас, pasha!
О процессоре и памяти - функция GetSystemInfo().
А ещё есть SetupDiGetClassDevs(). С её помощью можно получить список устройств, присутствующих в системе и интерфейсы, предоставляемые соответствующими драйверами.
Приложение:
Ответ отправлен: 25.02.2004, 01:02
Отправитель: Foamplast
Отвечает vitya
Доброе время суток, pasha!
Например из реестра. Machine\Harware и т.д. Еще есть другие разделы в реестре.
Ответ отправлен: 25.02.2004, 12:46
Отправитель: vitya
Вопрос № 4995 |
здравстуйте господа программеры у меня вот какой вопрос назрел:
сеанс мс-дос в виндах 9х полностью эмулирует режим работы дос, т.е. не защищеннуй процессор, принципы работы с оперативкой?
а то я вот пытаюсь например сделать 4a - функцию 21-го прерывания а он все время carry flag мне выставляет...
спасибо.
Вопрос отправлен: 24.02.2004, 20:47
Отправитель: очень хочу научиться
[Следующий вопрос >>] [Список вопросов]
Отвечает _vt
Добрый день, очень хочу научиться!
Ты сам понял, что сказал насчет эмуляции?
А с функцией - наверное ты неправильные входные данные передаешь, она отлично работает и под 9х и под NT.
--- E-Man 1.5+ : Sorry for terrible english. My native language is C++
Ответ отправлен: 24.02.2004, 21:45
Отправитель: _vt
Отвечает Foamplast
Приветствую Вас, очень хочу научиться!
Скорее всего, защита какая-то есть, например, приложения работают в v86, но с открытой картой портов или чего-нибудь в этом роде. Это значит, что часть функций и обращений к устройствам винда перехватывает.
Кстати, линейка 9х сдохла, ориентируйся на модель NT.
То есть, либо пиши под винды в 32/64-разрядном защищённом режиме либо под "чистый" ДОС.
Ответ отправлен: 25.02.2004, 01:07
Отправитель: Foamplast
Отвечает Snowm@n
Здравствуйте, очень хочу научиться!
Конечно же не полностью, на то она и ЭМУЛЯЦИЯ MS-DOS.
Ответ отправлен: 25.02.2004, 09:37
Отправитель: Snowm@n
Вопрос № 4996 |
здравствуйте господа программеры, я наверное запарил вас дурацкими вопросами, но одному очень трудно постигать ассм, вот какая проблема: (см. прил.)
он всегда пишет ошибка, я уже и под дос пробовал и в сеансе дос из виндов, почему не работает, одно предположение: что-то с end_p не так, но я в отладчике пробовал вробе правильный адрес загружает...
спасибо
Приложение:
Вопрос отправлен: 25.02.2004, 09:41
Отправитель: очень хочу научиться
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Здравствуйте, очень хочу научиться!
Нет, не правильный! Функция 4A требует указания размера блока в ПАРАГРАФАХ, т.е. твое число нужно разделить на 16 (shr 4) и прибавить 1 на всякий случай.
Во-вторых, конструкция
mov bx, word ptr end_p
не работает, т.к. ты пытаешься выполнить загрузку значения по адресу end_p, а там находится неизвестно что. Надо делать одним из следующих способов:
1. mov bx, OFFSET end_p
2. end_p dw $
В-третьих, что ты пытаешься сделать с сегментным регистром? Зачем его вычитать из смещения? После этого вычитания ты получаешь отрицательное число и при вызове функции 4A получаешь нехватку памяти (8000h*16=80000h byte = 524 288 байт. Столько ты не получишь, а в реале у тебя число в BX еще больше, у меня под отладчиком получилось, например, 9E55 - это 648 528 байт).
В общем, твоя прога должна выглядеть так (см. Приложение).
Приложение:
Ответ отправлен: 25.02.2004, 13:38
Отправитель: Ayl
Отвечает Foamplast
Доброе время суток, очень хочу научиться!
Действительно, постигать нелегко. И, пока не узнаешь про rusfaq, спросить некого. Благо есть отладчики и дизассемблеры (чего нет у сишных программистов). И главное - терпение и внимание.
ОТВЕТ
Функция 4ah изменяет размер блока памяти.
На входе:
Ah = 4ah
Bx = новый размер в 16-ти байтных параграфах
Es = сегментный адрес модифицируемого блока
На выходе:
Cf = 0 если размер блока изменён
Bx = максимальный размер, доступный для этого блока
То есть
во-первых: не надо вычитать из смещения сегмент.
Так как смещение отсчитывается от начала сегмента.
во-вторых: надо смещение разделить на 16 и увеличить на 1,
если это 0
смотри приложение (проверял в окне Win2000 - OK)
не пугайся, синтаксис - nasm. смысл поймёшь.
Приложение:
Ответ отправлен: 26.02.2004, 00:57
Отправитель: Foamplast
Вопрос № 4997 |
Приветствую программистов и любителей!
мои вопросы:
1) что такое стек (шутка)
2) можно ли задавать глупые вопросы? :-)
3) кроме шуток, подскажите, где можно взять
данные про форматы файлов *.obj, *.lib, *.exe (dos, win)
*.gif, *.jpeg,
данные про связывание Срр и аsм модулей
и другие нужные справочные данные?
(Р. s. извините, если этот вопрос тоже глупый)
Вопрос отправлен: 25.02.2004, 15:29
Отправитель: soflot (soflot@ukr.net)
[Следующий вопрос >>] [Список вопросов]
Отвечает SedHg
Здравствуйте, soflot!
На глупые вопросы получишь глупые ответы %).
О формате испольняемых файлов, есть кое-что, на asm.shadrinsk.net,
в том числе выдраная инфа по форматам из учебнгика Юрова.
Вроде, что-то было на proglib.ru. Так же есть статьи на wasm.ru
А вобще-то есть такая штука - поисковик ;).
Ответ отправлен: 26.02.2004, 20:51
Отправитель: SedHg
Отвечает _vt
Приветствую Вас, soflot!
1) :-/
2) :-)
3) В любой поисковик вводишь слова : "Формат obj-файлов" и среди сотни ссылок, в первых нескольких, будет нужная информация.
4) Инструкция по "связыванию" модулей, написанных на Borland C++ и Borland Turbo Assembler, имеется в документации обоих продуктов. Для продуктов M$ - такая информация должна быть в M$DN.
--- E-Man 1.5+ : Sorry for terrible english. My native language is C++
Ответ отправлен: 25.02.2004, 21:36
Отправитель: _vt
Отвечает Foamplast
Приветствую Вас, soflot!
1. Специальная область памяти, над которой выполняются специфические операции - "положить" и "вынуть". Можно образно представить в виде бочки, положив в которую 3 предмета: а, затем б, затем в, можно вынуть только в.
Чтобы вынуть б, нужно сначала вынуть в. Соответственно, чтобы вынуть а, нужно вынуть в, затем б, затем а. То есть в обратном порядке. В данном примере а лежит на самом дне, так как его положили первым.
То есть операция "положить" кладёт новый предмет в бочку.
А операция "вынуть" - вынимает самый верхний предмет.
2. "можно ли задавать глупые вопросы? :-)" - если ответы помогут тебе разобраться с "Программированием на языке Assembler"
3. myfileformats.com
Читай Зубкова - "Ассемблер для DOS, Windows и UNIX"
Ответ отправлен: 26.02.2004, 01:43
Отправитель: Foamplast
Отвечает Snowm@n
Здравствуйте, soflot!
1) Стек представляет собой открытую с одного конца трубочку в которую можно кидать шарики, также их можно оттуда доставать, причем в обратном порядке (тоже шутка)
2) :)
3) Насчет графики если тебе надо, то у меня описания форматов есть. Могу замылить. А насчет связи ASM'a с другими языками можно прочитать например у Юрова, вроде нормально написано.
Ответ отправлен: 26.02.2004, 17:50
Отправитель: Snowm@n
Вопрос № 4998 |
Уточняю вопрос по поводу отображения BMP-файла: имя файла следует вводить с клавиатуры (как это делается понятно), далее следует чтение из файла(с этим тоже все понятно), затем необходимо проанализировать палитру, размеры и т.д. (с эти тоже более или менее понятно), а вот теперь необходимо отобразить содержимое из памяти в окне - что необходимо поместить на форму окна для отображения изображения, как его обновить после обработки и т.д.???
Спасибо
Вопрос отправлен: 25.02.2004, 15:48
Отправитель: Александр
[Следующий вопрос >>] [Список вопросов]
Отвечает Foamplast
Добрый день, Александр!
Попробуй так:
1. LoadImage() - Грузишь картинку из файла.
2. CreateCompatibleDC() - Создаёшь контекст, совместимый с текущим контекстом дисплея.
3. SelectObject() - Выбираешь картинку в совместимом контексте.
4. BitBlt() - Копируешь её в текущий контекст дисплея из совместимого контекста.
5. GetDIBits() и SetDIBits() - Изменяешь пикселы.
Шаги 2,3 и 4 лучше всего выполнять в оконной процедуре в ответ на сообщение WM_PAINT. Так ты будешь отображать картинку каждый раз, когда винда решит, что это нужно. Если винда ещё думает, что обновлять окно не надо, а ты не согласен - используй функцию InvalidateRect(), она укажет винде, какую часть окна (или всё окно) нужно обновить.
Если сделать всё тщательно, то получится.
Если получаться не будет - пиши, накидаю тебе исходник.
Ответ отправлен: 26.02.2004, 01:42
Отправитель: Foamplast
Вопрос № 4999 |
Здравствуйте, эксперты!
С прошедшим вас 23 февраля.
Очень извиняюсь за офтопик, но, пожалуйста, не дайте погибнуть. Посоветуйте, что подарить девушке на 8 марта. Спасибо.
Вопрос отправлен: 26.02.2004, 03:19
Отправитель: CoolerTheGreat
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Доброе время суток, CoolerTheGreat!
Себя :)))))
А если серьезно - то это сильно зависит от того, что это за девушка и кем она тебе приходится...
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 28.02.2004, 23:34
Отправитель: Bob Johnson
Отвечает SedHg
Доброе время суток, CoolerTheGreat!
Если девушке от 0 до 10, то большого плюшевого мишку
Если ей от 10 до 15, то маленького мишку
Если ей от 15 до 30, то большого Мишку
Если ей от 30 до 50, то хоть какого-нибудь Мишку
Если старше 50 то ... у нее уже все есть.
Ответ отправлен: 26.02.2004, 20:49
Отправитель: SedHg
Отвечает fC
Здравствуйте, CoolerTheGreat!
Подари ей книгу Юрова по асму и пару железяк :)
Ответ отправлен: 27.02.2004, 02:22
Отправитель: fC
Отвечает _vt
Здравствуйте, CoolerTheGreat!
Подари ей цветы, компьютер и книжку по Ассемблеру! :-)))
--- E-Man 1.5+ : Sorry for terrible english. My native language is C++
Ответ отправлен: 26.02.2004, 03:32
Отправитель: _vt
Отвечает --- Нет данных ---
Доброе время суток, CoolerTheGreat!
Учебник по ассемблеру.
Ответ отправлен: 26.02.2004, 06:38
Отправитель: --- Нет данных ---
Отвечает Andrew
Здравствуйте, CoolerTheGreat!
Пожалуйста присылай вопросы конкритно по ассм.
А девушке подари цветы и коробку хороших конфет или мягкую игрушку.
Ответ отправлен: 26.02.2004, 06:46
Отправитель: Andrew
Отвечает Foamplast
Добрый день, CoolerTheGreat!
Стандартно:
1. Цветы
2. Конфеты
3. Мягкие игрушки
По правилам этикета больше ничего нельзя,
если она не твоя жена.
А если нестандартно, то, например, мне девушка на 23 сделала торт и подарила. Было вкусно.
Пройдись по магазинам и посмотри, что понравится.
И вообще, раз пишешь в рассылку по ассемблеру, подари ей набор ассемблеров и отладчиков :)
Ответ отправлен: 28.02.2004, 02:54
Отправитель: Foamplast
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (26) C / C++ (19) Perl (2) Builder / Delphi (19) Pascal (21) Basic / VBA (9) Java / JavaScript (3) PHP (12) Криптография (7) WinAPI (14) Радиоэлектроника (8) |
Пользователю Windows 95/98/Me (38) Windows NT/2000/XP (58) "Железо" (34) Поиск информации (15) |
Администратору Windows NT/2000/XP (31) Linux / Unix (12) |
Юристу Гражданское право (15) Семейное право (11) Трудовое право (11) КоАП (9) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||