Помогите с win api

Тема в разделе "WASM.BEGINNERS", создана пользователем Loginanton, 8 май 2008.

  1. Loginanton

    Loginanton New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    74
    Люди помогите плиз нубу. Я вот решил изучать программирование на асм под окна на практике (чёт ерунду какую то сказал :) ) Програмку "хеллоу ворлд" я уже умею делать. А вот теперь решил сделать свой блокнотик, типа виндозного, тока примитивный - чисто тока чтоб можно было чёнить напечатать и отсейфить. Так вот что мне нужно: какие в данной задаче мне надо будет использовать WinApi функции? Оч хочется списочек получить или дайте ссылок чё почитать на эту тему
     
  2. G0L1a7h

    G0L1a7h New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2008
    Сообщения:
    41
    клад для новичка -- _http://wasm.ru/publist.php?list=1
     
  3. tmp_2008

    tmp_2008 New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    7
    Привет.
    Почитай уроки Iczelion'а на этом сайте. Как раз по теме.
     
  4. tmp_2008

    tmp_2008 New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    7
    Подскажите, пожалуйста, где взять полный справочник по WinAPI? И хорошо бы на русском...
    Спасибо.
     
  5. Loginanton

    Loginanton New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    74
    Ок. Ща закачаю себк на кпк и буду сёня читать :)
    Кстати а существуют ли какие нить основные функции вин апи? Если да - то могли бы мне их выписать
     
  6. Loginanton

    Loginanton New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    74
    tmp_2008 во вроде норм - http://develab.narod.ru/api/
     
  7. G0L1a7h

    G0L1a7h New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2008
    Сообщения:
    41
    поищи asm world -- есть статьи,справочник по винапи..но и про msdn не забывай.
     
  8. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    Выковырнул из блокнота таблицу импорта:

    Код (Text):
    1. [SHELL32.dll]
    2. ShellAboutA
    3. DragFinish
    4. DragQueryFileA
    5. SHGetSpecialFolderPathA
    6. DragAcceptFiles
    7. ShellExecuteA
    8.  
    9. [KERNEL32.dll]
    10. ExitProcess
    11. GetModuleHandleA
    12. GetStartupInfoA
    13. GetCommandLineA
    14. GlobalFree
    15. GetLocaleInfoA
    16. lstrcpyA
    17. MulDiv
    18. CreateFileA
    19. GetLastError
    20. lstrcatA
    21. FindClose
    22. FindFirstFileA
    23. lstrcmpA
    24. GetProfileStringA
    25. lstrlenA
    26. RtlMoveMemory
    27. lstrcpynA
    28. LocalReAlloc
    29. LocalLock
    30. LocalAlloc
    31. LocalUnlock
    32. _lclose
    33. _lwrite
    34. DeleteFileA
    35. _lcreat
    36. _lopen
    37. _lread
    38. _llseek
    39. LocalFree
    40. GlobalUnlock
    41. GlobalLock
    42. GlobalAlloc
    43. GetLocalTime
    44. GetTimeFormatA
    45. GetDateFormatA
    46. lstrcmpiA
    47.  
    48. [USER32.dll]
    49. MoveWindow
    50. InvalidateRect
    51. SetFocus
    52. PostMessageA
    53. GetFocus
    54. SendMessageA
    55. SetCursor
    56. ReleaseDC
    57. GetDC
    58. LoadIconA
    59. WinHelpA
    60. SetForegroundWindow
    61. EndDialog
    62. ShowWindow
    63. GetLastActivePopup
    64. EnableMenuItem
    65. DefWindowProcA
    66. MessageBoxA
    67. MessageBeep
    68. DestroyWindow
    69. IsIconic
    70. PostQuitMessage
    71. GetMessageA
    72. DispatchMessageA
    73. TranslateMessage
    74. TranslateAcceleratorA
    75. IsDialogMessageA
    76. SetWindowTextA
    77. CharNextA
    78. CheckMenuItem
    79. GetSubMenu
    80. CloseClipboard
    81. IsClipboardFormatAvailable
    82. OpenClipboard
    83. GetMenu
    84. LoadStringA
    85. LoadAcceleratorsA
    86. GetSystemMenu
    87. RegisterWindowMessageA
    88. SetWindowLongA
    89. CreateWindowExA
    90. LoadCursorA
    91. RegisterClassExA
    92. GetSystemMetrics
    93. UpdateWindow
    94. CharPrevA
    95. GetClientRect
    96. PeekMessageA
    97. SetDlgItemTextA
    98. TabbedTextOutA
    99. CreateDialogParamA
    100. EnableWindow
    101. GetWindowTextA
    102. SendDlgItemMessageA
    103. GetDlgCtrlID
    104. ChildWindowFromPoint
    105. ScreenToClient
    106. GetCursorPos
    107. GetDlgItemTextA
    108. wsprintfA
    109.  
    110. [GDI32.dll]
    111. DeleteObject
    112. CreateFontIndirectA
    113. GetDeviceCaps
    114. GetObjectA
    115. GetStockObject
    116. SelectObject
    117. DeleteDC
    118. AbortDoc
    119. EndDoc
    120. EndPage
    121. StartPage
    122. StartDocA
    123. SetAbortProc
    124. GetTextExtentPointA
    125. CreateFontA
    126. GetTextMetricsA
    127. SetBkMode
    128. SetMapMode
    129. LPtoDP
    130. SetWindowExtEx
    131. SetViewportExtEx
    132. GetTextCharset
    133. CreateDCA
    134.  
    135. [comdlg32.dll]
    136. CommDlgExtendedError
    137. GetSaveFileNameA
    138. PageSetupDlgA
    139. FindTextA
    140. ChooseFontA
    141. GetOpenFileNameA
    142. GetFileTitleA
    143.  
    144. [ADVAPI32.dll]
    145. RegSetValueExA
    146. RegQueryValueExA
    147. RegCloseKey
    148. RegCreateKeyA
    149. RegOpenKeyA
    Вот какие функции надо использовать :)

    А вообще, ИМХО, начинать надо не со списка функций, а с понимания того, как сопстно создаются элементы всего етого дружественного пользовательского интерфейса, и как они взаимодействуют с системой. Кого советовать почитать - даже не знаю. Сам учился методом тыка по МСДН-у и по форуму (не по WASM)... Знал только, что CreateWindowEx - это главное.
     
  9. Loginanton

    Loginanton New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    74
    DEEP а если есть времячко мог бы танкистов попросвещать в этих вопросах?
     
  10. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    Вот вам. Это кусок из моей статьи по АПИ, которую я пока "пишу в стол":

    Вот как происходит диалог оконной программы с системой. Сначала окно создаётся, и при создании регистрируется, получая уникальный четырёхбайтный идентификатор. Обычно (в основном для удобства программиста, т.к. можно было бы объявить и как DWORD) переменную для хранения идентификатора окна определяют как HWND, т.е. Handle of WiNDow. Теоретически это означает, что в системе может быть зарегистрировано одновременно до четырёх миллиардов окон (не дай Боже). На практике же такое, к счастью, никогда не случается. Но всё-таки вдумайтесь в цифру. Зачем так много? Во время работы системы даже сто открытых окон - и то перебор. Почему бы не удовольствоваться однобайтной переменной, способный хранить всего 256 значений? Ответ прост: окнами являются не только обладающие выпуклой рамкой и строкой заголовка "контейнеры" для компонентов интерфейса, но и сами эти компоненты. А в одном окне их может разместиться до сотни. А если в дело вступают управляющие элементы-"закладки", тогда вообще под тысячу и выше… Это уже не говоря о скрытых окнах и прочих зарезервированных. Ну так вот, каждое окно создаёт система, и с момента создания до времени уничтожения она посылает ему сигналы, управляющие его работой - сообщения. Каждое сообщение - это пакет из четвёрки четырёхбайтных значений. Первое - идентификатор окна, для которого данная "посылка" предназначена, второе - само сообщение (все основные системные сообщения прописаны в виде констант в модуле Windows.inc и начинаются с префикса "WM_"), третье и четвёртое - сопутствующиие параметры. Они нужны для передачи специфической информации, например, о необходимом цвете окна при его перекраске. Цикл отправки и приёма сообщений окном бесконечен, и останавливается только при его уничтожении. За их приём, обработку и возврат системе результата этой обработки отвечает так называемая оконная процедура - специальная подпрограмма, в которой программистом задаётся реакция на некоторые из сообщений. Все остальные, отклик на которые не задан явно, должны переадреовываться встроенному в систему обработчику "по умолчанию".
    Итак, попробуем-ка мы создать наше первое окно. Для этого нужно сделать вызов одной из базовых функций API - CreateWindowEx. Обратите внимание, что API-функции, работающие со строками типа ASCIZ (цепочка байт, завершаемая нулевым байтом), имеют два варианта: с постфиксом -A и -W. Для работы с ASCIZ-строками типа ANSI (обычная для не-иероглифических алфавитов кодировка - один байт = один символ) существует вариант "-А": CreateWindowExA. Если же вы намереваетесь писать программы, целевая аудитория которых - жители стран Восточной Азии (или других регионов, где вместо нормальных букв используются сотонинские значки на каждый слог), то вам придётся пользоваться кодировкой Unicode (один символ = два байта), и вызывать функцию с постфиксом -W. По умолчанию, в модуле User32.inc прописано, что если функция вызывается без постфиксов, значит юзается ANSI, т.е. CreateWindowEx приравнивается к CreateWindowExA.

    Вот. Это первая часть.
    ЗЫ Если кто где-нибудь здесь найдёт косяк, правьте нещадно! :)
     
  11. Loginanton

    Loginanton New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    74
    DEEP Браво :) Огромное тебе спасибо! Ща буду практиковать :) Давай ещё уроки - чисто для нубов :)
     
  12. BlackFire

    BlackFire New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    2
    DEEP
    многабукаф

    может лучше оформить в виде кода с подробным комментарием?
    Иначе такую воду никто читать не будет...
     
  13. Novi4ek

    Novi4ek New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2007
    Сообщения:
    317
    ура новые статьи
     
  14. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    Код будет. Но сначала - ОЧЕНЬ подробные и разжёванные объяснения. Целевая аудитория - именно новички, которые не знают, как особо-то к апи подступиться. А поэтому сначала теория. Я просто пробовал знакомым объяснять сразу на примере кода - не понимают, окоянные :dntknw:

    Щас будет вторая часть. Она уже с кодом.
     
  15. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    DEEP
    очевидных ошибок не видно и стиль у тебя очень читабельный ;)
     
  16. Loginanton

    Loginanton New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    74
    BlackFire Дип дело говорит, сначала теорию, а то вот лично я устал бится ап стену с эти вин апи
     
  17. TOLSTOPUZ

    TOLSTOPUZ New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    509
    Дип, горячо поддерживаю!
    Нормальные статьи. И нужные.
    Если разжевать основы, чтобы поняли даже те,
    кто умеет только сказать му-му и мама,
    То это самое главное... база, так сказать.

    P.S.
    Блин, не могу не добавить.
    Если бы все книги по асм писались так доходчиво...
    Замечательный стиль изложения!
     
  18. Novi4ek

    Novi4ek New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2007
    Сообщения:
    317
    Новые статьи конечно здорово но по апи и так есть много хорошего чтива: ицзелион, рихтер, после них ничего кроме мсдн ненадо... DEEP надо бы чтонить по-замысловатее имхо.
     
  19. Loginanton

    Loginanton New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    74
    Novi4ek ну пускай сначала парочку статей для самых деревянных напишет :) А то вот мне пока не разобратся с вин апи
     
  20. masm32

    masm32 New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2008
    Сообщения:
    147