Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

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.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
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.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное