· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Опять много вопросов, в т. ч. чайниковых

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Авг 11, 2003 02:08:42

Извиняюсь, если я уже всех достал
1. Есть ли способ сделать окну рамку как у окна с WS_EX_TOOLWINDOW, но чтобы при этом оно было видно на таскбаре и при этом не создавать невидимых окон и не отрисовывать рамку самому?
2. Если я использую какую-нить функцию из библиотеки kernel32.dll, например, то прилинкуется весь файл kernel32.lib или только то, что нужно для вызова этой функции?
3. Поддерживают ли процесоры от AMD и Transmeta MMX инструкции?
4. Опять меню. В проге TopStyle 3 оно ещё и с тенью (скриншот в посте http://www.wasm.ru/forum/index.php?action=vthread&forum=4&topic=1995 ), причём тень полупрозрачная. Но как?
5. В справочнике от Борланда сказано, что HeapAlloc не может выделять больше 7FFF8h байт в куче. Озночает ли это, что размер кучи равен 7FFF8h или я могу выделить 10 раз по 7FFF0h байт?
6. Какой размер страницы памяти на разных версиях Винды?
7. Как использовать COM без макросов и как он вообще устроен? Если можно, дайте ссылку на хорошую статью. Те, что на Wasm.ru не годятся, т. к. не объясняют, как устроен сам COM и как выглядят его структуры
8. Я поставил дополнение к Masm8 от wasm.ru, перекомпилил одну свою прогу и её размер с 81.5 кб увеличился до 92 кб. Это глюк примочки или она туда что-то нужное добавила?


Дата: Авг 11, 2003 02:17:32

И ещё можно ли перегружать функции в MASM, например в некоторых случаях было бы удобно написать так
.elseif uMsg==WM_LBUTTONDOWN
ror lParam,16
invoke MoveWindow,hWnd,lParam,200,150,TRUE


Дата: Авг 11, 2003 02:23:05

2) В masm'е точно не прилинкует, по крайней мере даже потому
что эта библиотека динамическая.
8) Это глюк, а может фича, здесь уже об этом писалось...


Дата: Авг 11, 2003 03:07:02

Guest
7) В MASM32/COM/DOCS уже смотрели?
8) Возьмите PE Tools и воспользуйтесь Rebuild PE. Это "что-то нужное" как рукой снимет.

И ещё можно ли перегружать функции в MASM
А что в вашем примере перегружено? Не очень понятно...


Дата: Авг 11, 2003 03:16:26

Quantum
8) Ну так же не корректно, после компиляции ещё что-то rebuild'еть :-)


Дата: Авг 11, 2003 03:34:32

Guest
1) IMHO, нет. Я один раз пробовал такое делать.
5)Озночает ли это, что размер кучи равен 7FFF8h
Никак нет. Когда вы создаёте кучу, вы сами задаёте ей размер. Размер оригинальной кучи прцесса можно задавать в самом PE (опции линкера). Лимит в 7FFF8 может быть связан с архитектурой объекта HEAP. Вообще, для больших кусков памяти надо юзать MMF или VirtualAlloc.
или я могу выделить 10 раз по 7FFF0h байт?
Ну... куча, конечно, резиновая, но не до такой же степени!

Asterix
Ну так же не корректно, после компиляции ещё что-то rebuild'еть :-)
:)))


Дата: Авг 11, 2003 06:47:37

Всем спасибо
Quantum, я имею в виду, чтобы можно было написать и
invoke MoveWindow,hWnd,lParam,200,150,TRUE
и
invoke MoveWindow,hWnd,word ptr [lParam],word ptr [lParam+2],200,150,TRUE


Дата: Авг 11, 2003 19:06:21

Guest
Лучше так:
packedDW UNION
   value dd ?
   STRUCT
      loword dw ?
      hiword dw ?
   ENDS
packedDW ENDS
; . . .
movzx eax,(packedDW PTR [lParam]).loword
movzx ecx,(packedDW PTR [lParam]).hiword
invoke MoveWindow,hWnd,eax,ecx,200,150,TRUE


Дата: Авг 11, 2003 19:50:54


1. Есть ли способ сделать окну рамку как у окна с WS_EX_TOOLWINDOW, но чтобы при этом оно было видно на таскбаре и при этом не создавать невидимых окон и не отрисовывать рамку самому?


Насколько я знаю - нельзя. В случае извращений с рамкой все обычно отрисовывается ручками.

2. Если я использую какую-нить функцию из библиотеки kernel32.dll, например, то прилинкуется весь файл kernel32.lib или только то, что нужно для вызова этой функции?

В файле kernel32.lib нет никакого кода - только имена функций имеющихся в kernel32.dll так что не сложно догадаться что ничего лишнего не прилинкуется.

3. Поддерживают ли процесоры от AMD и Transmeta MMX инструкции?

AMD - Да, Transmeta - Нет, ибо он вобще не совместим с х86.

4. Опять меню. В проге TopStyle 3 оно ещё и с тенью (скриншот в посте http://www.wasm.ru/forum/index.php?action=vthread&forum=4&topic=1995 ), причём тень полупрозрачная. Но как?

Опять же - ручками, либо "полупрозрачный" стиль окна, но это только под win2k и выше.

5. В справочнике от Борланда сказано, что HeapAlloc не может выделять больше 7FFF8h байт в куче. Озночает ли это, что размер кучи равен 7FFF8h или я могу выделить 10 раз по 7FFF0h байт?

Врут поди - куча может расти пока не кончится aдрасное пространство процесса (up to 2Gb), либо у разработчиков из борланда такая кривая реализация кучи. Однако если тебе нужен непрерывный блок, стоит при линковке зарезервировать этот максимальный размер, ибо система должна знать что тут вот есть теоретическое место для роста кучи игрузить сюда всякие длл не следует =)

6. Какой размер страницы памяти на разных версиях Винды?

Это зависит не от винды, а от процессора - на x86 - 4кб, на DEC Alpha - 8кб, .NET аппликухи выравнивают секции до 8кб, чтобы значить и под альфой пахало.

7. Как использовать COM без макросов и как он вообще устроен? Если можно, дайте ссылку на хорошую статью. Те, что на Wasm.ru не годятся, т. к. не объясняют, как устроен сам COM и как выглядят его структуры

Без макросов запаришся, хотя можешь попробовать =) А структура простая - интерфейс это таблица со ссылками на фукции обьекта (vtbl), макрос просто выбирает нужный индекс из таблица, ну и естесно предопределенная структурка для данных обьекта, кароче это ООП, написанное без обьектов - очень забавная и удобная штука =)

8. Я поставил дополнение к Masm8 от wasm.ru, перекомпилил одну свою прогу и её размер с 81.5 кб увеличился до 92 кб. Это глюк примочки или она туда что-то нужное добавила?

Именно добавила "нужное", может быть нужное не тебе и не сейчас, типа отладочной инфа и прочего shit'a, но определенно нужного, для красоты =)


Дата: Авг 11, 2003 19:55:28

8. Я поставил дополнение к Masm8 от wasm.ru, перекомпилил одну свою прогу и её размер с 81.5 кб увеличился до 92 кб. Это глюк примочки или она туда что-то нужное добавила?

Поставь линкеру опцию /opt:nowin98, иначе выравнивание секции будет кратным 1000h, а не 200h. Скорее всего из-за этого.


Дата: Авг 11, 2003 21:03:37 · Поправил: Guest

masquer, ура, опять стало 81.5! А под Win9x прога работать будет?

И ещё есть ли проги, которые позволяют обнаружить утечки памяти?


Дата: Авг 12, 2003 02:30:06

Guest
А под Win9x прога работать будет?
Ну, сами подумайте... Раньше ведь работала.
И ещё есть ли проги, которые позволяют обнаружить утечки памяти?
Профилировщики, но не позволяют а помогают :-)


Дата: Авг 12, 2003 23:58:52 · Поправил: Fixer

Dr.Golova

...Transmeta - Нет, ибо он вобще не совместим с х86

http://www.uetk.com.ua/maksi/chip/cpu/transmet/tran_cpu.htm

Сейчас занимаюсь интеллектуальными устройствами на основе одноплатного компьютера с процессором Crusoe TM5400. Он полностью совместим c x86 (про MMX пока ничего сказать не могу... Проверю скажу).


Дата: Авг 13, 2003 14:27:13

Guest
Будет :)


Дата: Авг 13, 2003 19:05:11 · Поправил: Four-F

[ Guest: 5. В справочнике от Борланда сказано, что HeapAlloc не может выделять больше 7FFF8h байт в куче. Озночает ли это, что размер кучи равен 7FFF8h или я могу выделить 10 раз по 7FFF0h байт? ]

Куча разделена на блоки называемые юнитами (unit). Размер юнита 8 байт. Структура кучи такова, что адресовать можно не более чем 0FFFFh юнитов. 0FFFFh * 8 как раз и дает 7FFF8h. Если ты натравливаешь HeapAlloc на стандартную кучу процесса, то размер выделяемого блока вообще не ограничен, разумеется если вообще можно найти непрерывный блок памяти такого размера. HeapAlloc просто вызовет VirtualAlloc. Если ты сам создаешь кучу HeapCreate и ограничиваешь ее максимальный размер параметром dwMaximumSize, то это значение и будет пределом.
А вообще-то куча предназначена для блоков маленького размера < 1Кб. Блоки большего размера управляются через кучу менее эффективно. А если уж такие большие порции памяти нужны, то лучше сразу звать VirtualAlloc.


[ Guest: И ещё есть ли проги, которые позволяют обнаружить утечки памяти? ]

Иногда пользую MemProof www.automatedqa.com Но, конечно не панацея.

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.044