Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
24 / 3 / 1
Регистрация: 21.12.2011
Сообщений: 151
1

Что это в исходнике?

23.12.2011, 15:16. Показов 1836. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть код
Assembler
1
IDI_ICON EQU 1001
что он значит?
это в описании находиться
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2011, 15:16
Ответы с готовыми решениями:

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

В процессе программы заполняется компонент TListView, необходимо найти место в исходнике, где это присходит
Друзья! То есть ситуация такая: программа не моя, есть исходник. В процессе работы выводит в...

В исходнике видно, что почти все фалы не имеют закрывающего php кода -?>
Здравствуйте. Нашел неплохой движок для своих нужд, отлично работает. Но в исходнике видно, что...

Что это за знак >> прочитал что это сдвиг вправо? что он делает
int d=6, c=5,f; f = d >> c; cout<< f; вывод 0

3
85 / 85 / 38
Регистрация: 09.12.2011
Сообщений: 174
23.12.2011, 15:34 2
константе с именем IDI_ICON присваивается значение 1001
0
24 / 3 / 1
Регистрация: 21.12.2011
Сообщений: 151
23.12.2011, 15:42  [ТС] 3
А может это быть както иконкой? файла ресурсов нет.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
invoke MessageBoxIndirect,ADDR params;
    invoke ExitProcess, 0
_output proc
    mov params.cbSize, SIZEOF MSGBOXPARAMS
    mov params.hwndOwner, 0
    invoke GetModuleHandle, 0
    mov params.hInstance, eax
    mov params.lpszText, offset _info
    mov params.lpszCaption, offset _title
    mov params.dwStyle, MB_USERICON
    mov params.lpszIcon, IDI_ICON ; вот тут .................
    mov params.dwContextHelpId, 0
    mov params.lpfnMsgBoxCallback, 0
    mov params.dwLanguageId, LANG_NEUTRAL
0
Ушел с форума
Автор FAQ
16281 / 7605 / 1066
Регистрация: 11.11.2010
Сообщений: 13,618
26.12.2011, 10:33 4
Не используем функции LoadIcon и LoadCursor
Заполняя WNDCLASS(EX) можно и не использовать функции LoadIcon и LoadCursor. Дело в том, что эти функции нужны, если загружаемая иконка или курсор изготовленны собственноручно или позаимствованы из какой-либо понравившейся программы. Для стандартных (системных) иконок, битмапов и курсоров идентификаторы неизменны и их можно посмотреть при помощи программы System Resources by The Svin, находящейся на WASM.RU -->Исходники--> Система, а при помощи «связки» из функций wsprintf + LoadIcon/Cursor/Bitmap + MessageBoxA посмотреть хэндл иконки, курсора или битмапы.
Assembler
1
2
3
4
    invoke LoadCursorA, 0, IDC_ARROW
    invoke wsprintfA, addr buffer, addr format, eax
    add esp,12
    invoke MessageBoxA, 0, addr buffer, addr Caption, 0
Полученный хэндл вставлялся в программу, выводящую окно, и проверялся результат.
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
.686P
.model flat
includelib user32.lib
includelib kernel32.lib
include windows.inc
extern _imp__CreateWindowExA@48:dword
extern _imp__DefWindowProcA@16:dword
extern _imp__DispatchMessageA@4:dword
extern _imp__GetMessageA@16:dword
extern _imp__ExitProcess@4:dword
extern _imp__RegisterClassA@4:dword 
.code
start:  xchg ebx,eax ;ebx = 0
    mov edi,offset wTitle; Имя нашего класса окна
        mov esi,400000h ; Хэндл нашей программы
; заполнение структуры wc
    push edi ;lpszClassName
    push ebx ;lpszMenuName
    push COLOR_WINDOW+1 ;hbrBackground
    push 10011h ;hCursor: Хэндл курсора 
    push ebx ;hIcon: Хэндл иконки
    push esi ;hInstance
    push ebx ;cbWndExtra
    push ebx ;cbClsExtra
    push offset WndProc;lрfnWndProc: Адрес процедуры окна
    push ebx ;style
    push esp ;адрес структуры WNDCLASSEX                   
    call _imp__RegisterClassA@4 ; регистрация нашего класса окна
    push ebx;lрParam
    push esi ;hInstance
        shl esi,9;esi=CW_USEDEFAULT
    push ebx;hMenu
    push ebx;hWndParent
    push esi;X-координата верхнего левого угла окна.
    push esi;Y-координата верхнего левого угла окна. 
    push esi;ширина окна в пикселях      
    push esi;высота окна в пикселях
    push WS_OVERLAPPEDWINDOW + WS_VISIBLE ;dwStyle
    push edi;lрWindowName
    push edi;lрClassName
    push ebx;dwExStyle
    call _imp__CreateWindowExA@48   ;создать окно
    mov ebp,esp
message_loop: push ebx  ;цикл обработки сообщений
    push ebx
    push ebx
    push ebp 
    call _imp__GetMessageA@16   
    push ebp
    call _imp__DispatchMessageA@4     ;вернуть управление Windows        
    jmp short message_loop
WndProc:
        cmp dword ptr [esp+8],WM_DESTROY;cmp uMsg,WM_DESTROY
    je @@WM_DESTROY
        jmp _imp__DefWindowProcA@16;все сообщения, не обрабатываемые в функции 
;WndProc, направляются на обработку по умолчанию  
@@WM_DESTROY: push ebx    ;если пользователь закрывает окно
    call _imp__ExitProcess@4; выходим из программы    
;--данные------------------------------------------------------
wTitle  db 'Iczelion Tutorial #3:A Simple Window in masm',0; Имя нашего окна
end start
Начав с курсоров IDC_ARROW, IDC_IBEAM очень скоро замечаем, что хэндлы курсоров могут быть только нечетными числами: 10011h, 10013h, 10015h и т.д. Теперь уже без «связки» wsprintf+LoadCursor+MessageBox подставляем значения в шаблон окна и смотрим, что будет выведено в качестве курсора. Если хэндл четный, то окно становится невидимым. Когда, хэндл окажется меньше 10011h, в качестве курсоров появятся стандартные системные иконки IDI_APPLICATION, IDI_QUESTION и т.д. то есть разница между иконкой и курсором отсутствует (на это я наткнулся случайно, когда во время заполнения WNDCLASSEX перепутал местами функции LoadIcon и LoadCursor). Для части системных курсоров и иконок в файле windows.inc константы IDC_ и IDI_ отсутствуют, константы IDI_APPLICATION и IDI_WINLOGO хотя и имеют разное значение (32512 и 32517 соответственно), но соответствуют одной и той же иконке. IDC_SIZE (=32640) и IDC_ICON (=32641), вероятно, устарели и в Windows XP не соответствуют никакому курсору. Часть курсоров, принадлежащих системе, находятся в «Панель управления» --> «Оформление и темы» --> «Указатели мыши»
Результат исследования помещен в таблицу
тип значение Оформление и темы: указатели мыши хэндл
системные иконки   
IDI_APPLICATION 32512 иконка программы большая 10003h
IDI_EXCLAMATION/IDI_WARNING 32515 предупреждение 10005h
IDI_QUESTION 32514 вопрос 10007h
IDI_HAND/IDI_ERROR 32513 ошибка 10009h
IDI_ASTERISK/IDI_INFORMATION 32516 информация 1000Bh
? ? иконка программы малая 1000Dh
IDI_WINLOGO 32517 иконка программы большая 1000Fh
системные курсоры   
IDC_ARROW 32512 Основной режим 10011h
IDC_IBEAM 32513 Выделение текста 10013h
IDC_WAIT 32514 Система недоступна 10015h
IDC_CROSS 32515 Графическое выделение 10017h
IDC_UPARROW 32516 Специальное выделение 10019h
IDC_SIZENWSE 32642 Изменение размера по диагонали 1 1001Bh
IDC_SIZENESW 32643 Изменение размера по диагонали 2 1001Dh
IDC_SIZEWE 32644 Изменение горизонтальных размеров 1001Fh
IDC_SIZENS 32645 Изменение вертикальных размеров 10021h
IDC_SIZEALL 32646 Перемещение 10023h
IDC_NO 32648 Операция невозможна 10025h
IDC_APPSTARTING 32650 Фоновый режим 10027h
IDC_HELP 32651 Выбор справки 10029h
? 32631 Рукописный ввод 1002Bh
IDC_HAND 32649 Выбор ссылки 1002Dh
? ? ? 1002Fh
? 32663 Ожидание готовности CD/DVD 10031h
IDC_SIZE 32640 - 0
IDC_ICON 32641 - 0
DJZT,
IMHO, 10011h -- это хэндл IDC_ARROW курсора в виде стрелки (основной режим), а значение 1001 это скорее всего "очепятка"
0
26.12.2011, 10:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2011, 10:33
Помогаю со студенческими работами здесь

mc68hc908 - это что это, это с чем это ??
Здравствуйте люди местные. Сам я мучаю АВР-ки, но для других я "типа" гуру, и вот пришли ко мне и...

Не могу понять, что это за реализация ORM и как это работает
Есть проект на C#, есть база данных MSSQL, есть код, который позволяет мне добавлять и удалять...

Что это может быть? или как это называется? Меня взломали!
Доброго дня всем, мне по майл.ру.агент отправили сообщением так: Витя Гасай (08.03.2011 23:29)...

При загрузке компа появляется это, не знаете что это и как исправить
при загрузке компа появляется это, не знаете что это и как исправить


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru