Сказки дядюшки римуса о x64

Содержание

  • Слайд 1

    Привет вам шлют, ребята, «Питерские львята».
    Над Землей мы высоко.
    И летим мы далеко.
    Мы в полете не скучаем – читаем, рисуем , играем.
    Сказкам дружно помогаем!
    Много книжек на борту — рекламируем одну.

    З «а» класса
    ГБОУ лицея №329Невского района,
    г. Санкт — Петербурга

  • Слайд 2

    Слышали ли Вы когда-нибудь про умного и хитрого Зайца?
    Поверите ли Вы, что Лис позволит над собой насмехаться?
    Что Кролик пришпорит Лисицу
    И будет галопом носиться?
    И Кролика Лис съесть не сможет
    Ещё и с седлом сам поможет!
    «И как же это было?» —
    Вы спросите меня.
    А я тогда отвечу
    Вам сразу, не тая:
    «Берите быстрее,
    Читайте скорее,
    «Сказки
    Дядюшки Римуса» славного
    И УЗНАЕТЕСАМОЕ ГЛАВНОЕ!

  • Слайд 3

    5 8 16 31 13 30 25 6 15 5 13 6 18
    23 1 18 18 10 19
    Ответ: ДжоэльЧандлер Харрис
    Числа сответствуют порядковому номеру буквы русского алфавита.
    Знакомы вам истории
    про братца Кролика и братца Лиса?
    Автор этой книги всю жизнь прожил среди афроамериканцев Северной Америки, записал много негритянских сказок. Когда автор был маленьким, ему рассказывал сказки дядюшка Римус, добрый, ласковый старый афроамериканец.
    Книга так и называется «Сказки дядюшки Римуса» этой книги. Отгадай ребус и ты узнаешь –
    КТО АВТОР

  • Слайд 4

    По горизонтали:
    1.Как звали Тетушку?
    3.Братец…
    5. Что поправлял Братец Кролик ,
    когда ехал верхом?
    По вертикали:
    2. Без чего нельзя ехать?
    4. От чего заболел живот
    у Братца Кролика?
    6. Что было на спине у «лошадки»?
    Соедини
    рисунок
    по точкам.
    Чей портрет
    у тебя получился?

  • Слайд 5

    Ответ: Братец Кролик

    Ответ: Дядюшка Римус

    Ребусы к сказке «Лошадь Братца Кролика»
    Кто самый хитрый в сказке?
    Кто все на свете знает?

  • Слайд 6

    Задания по сказке
    «Лошадь братца Кролика»

    1.Какие из предметов понадобились, чтобы
    сделать из братца Лиса верховую Лошадь?
    Седло ПодковыМорковка
    Уздечка Сено Шпоры
    Наглазники ПодушкаСтремена
     

    2. Какую русскую народную сказку
    напоминает сказка «Лошадь братца Кролика»?

    Ответ – Лисичка-сестричка и волк

    3. ИНТЕРЕСНЫЙ ФАКТ !!!«Ну, просто так говориться в сказке: матушка Мидоус с дочками, а больше я ничего не знаю» — это слова самого дядюшки Римуса.
    Как ты думаешь, из каких животных было семейство Мидоус?

  • Слайд 7

    От домика братца Кролика до ближайших его соседей – семейства Мидоус расстояние составляло 3 км. Решил Кролик навестить друзей и поехал к ним на лошади. Проехал 1696 м, а дальше решил размяться и прошел пешком. Сколько метров осталось пройти братцу Кролику?
    Реши сказочные задачи:

    У братца Кролика было 20 морковок. 10 он отдал крольчаткам на завтрак, 2 морковки передал матушке Мидоус на суп, 4 оставил для матушки Крольчихи, а остальные оставил себе, попробовать. Сколько морковок попробовал братец Кролик?
    Дядюшка Римус рассказал Джоэлю 51 историю про братца Лиса,Братца Черепаху и Братца Кролика.Историй про Братца Лиса было на 5 больше,чем про Братца Черепаху,и на 5 меньше,чем про Братца Кролика.Сколько историй рассказал дядюшка Римус про Братца Лиса?

  • Слайд 8

    Найди в головоломке животных, которые встречаются на страницах сказок дядюшки Римуса

    (слова могут располагаться по горизонтали, вертикали и изгибаться слева направо):

    Сарыч
    Лис
    Волк
    Черепаха
    Опоссум
    Медведь
    Перепелка
    Лягушки
    Воробышек
    Енот
    Корова

  • Слайд 9

    Братец Кролик не силен,
    но он ловок и умен.
    Если книгу прочитать
    — будешь много хохотать!

  • Слайд 10

    Сказка про «Лошадь Братца Кролика»,
    как и другие сказки Дядюшки Римуса,
    учит, что нет безвыходных ситуаций.
    Никогда не сдавайся, ищи выход
    из любой ситуации. Ксюша.Ч.
    Сказка веселая и поучительная. Животные в этой сказке очень похожи на людей. Эти сказки похожи на басни! Кристна.Е.
    В этой сказке Братец Кролик хитроумно проводит Братца Лиса, оставляя его «с носом»!
    Дина.К.
    Забавная история. Братец Кролик напоминает Зайца из мультика «Ну, погоди!» Мне Братец Кролик очень понравился своей находчивостью. Даня.О.
    Весело провел время, читая эту сказку.
    Захотелось рассказать всем друзьям об этой книге. Женя. М.
    Отзывы
    «Питерских львят»
    о прочитанном

Посмотреть все слайды

Опция линкера /SECTION

/SECTION:name,{DEKPRSW}]RWE«!»ALIGN=#

буква атрибут значение перевод
D Discardable Marks the section as discardable Секция помечается как выгружаемая
E Execute The section is executable Секция является выполняемой
K Cacheable Marks the section as not cacheable Секция помечается как некэшируемая
P Pageable Marks the section as not pageable Секция помечается как секция без страничной организации
R Read Allows read operations on data Допускаются операции чтения данных
S Shared Shares the section among all processes that load the image Секция совместно используется всеми процессами, загружающими образ
W Write Allows write operations on data Допускаются операции записи данных

«.text»REW

/SECTION:.text,W
заголовок код и данные импорт общий размер
544 112 192 848 байт

Братец Кролик пишет программу на ассемблере

«скелет» ассемблерного файла для x64

Код (ASM):

  1. ; служебная информация для компиляции и линковки
  2. .data
  3. ; здесь определены данные для программы
  4. .code
  5. WinMain proc
  6. ; здесь определен текст программы
  7. WinMain endp
  8. end
  1. отсутствует упоминание модели и типа CPU
  2. «вход» в программу определяется не по последней строчке в asm-файле «end <метка>«, а по опции в bat-файле «/entry:<метка>«

Текст первой программы Братца Кролика

tut_02.asmsamples
Код (ASM):

  1. OPTION DOTNAME ; разрешить использовать точку в имени переменной
  2. option casemapnone ; различать в именах Строчные и прописные буквы
  3. include \masm64\include\temphls.inc ; в этом файле описание invoke и другие высокоуровневые инструкции
  4. include \masm64\include\win64.inc  ; здесь описаны константы NULL и MB_OK
  5. include \masm64\include\kernel32.inc ; здесь описаны функции из библиотеки kernel32.dll
  6. includelib \masm64\lib\kernel32.lib
  7. include \masm64\include\user32.inc  ; здесь описаны функции из библиотеки userl32.dll
  8. includelib \masm64\lib\user32.lib
  9. OPTION PROLOGUEnone ; пролог функций пишем сами
  10. OPTION EPILOGUEnone ; эпилог функций пишем сами
  11. .data                ; данные
  12. MsgCaption      db «Win64 Iczelion’s lesson #2: MessageBox»,
  13. MsgBoxText      db «Win64 Assembly is Great!»,
  14. .code                ; код программы
  15. WinMain proc
  16.     sub rsp,28h
  17.       invoke MessageBox, NULL, &MsgBoxText, &MsgCaption, MB_OK
  18.       invoke ExitProcess,NULL
  19. WinMain endp
  20. end

Как Братец Черепаха всех удивил

Как-то раз мальчик Джоэль спросил дядюшку Римуса, правда ли, что Братец Кролик хитрее всех других соседей? Дядюшка Римус улыбнулся и ответил, что Братец Кролик и вправду очень хитрый, но не хитрее Братца Черепахи, и рассказал такую сказку.Как-то раз матушка Медоус решила приготовить для всех соседей леденцы. Ей в помощь набежали все ее соседи. Каждый вносил свою лепту в приготовление леденцов.

Все работали дружно, никто никого не обижал, так как все свои раздоры они оставляли за дверью, а пока готовилась патока, звери стали похваляться,Кролик — что он всех быстрее, Лис — что он всех хитрее, Волк — что он всех свирепей, Медведь — что он всех сильнее. А Братец Черепаха все помалкивал, но когда услышал слова Медведя, объявил, что он самый сильный среди всех. Все засмеялись, а Братец Черепаха попросил у матушки Медоус самую крепкую веревку и позвал всех зверей к пруду. Там он передал один конец веревки Братцу Медведю, а сам взял другой конец и нырнул в пруд. Он привязал свой конец к толстой коряге и крикнул Медведю, «Тяни!».Долго мучился Братец Медведь, но все без толку, ему взялся помогать Братец Волк, а затем и все остальные. Устали звери, перестали тянуть, а Братец Черепаха отвязал свой конец и вылез на корягу. Звери поверили ему. Все вернулись в дом.

Братец Лис и Братец Кролик

Гонялся Братец Лис за Братцем Кроликом, да все никак не мог его изловить, вот он и задумал хитрость. При встрече с Братцем Кроликом очень дружелюбно предложил ему поболтать, но Кролик был всегда начеку. Он не разрешил Лису приблизиться, сославшись на то, что у него сегодня много блох. Братец Лис передал ему слова Братца Медведя, которому не нравилось, что соседи все время ссорятся. Братец Кролик сделал вид, что поверил, и пригласил Братца Лиса назавтра в гости. Братец Лис согласился. На следующий день Кролик приготовил хороший обед и стал ждать. А Лис подкрался и спрятался за дверью, но Крольчонок увидел кончик лисьего хвоста и не открыл дверь. А Братец Лис послал Братца Ежа объяснить, что был болен и не смог прийти, но в свою очередь приглашает братца Кролика к себе на обед. На следующий день Кролик поскакал к дому Лиса. Он увидел, что тот сидит в кресле весь перемотанный, а на столе пустая миска и ножик.

Кролик из-за двери спросил, не курочка ли у него на обед, а когда услышал подтверждение, заявил, что он приготовил ее без укропа, значит, нужно принести зелень. А сам быстренько прыгнул в кусты. Братец Лис мгновенно скинул с себя одеяло и помчался за Братцем Кроликом, а тот побежал в другую сторону, да еще и подразнил лиса

Расширенные стили окна

Расширенный стиль окна Значение Описание
Bin Hex
WS_EX_LEFT 0000000000000000000 0​ Окно с левосторонним выравниванием элементов и текста
WS_EX_LTRREADING Текст окна отображается слева направо
WS_EX_RIGHTSCROLLBAR Вертикальная полоса прокрутки (scrollbar) в правой части окна
WS_EX_DLGMODALFRAME 0000000000000000001 1​ окно с двойной рамкой может сочетаться с WS_CAPTION
WS_EX_ 0000000000000000010 2​
WS_EX_NOPARENTNOTIFY 0000000000000000100 4​ Дочернее окно, созданное с этим стилем не посылает сообщение WM_PARENTNOTIFY родительскому окну, когда оно создается или разрушается
WS_EX_TOPMOST 0000000000000001000 8​ Определяет, что окно, созданное с этим стилем должно быть размещено выше всех, не самых верхних окон и должно стоять выше их, даже тогда, когда окно дезактивировано
WS_EX_ACCEPTFILES 0000000000000010000 10​ Определяет окно, способное принимать перетаскиваемые на него файлы из «Проводника Windows»
WS_EX_TRANSPARENT 0000000000000100000 20​ прозрачное окно
WS_EX_MDICHILD 0000000000001000000 40​ Создает MDI дочернее окно
WS_EX_TOOLWINDOW 0000000000010000000 80​ окно с тонким заголовком
WS_EX_WINDOWEDGE 0000000000100000000 100​ окно имеет рамку с выпуклым краем
WS_EX_PALETTEWINDOW 0000000000110001000 188​ WS_EX_WINDOWEDGE+WS_EX_TOOLWINDOW+WS_EX_TOPMOST
WS_EX_CLIENTEDGE 0000000001000000000 200​ окно с «утопленной» клиентской частью
WS_EX_OVERLAPPEDWINDOW 0000000001100000000 300​ WS_EX_CLIENTEDGE+WS_EX_WINDOWEDGE
WS_EX_CONTEXTHELP 0000000010000000000 400​ включает кнопку помощи (знак вопроса) в заголовок окна
WS_EX_ 0000000100000000000 800​
WS_EX_RIGHT 0000001000000000000 1000​ Окно с правосторонним выравниванием элементов и текста
WS_EX_RTLREADING 0000010000000000000 2000​ Текст окна отображается справа налево
WS_EX_LEFTSCROLLBAR 0000100000000000000 4000​ Размещает вертикальную полосу прокрутки (scrollbar) в левой части окна
WS_EX_ 0001000000000000000 8000​
WS_EX_CONTROLPARENT 0010000000000000000 10000 Включает возможность навигации пользователя по элементам формы с использованием клавиши TAB
WS_EX_STATICEDGE 0100000000000000000 20000 Окно с трехмерным стилем рамки
WS_EX_APPWINDOW 1000000000000000000 40000 на панель задач выводится кнопка окна

CeateWindowEx(A/W)DestroyWindow
Код (C):

  1. BOOL WINAPI DestroyWindow(
  2. __in HWND hWnd // Дескриптор уничтожаемого окна
  3. );

Неудача Братца Волка

Братец Лис был очень зол на Братца Кролика за его проделки, встретил он как-то Братца Волка и поделился с ним своей обидой. Братец Волк предложилпомощь, как заманить Братца Кролика в дом Лиса и изловить его. Он посоветовал Лису притвориться мертвым, а сам побежал к домику Братца Кролика сообщить печальную новость.

Кролик решил сам убедиться в смерти Лиса и тихонько поскакал к его жилищу. Заглянул в щелку. А Братец Лис лежит и не шевелится. Тогда Братец Кролик тихонько говорит.

Но Братец Лис лежал тихо. Тогда Братец Кролик повторил свои слова уже громче. Братец Лис поднял лапы и завопил «Ого-го». Ну а Братец Кролик быстренько ускакал восвояси.

Как Братец Кролик выдоил Матушку Корову

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

Корова боднула дерево, оно не шелохнулась, она боднула сильнее, без толку. Тогда она разбежалась и со всего размаху ткнула дерево рогами, да так, что один рог застрял в дереве. А Братцу Кролику только этого и нужно было добиться. Он поскакал домой, привел крольчиху и крольчат с ведрами и ведрышками, они выдоили Матушку Корову без остатка.

Храбрый Братец Опоссум

Как-то ночью зашелБратец Опоссум к Братцу Еноту в гости. Они угостились тушеной морковкой, выкурили по сигаре и вышли погулять. По дороге Братец Опоссум наелся фиников. А Братец Енот – лягушек да головастиков. Гуляли они и услышали, как вдали лает собака. Вот они стали друг у друга спрашивать, что каждый из них сделает, если на них нападет собака.

Опоссум заявил, что он не даст Енота в обиду, а Енот, что если собака сунется, он ей все ребра пересчитает. А собака учуяла наших друзей и кинулась на них. Братец Опоссум от страха завалился на спину и притворился мертвым. А Братец Енот вступил в драку и порядком потрепал собаку, она еле вырвалась и убежала. Братец Енот отряхнулся и пошел домой, а Братец Опоссум еще немного полежал, потом вскочил и поплелся восвояси. На следующий день бывшие друзья встретились, но Енот даже здороваться с Опоссумом не захотел, так как он струсил и бросил его одного. Братец Опоссум стал оправдываться, что упал на спину не от страха, а потому что боится щекотки.

Братец Кролик и Братец Воробушек

Как-то раз, когда мальчик Джоэль прибежал к дядюшке Римусу послушать очередную сказку, старик выглядел расстроенным, он был недоволен Джоэлем за то, что тот наябедничал матери на своего братишку, и рассказал ему сказку про ябеду Воробышка.

Вскоре после того, как Братец Черепаха перехитрил Братца Кролика, Кролик сильно злился. Громко выражал свое негодование, а затем воскликнул, что опять запряжет Братца Лиса и покажет всем, кто в лесу хозяин. Всё это слышал воробышек и пообещал всё рассказать Братцу Лису. Кролик смутился, а потом решил, что братец Лис поверит первому, кто ему расскажет.

Придумав, как ему поступить при встрече с Лисом, он весело поскакал по дорожке. Навстречу ему – Лис. Братец Кролик накинулся на него, якобы за то, что тот обещал сжить его со свету, передушить крольчат и сжечь его дом. Тут, мол, он не удержалсяи обругал Лиса. Тот удивился, спросил, кто ему это все сказал. «Братец Воробышек» — ответил Кролик. Братец Лис посоветовал не верить ерунде, а сам был очень зол на Воробышка. И когда тот к нему подлетел и принялся что-то щебетать про Братца Кролика, БратецЛис прикинулся глуховатым, просил подлететь поближе и, наконец,сесть ему на язык. Воробышек так и сделал. Больше его никто не видел, только на земле валялось несколько перышек.

Цикл обработки сообщений

  1. извлекает из очереди сообщений очередное сообщение, требующее обработки;
  2. приводит полученное сообщение к аппаратно-независимому виду;
  3. передает его соответствующей оконной процедуре, которая его и обрабатывает.

GetMessage(A/W)
Код (C):

  1. BOOL WINAPI GetMessage(
  2. __out LPMSG lpMsg, /* адрес структуры MSG, в которую заносится
  3. информация о сообщении извлеченном из очереди сообщений */
  4. __in_opt HWND hWnd, /* Дескриптор окна-адресата сообщения (если NULL, то извлекаются все сообщения, адресованные всем окнам данного приложения) */
  5. __in UINT wMsgFilterMin,// Минимальный код извлекаемого сообщения
  6. __in UINT wMsgFilterMax // Максимальный код извлекаемого сообщения
  7. );

GetMessage(A/W)

  • Ненулевое положительное число ― если из очереди извлечено сообщение;
  • 0 ― если получено сообщение WM_QUIT, требующее закрыть приложение;
  • -1 ― если в процессе работы функции произошла какая-то ошибка

wMsgFilterMin wMsgFilterMax
Код (ASM):

  1. MSG STRUCT STRUCT_ALIGN
  2.     hwnd        QWORD ? ;Дескриптор окна, которому адресовано сообщение
  3.     message        DWORD ?,?;Код сообщения
  4.     wParam        QWORD ? ;Параметр сообщения (зависит от кода)
  5.     lParam        QWORD ? ;Параметр сообщения (зависит от кода)
  6.     time        DWORD ? ;Время, когда сообщение было помещено в очередь
  7.     pt        POINT <> ;Позиция курсора мыши в момент, когда сообщение было помещено в очередь
  8.                        DWORD ?
  9. MSG ENDS

DispatchMessage(A/W)
Код (C):

  1. LRESULT WINAPI DispatchMessage(
  2. __in const MSG *lpmsg // адрес структуры MSG с передаваемым сообщением
  3. );

DispatchMessage(A/W)

Как Братец Кролик создал первую программу

binasm.bat
Код (DOS):

  1. :: очистка экрана
  2. cls
  3. :: имя asm-файла без расширения
  4. set filename=%~n1
  5. :: здесь путь к папке masm64, у Вас он может быть другим
  6. set %masm64_path%=\masm64\
  7. :: если существует exe-файл с таким же именем ― удаляем его
  8. if exist %filename%.exe del %filename%.exe
  9. :: компиляция
  10. :: если во время компиляции будут ошибки, тогда они будут перечислены в файле errors.txt
  11. %masm64_path%bin\ml64 /c %filename%.asm >> errors.txt
  12. :: обнаружены ошибки компиляции ― выходим
  13. if errorlevel 1 exit
  14. :: линковка
  15. :: если во время линковки будут ошибки ― тогда они будут перечислены в файле errors.txt
  16. %masm64_path%bin\link /SUBSYSTEM:WINDOWS /entry:WinMain %filename%.obj >> errors.txt
  17. :: обнаружены ошибки линковки ― выходим
  18. if errorlevel 1 exit
  19. :: раз мы здесь ― значит ошибок нет ― удаляем «программный мусор»
  20. del %filename%.obj
  21. del errors.txt

Сказка про лошадь Братца Кролика

Вскоре после приключения с чучелом Братец Кролик навестил своих друзей Матушку Медоус с дочками. Смешливые девочки стали подтрунивать над Братцем Кроликом.

Братец Кролик прервал их смех, сообщив, что Братец Лис у папаши Братца Кролика «тридцать лет был верховой лошадью». Когда на следующий день к семейству Медоус заглянул Братец Лис. Как только начал рассказывать про чучелко, неугомонные девочки спросили у него про верховую лошадь. Братец Лис пообещал разобраться.

Обозленный Лис помчался к дому Братца Кролика. Дом, конечно, был заперт.На грозный стук Лиса Кролик ответил слабеньким голоском, что он заболел и попросил Братца Лиса сбегать за доктором. Но у Братца Лиса были свои планы. Он хотел выманить кролика из дому и придумал, что семейство Медоус устраивают праздник, и он обещал привести Кролика. Братец Кролик согласился поехать, если Братец Лис его отвезет. Лису настолько хотелось вывести Кролика на чистую воду, что он выполнил все просьбы-требования Братца Кролика. В результате он оказался взнузданным как настоящая лошадка. Даже шпоры не забыл Кролик и заставил его резво доскакать до дома Матушки Медоус, которая вместе с дочками еще с окна видела, на какой лошадке прискакал Братец Кролик. А хитрец привязал Лиса у дверей, как ни в чем ни бывало вошел в дом, заявив:

Как Братец Черепаха победил Братца Кролика

Как-то раз дядюшка Римус рассказал мальчугану Джоэлю, что не всегда Братец Кролик выходил победителем из своих проделок. Как-то раз он скакал по дорожке и повстречал Братца Черепаху. Они разговорились как старые друзья, слово за слово, и зашел у них спор, кто из них двоих быстрее. Спорили они долго, а потом решили биться о заклад. У обоих нашлось для этой цели 50 долларов.

Друзья выбрали судью — Братца Сарыча, пригласили Матушку Медоус с дочками и другихсоседей. Отмерили пять миль, у каждой мили поставили столб. Кролик решил бежать по дорожке, а Братец Черепаха предпочел бежать через лес.

Пока Братец Кролик тренировался, Братец Черепаха готовился по-своему. У него была жена и четверо детей, все они были до того похожи друг на другатак, что их невозможно было различать. В день состязания они встали затемно и заняли свои местау столбов. Наконец был дан старт, Братец Кролик помчался, а Братец Черепаха отполз в сторонку. У первого столба Кролика сбил с толку ответ сына Черепахи.

Кролик помчался дальше, но у каждого столба ему отвечали детки и жена Братца Черепахи. Так Черепаха выиграл пари, а Кролик был посрамлен.

Римус считает, что именно от животных люди переняли способность смеяться друг над другом и проявлять хитрость.

Регистрация класса окна

Класс окнаWNDCLASSEX
Код (ASM):

  1. WNDCLASSEX STRUCT
  2.   cbSize            DWORD ? ;Размер структуры
  3.   style             DWORD ? ;стиль класса
  4.   lpfnWndProc       QWORD ? ;адрес оконной процедуры
  5.   cbClsExtra        DWORD ? ;объем дополнительной памяти резервируемой за структурой (обычно 0)
  6.   cbWndExtra        DWORD ? ;объем дополнительной памяти за экземпляром окна оконной процедуры (обычно 0)
  7.   hInstance         QWORD ? ;дескриптор модуля, в котором описана оконная процедура
  8.   hIcon             QWORD ? ;дескриптор иконки (если не используется иконка по умолчанию)
  9.   hCursor           QWORD ? ;дескриптор курсора (если не используется курсор по умолчанию)
  10.   hbrBackground     QWORD ? ;дескриптор кисти или системный цвет фона
  11.   lpszMenuName      QWORD ? ;адрес строкового имени ресурса меню (NULL если меню нет) или его идентификатор
  12.   lpszClassName     QWORD ? ;адрес строкового имени класса
  13.   hIconSm           QWORD ? ;дескриптор малой иконки, ассоциированной с классом
  14. WNDCLASSEX ENDS

CLASS STYLE ― CS_

Стиль класса Значение Описание
bin Hex
CS_VREDRAW 0000000000000001 1​ Перерисовывать окно при изменении вертикальных размеров
CS_HREDRAW 0000000000000010 2​ Перерисовывать все окно при изменении ширины
CS_KEYCVTWINDOW 0000000000000100 4​ В окне выполняется преобразование виртуальных клавиш
CS_DBLCLKS 0000000000001000 8​ Посылать сообщение от мыши при двойном щелчке в пределах окна
CS_ 0000000000010000 10​ ?​
CS_OWNDC 0000000000100000 20​ У каждого окна уникальный контекст устройства
CS_CLASSDC 0000000001000000 40​ Контекст устройства, который будет разделяться всеми окнами класса. При нескольких потоках операционная система разрешит доступ только одному потоку
CS_PARENTDC 0000000010000000 80​ У дочернего окна будет область отсечки от родительского. Повышает производительность
CS_NOKEYCVT 0000000100000000 100​ Отключено преобразование виртуальных клавиш
CS_NOCLOSE 0000001000000000 200​ Отключить команду закрыть
CS_ 0000010000000000 400​ ?​
CS_SAVEBITS 0000100000000000 800​ Позволяет сохранять область экрана в виде битовой матрицы закрытую в данный момент другим окном, используется для восстановления экрана
CS_BYTEALIGNCLIENT 0001000000000000 1000 (по горизонтали) выравнивание рабочей области окна по границе байта. Влияет на ширину окна и его горизонтальное положение на экране
CS_BYTEALIGNWINDOW 0010000000000000 2000 (по вертикали) выравнивает окна по границе байта
CS_GLOBALCLASS,
CS_PUBLICCLASS
0100000000000000 4000 Позволяет приложению создавать окно класса независимо от значения параметра hInstance, передаваемого в функцию CreateWindow или CreateWindowEx. Если вы не укажете этот стиль, параметр hInstance, передаваемый в функцию CreateWindow (или CreateWindowEx), должен совпадать с параметром hInstance, передаваемым в функцию RegisterClass. Вы можете создать глобальный класс, создав класс окна в динамически подключаемой библиотеке (DLL) и указав имя библиотеки DLL в реестре под следующими ключами:
Создавать глобальный класс, который можно поместить в динамическую библиотеку dll.
Символьное обозначение Цвет «по-умолчанию» значение
в win.h
COLOR_ACTIVEBORDER Белый 10
COLOR_ACTIVECAPTION Черный _____ 2
COLOR_APPWORKSPACE Темно-серый 12
COLOR_BACKGROUND Темно-серый 1
COLOR_BTNFACE Белый 15
COLOR_BTNSHADOW Светло-серый 16
COLOR_BTNTEXT Темно-серый 18
COLOR_CAPTIONTEXT Черный 9
COLOR_GRAYTEXT Темно-серый 17
COLOR_HIGHLIGHT Темно-серый 13
COLOR_HIGHLIGHTTEXT Синий 14
COLOR_INACTIVEBORDER Светло-серый 11
COLOR_INACTIVECAPTION Синий 3
COLOR_MENU Бледно-голубой 4
COLOR_MENUTEXT Черный 7
COLOR_SCROLLBAR На фон попадает все то, что собой закрыло окно
COLOR_WINDOW Белый 5
COLOR_WINDOWFRAME Белый 6
COLOR_WINDOWTEXT Черный 8

RegisterClassEx(A/W)
Код (C):

  1. ATOM WINAPI RegisterClassEx(
  2. __in const WNDCLASSEX *lpwcx // указатель на структуру WNDCLASSEX
  3. );

UnRegisterClass(A/W)
Код (C):

  1. BOOL WINAPI UnregisterClass(
  2. __in LPCTSTR lpClassName, // адрес строки с именем удаляемого класса
  3. __in_opt HINSTANCE hInstance /* дескриптор модуля, в котором был создан
  4. класс */
  5. );

UnregisterClass(A/W)

Вывод текста при помощи функции TabbedTextOut

TabbedTextOut
Код (C):

  1. LONG TabbedTextOut (
  2. _In_           HDC     hDC,
  3. _In_        int x, //логическая x-координата начала строки
  4. _In_        int y, //логическая y-координата начала строки
  5. _In_        LPCTSTR lpszString, //указатель на строку
  6. _In_        int nCount,//число символов в строке. Если nCount = -1, тогда длина вычисляется
  7. _In_        int nTabPositions, //число значений в массиве позиций позиции табуляции.
  8. _In_ const    LPINT lpnTabStopPositions,/* Указатель на массив, содержащий позиции позиции
  9. табуляции (в логических модулях). Табуляторы должны сортироваться в увеличивающемся
  10. порядке, самое маленькое x-значение должно быть первый элементом массива */
  11. _In_        int nTabOrigin /* x-координата исходной позиции, из которой позиции табуляции
  12. расширены (в логических модулях) */
  13. );

nTabPositions lpnTabStopPositions NULLnTabPositions lpnTabStopPositions lpnTabStopPositions nTabPositionsnTabOrigin TabbedTextOut nTabOrigin nTabOriginTabbedTextOut SetTextAlign nFlags TA_UPDATECPxyTabbedTextOut
Код (ASM):

  1. TabbedTextOut1::;вывод текста при помощи функции TabbedTextOut
  2. @@     mov r9d,stringtable4rbx
  3.         or r9,r9
  4. jz a1
  5. invoke TabbedTextOut,MemDC,LEFT,y,,-1,,,
  6. add y,edi
  7.         add ebx,4
  8.         jmp @b
  9. a1 …

Вывод текста при помощи функции PolyTextOut

PolyTextOut
Код (C):

  1. BOOL PolyTextOut(
  2.     HDC hdc,    // дескриптор контекста устройства
  3.     CONST POLYTEXT *pptxt, /* Указатель на массив структур POLYTEXT,
  4. описывающих строки, которые будут выведены. Массив содержит одну
  5. структуру для каждой строки, которая будет выведена */
  6.     int cStrings // число структур POLYTEXT в массиве pptxt
  7.    );

Код (ASM):

  1. POLYTEXTA STRUCT
  2.   x         DWORD       ?
  3.   y         DWORD       ?
  4.   n         DWORD       ?
  5.   lpStr     DWORD       ?
  6.   uiFlags   DWORD       ?
  7.   icl       RECT        <>
  8.   pdx       DWORD       ?
  9. POLYTEXTA ENDS

POLYTEXT SetTextAlignGetTextAlign
Код (ASM):

  1. .data
  2. pptxt POLYTEXT <,TOP+16*, expTxt6b-expTxt6a,expTxt6a,ETO_OPAQUE,{,,100,200},>
  3.       POLYTEXT <,TOP+16*1, expTxt6c-expTxt6b,expTxt6b,ETO_OPAQUE,{,,100,200},>
  4.       POLYTEXT <,TOP+16*2, expTxt6d-expTxt6c,expTxt6c,ETO_OPAQUE,{,,100,200},>
  5.       POLYTEXT <,TOP+16*3, expTxt6e-expTxt6d,expTxt6d,ETO_OPAQUE,{,,100,200},>
  6.       POLYTEXT <,TOP+16*4, expTxt6f-expTxt6e,expTxt6e,ETO_OPAQUE,{,,100,200},>
  7.       POLYTEXT <,TOP+16*5, expTxt6g-expTxt6f,expTxt6f,ETO_OPAQUE,{,,100,200},>
  8.       POLYTEXT <,TOP+16*6, expTxt6h-expTxt6g,expTxt6g,ETO_OPAQUE,{,,100,200},>
  9.       POLYTEXT <,TOP+16*7, expTxt6i-expTxt6h,expTxt6h,ETO_OPAQUE,{,,100,200},>
  10.       POLYTEXT <,TOP+16*8, expTxt6j-expTxt6i,expTxt6i,ETO_OPAQUE,{,,100,200},>
  11.       POLYTEXT <,TOP+16*9, expTxt6k-expTxt6j,expTxt6j,ETO_OPAQUE,{,,100,200},>
  12.       POLYTEXT <,TOP+16*10,expTxt6l-expTxt6k,expTxt6k,ETO_OPAQUE,{,,100,200},>
  13.       POLYTEXT <,TOP+16*11,expTxt6m-expTxt6l,expTxt6l,ETO_OPAQUE,{,,100,200},>
  14.       POLYTEXT <,TOP+16*12,expTxt6n-expTxt6m,expTxt6m,ETO_OPAQUE,{,,100,200},>
  15.       POLYTEXT <,TOP+16*13,expTxt6o-expTxt6n,expTxt6n,ETO_OPAQUE,{,,100,200},>
  16.       POLYTEXT <,TOP+16*14,expTxt6p-expTxt6o,expTxt6o,ETO_OPAQUE,{,,100,200},>
  17.       POLYTEXT <,TOP+16*15,expTxt6q-expTxt6p,expTxt6p,ETO_OPAQUE,{,,100,200},>
  18.       POLYTEXT <,TOP+16*16,expTxt6r-expTxt6q,expTxt6q,ETO_OPAQUE,{,,100,200},>
  19.       POLYTEXT <,TOP+16*17,expTxt6s-expTxt6r,expTxt6r,ETO_OPAQUE,{,,100,200},>
  20.       POLYTEXT <,TOP+16*18,aStatic -expTxt6t,expTxt6s,ETO_OPAQUE,{,,100,200},>
  21. expTxt6a db ‘Раз после ужина мальчик прибежал к старому негру, чтобы послушать ещё про Братца Кролика и его’
  22. expTxt6b db
  23.     …
  24. PolyTextOut1::;вывод текста при помощи функции PolyTextOut
  25. invoke PolyTextOut,MemDC,&pptxt,19
Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Альмадела Данза
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: