Форум программистов, компьютерный форум, киберфорум
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 31.05.2013
Сообщений: 10

Регистрация окна Windows в динамической памяти

25.10.2013, 00:36. Показов 1110. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем привет.
я понимаю, что это может и не интересно но все же
вот стандартная регистрация окна
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  ;==================================================
        ; Fill WNDCLASSEX structure with required variables
        ;==================================================
 
        mov wc.cbSize,         sizeof WNDCLASSEX
        mov wc.style,          CS_HREDRAW or CS_VREDRAW \
                               or CS_BYTEALIGNWINDOW
        mov wc.lpfnWndProc,    offset WndProc
        mov wc.cbClsExtra,     NULL
        mov wc.cbWndExtra,     NULL
        m2m wc.hInstance,      hInst   ;<< NOTE: macro not mnemonic
        mov wc.hbrBackground,  COLOR_BTNFACE+1
        mov wc.lpszMenuName,   NULL
        mov wc.lpszClassName,  offset szClassName
          invoke LoadIcon,hInst,500    ; icon ID
        mov wc.hIcon,          eax
          invoke LoadCursor,NULL,IDC_ARROW
        mov wc.hCursor,        eax
        mov wc.hIconSm,        0
 
        invoke RegisterClassEx, ADDR wc
мы ее немного изменим
в eax выделенная память в размере структуры WNDCLASSEX
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
   
    
        push edi
        assume edi:ptr WNDCLASSEX
        mov edi,eax
        mov [edi].cbSize,         sizeof WNDCLASSEX
        mov [edi].style,          CS_HREDRAW or CS_VREDRAW \
                               or CS_BYTEALIGNWINDOW
        mov [edi].lpfnWndProc,    offset WndProc
        mov [edi].cbClsExtra,     NULL
        mov [edi].cbWndExtra,     NULL
        m2m [edi].hInstance,      hInst   ;<< NOTE: macro not mnemonic
        mov [edi].hbrBackground,  COLOR_BTNFACE+1
        mov [edi].lpszMenuName,   NULL
        m2m [edi].lpszClassName,  ClassName ;offset szClassName
          
        invoke LoadIcon,hInst,99    ; icon ID
       
        mov [edi].hIcon,       eax
      
        invoke LoadCursor,NULL,IDC_ARROW
          
        mov [edi]. hCursor,        eax
        mov [edi].hIconSm,        0
       pop edi
наше окошко теперь не статической выделено памяти и загрузка происходит в динамической
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.10.2013, 00:36
Ответы с готовыми решениями:

Windows инициировала точку останова при очистке динамической памяти
Собственно код, для самообразования перебрасывал адреса динамического массива в функции и издевался над ним как мог. #include...

Должен ли общий объем графической памяти складываться из зарезервированной (фиксированной) памяти и динамической (DVMT)?
Здравствуйте. Скажите, должен ли общий объем графической памяти складываться из зарезервированной (фиксированной) памяти и динамической...

Массив в динамической памяти
Помогите написать прогу в динамической памяти #include&lt;iostream.h&gt; #include&lt;conio.h&gt; #define N 10 void novmas (int A,int B) ...

2
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
25.10.2013, 03:16
Цитата Сообщение от ADoGind1 Посмотреть сообщение
в eax выделенная память в размере структуры WNDCLASSEX
интересно, если бы ты показал еще и кусок программы по выделению памяти, но я сделал проще ― Переворачиваем структуру WNDCLASS "вверх ногами" и помещаем ее в стек, как параметры передаваемые функции RegisterClassA. Значения, возвращаемые функциями LoadCursor и LoadIcon, мы посмотрим заранее. Так как курсор и иконка передаваемые нами соответствуют стандартной стрелочке и стандартной иконке, то их идентификаторы предопределены и не изменяются, то есть набора стандартных системных иконок и курсоров одни и те же, и в Win98 и WinXp. Поэтому мы и не используем LoadCursor и LoadIcon. Последним параметром в стек отправляется содержимое регистра esp указатель на структуру WNDCLASSA
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
; заполнение структуры wc и регистрация класса
    xor ebx,ebx
    mov edi,offset wTitle; Имя нашего класса окна и имя окна
    push edi;lpszClassName: Имя класса окна
   push ebx;lpszMenuName: Хэндл меню для окон, созданных из класса по умолчанию.
    push COLOR_WINDOW+1;hbrBackground: Цвет фона 
    push 10011h;hCursor: Хэндл курсора 
    push ebx;hIcon: Хэндл иконки
    push 400000h;hInstance: Хэндл модуля.
    push ebx;cbWndExtra
    push ebx;cbClsExtra
    push offset window_procedure;lрfnWndProc: Адрес процедуры окна, 
;ответственной за окна, создаваемых из класса
    push ebx;style: Стиль окон, создаваемых из этого класса. 
    push esp;адрес структуры WNDCLASSEX
    call RegisterClass; регистрация нашего класса окна
;После регистрации класса окна, мы должны вызвать CreateWindowEx, 
;чтобы создать наше окно, основанное на этом классе
в конце концов в результате получаю приложение, которое выводит окошко величиной 206 байт ― более подробно всё расписано здесь
0
1 / 1 / 0
Регистрация: 31.05.2013
Сообщений: 10
25.10.2013, 03:41  [ТС]
Цитата Сообщение от Mikl___ Посмотреть сообщение
интересно, если бы ты показал еще и кусок программы по выделению памяти,
Привет. Мики я использую стандартную функцию crt_malloc из msvcrt.inc так эта Dll есть в пакете Windws в чем проблема.
Цитата Сообщение от Mikl___ Посмотреть сообщение
Так как курсор и иконка передаваемые нами соответствуют стандартной стрелочке и стандартной иконке, то их идентификаторы предопределены и не изменяются, то есть набора стандартных системных иконок и курсоров одни и те же, и в Win98 и WinXp.
ну вот по поводу курсора соглашусь, а вот иконки можно использовать свои.
Хотя спасибо за еще один пример.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.10.2013, 03:41
Помогаю со студенческими работами здесь

Перераспределение динамической памяти
дан двумерный массив 3х5 выделить динамически память под него, затем перераспределить ее в массив 5х3, затем удалить(выделить и удалить там...

Перераспределение динамической памяти
дан двумерный массив 3х5 выделить динамически память под него, затем перераспределить ее в массив 5х3, затем удалить(выделить и удалить там...

Теория по динамической памяти
Предположим, применяется оператор new в форме для массива: p=new int ;. n ведь может быть и большим. Может n==1000000? Где запоминается,...

Выделение динамической памяти
Добрый вечер. Помогите разобраться пожалуйста! Суть такова: есть файл, в нем есть данные, мне надо их оттуда считать и вывести на...

Выделение динамической памяти
Доброго времени суток! я начинающий программист, столкнулась с такой проблемой: выделяю память под динамический массив, например ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru