Win32API, как запомнить функции?

Тема в разделе "WASM.BEGINNERS", создана пользователем Error01, 15 фев 2006.

  1. Error01

    Error01 New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2005
    Сообщения:
    30
    Товарищи, каким образом вы используете Win32API?

    Вы их помните или работаете со справочником?

    У меня возникают проблеммы такого рода:

    хочу спрогить какое-нибудь действие, но не знаю каким образом.Не знаю какие там ф-ции, у этого API, есть. А просматривать >2000 функций, в поисках необходимых, мягко говоря напряжно...

    Дайте пару советов, поделитесь своим бесценным опытом...
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    обзавестись MSDN

    или на крайний случай справкой по Win32 API от Borland'а
     
  3. SolidCode

    SolidCode New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2002
    Сообщения:
    162
    Адрес:
    Kazakhstan
    Asterix

    Правильно, там и поиск есть и разбиение на разделы. Все 2000 просматривать не надо.
     
  4. SDragon

    SDragon New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2005
    Сообщения:
    133
    Адрес:
    Siberia
    Обычно пользуюсь старым Platform SDK для Win 95 в формате hlp (такая прилагалась к Delphi 3). Если, к примеру, нужно найти функции, связанные с реестром, переключаюсь в указатель и набираю "registry fu..." (выводится раздел "Registry Functions"); если нужно найти инфу о шрифтах, набираю "font..." (выводится "Font and Text Functions"). В новой MSDN таких разделов в указателе нет; там приходится лазить по дереву в содержании, чтобы найти нужный раздел. Например, список функций, связанных с реестром, расположен в Windows Development -> Windows Base Services -> Windows System Information -> SDK Documentation -> Registry Reference -> Registry Functions. Не очень-то удобно.



    Часто используемые функции запоминаются сами собой, никаких усилий для этого прилагать не нужно. Когда пишешь на Си, параметры функций подсказывает IntelliSense в Visual Studio.



    Насчет параметров сообщений есть хорошая подсказка от Реймонда Чена: во времена Windows 3.x параметр LPARAM был 32-разрядным, а WPARAM - 16-разрядным. Far pointer занимал 32 бита. Поэтому всевозможные указатели обычно передаются в LPARAM, а флаги и числа - в WPARAM. Зная эту историю, не так уж трудно запомнить, что, например, в сообщении WM_GETTEXT указатель на строку передается в LPARAM, а число символов - в WPARAM.
     
  5. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    SDragon Дополню ;)

    Можно по смыслу ф-ции, н-р

    ВзятьЗначение Get...

    УстановитьЗначение Set...

    CloseHandle - вообще универсальная.

    Или если помнишь ф-цию работы с файлами н-р CreateFile, а нужно найти поиск файла у Win32 API от Бормана есть кнопка Group и там всё для работы с файлами, M$ в этом плане правльно сделал, их названия созвучны со своим назначением.

    Ф-ции, помеченные как obsolete не используй, они для совместимости с 16-ти разрядными приложениями.
     
  6. NullSessi0n

    NullSessi0n New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2006
    Сообщения:
    322
    MSDN добыть мне сложно. А вот SDK от Delphi7 - запросто. Осталась в память о прошлых ошибках - в память о ЯВУ.

    Не вижу смысла знать все функции. Их вообще-то очень много.
     
  7. Error01

    Error01 New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2005
    Сообщения:
    30
    А если учесть еще один факт, про который я чуть-чуть забыл: знание английского в пределах церковно-приходской школы, т.е lim -> 0



    И посоветуйте какие-нибудь задачки, по теме...
     
  8. SolidCode

    SolidCode New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2002
    Сообщения:
    162
    Адрес:
    Kazakhstan
    Что делать если lim->0?

    Желательно, чтобы lim->∞. И уровень Шекспира для этого не обязателен. А элементарные знания по английскому и хороший электронный переводчик вполне могут помочь.

    Где-то были попытки переводить SDK на русский, но это не реально. Успевать за мелкомягкими. Они пишут много. Поэтому вообще полезно повышать собственный уровень знаний по английскому языку.

    А задачки по теме одни: замечательные тюториалы от Iczelion в переводе Aquila.
     
  9. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615


    Это где такое счастье дают? :)
     
  10. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Error01

    существует 2 подхода к изучению WinAPI: книжный и практический.

    Практический такой - берешь программу написанную кем-то, которая делает примерно то что ты хочешь, и просматриваешь ее секцию импорта. А дальше работает интуиция...

    Потом есть такой файл win23.hlp, там ищешь эту фунцию, а в контексте есть ссылка на тему, в которой фунция используется.

    Если не знаешь английского - то есть интернет или Сократ :).

    Но к сожалению использовать этот подход - не есть стать грамотным програмистом. Я считаю программирование это алгоритмы и технологии, а не использование уже готовых функций.
     
  11. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Error01

    Все решается по другому. Устраиваешься на работу, тебе дают проект со словами: "срок на реализацию - неделя!".

    Вот ты сразу учишься находить то что тебе надо, вычленять первостепенные задачи, написание и отладка тех мест где влечет при глюках наибольшие траблы. Я не знаю как я раньше учился но с июля прошлого года именно так и программлю, научился видеть то,чего раньше представить не мог. Ну и естественно хорошего руководителя, который бы сумел поставить цель, входные и выходные данные. А мне повезло, мой еще и OPC ковыряет :)))



    А вообще не мучайся, берешь че хочешь делать и попутно узнавай все возможные ф-ции которые тебе могут помочь, после написания 10ка ты будешь знать ответ на вопрос в 1 посте.



    удачи
     
  12. Error01

    Error01 New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2005
    Сообщения:
    30




    Я с тобой полностью согласен, в С я почто не использую функции библиотек. использую только самые необходимые.



    Вот возникла проблема решил с памятью побаловаться,

    нашел пару функций iMalloc, iFree в Help'е. Линкер выдает то что в присоединееном файле

    [​IMG] 1471769701__Link.log
     
  13. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Error01

    Ну так и набери эти имена функций в яндексе например:)

    А что касается Microsoft (R) Incremental Linker Version 5.12.8078, то наверное ответ на вопрос необходимо искать на сайте по C++ а не на wasm.ru :)?
     
  14. Error01

    Error01 New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2005
    Сообщения:
    30
    PROFi




    Что-то я не понял
     
  15. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Error01



    Incremental Linker используется для компиляци C++ (может я не прав?) и функции iMalloc, iFree это функции С++.
     
  16. Error01

    Error01 New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2005
    Сообщения:
    30
    Вообще это было в пакете MASM32



    А в С++ используют операторы new и delete
     
  17. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Error01 Наверное я не прав. Я не сильно дружу с masm32 (использую tasm32). Функции malloc и free используются не в C++, а просто в Си. Можешь привести кусок кода на asm, который выдает ошибку?
     
  18. Error01

    Error01 New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2005
    Сообщения:
    30
    Да! если Не вызываешь ф-ции,а только обьявляешь, то ругается линкер, иначе ml



    Таким образом:

    Assembling: Memory.bat

    Memory.bat(33) : error A2006: undefined symbol : alloc



    [​IMG] _14669069__Memory.bat
     
  19. Error01

    Error01 New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2005
    Сообщения:
    30
    Что это такое???????

    Вернее с чем это связано?







    [​IMG] _64306178__Dll.log
     
  20. TretS

    TretS New Member

    Публикаций:
    0
    Регистрация:
    16 мар 2005
    Сообщения:
    19
    Адрес:
    Bryansk
    PROFi

    Практический такой - берешь программу написанную кем-то, которая делает примерно то что ты хочешь, и просматриваешь ее секцию импорта.



    А самы е важные вызываются динамически!!!