Люди помогите плиз нубу. Я вот решил изучать программирование на асм под окна на практике (чёт ерунду какую то сказал ) Програмку "хеллоу ворлд" я уже умею делать. А вот теперь решил сделать свой блокнотик, типа виндозного, тока примитивный - чисто тока чтоб можно было чёнить напечатать и отсейфить. Так вот что мне нужно: какие в данной задаче мне надо будет использовать WinApi функции? Оч хочется списочек получить или дайте ссылок чё почитать на эту тему
Ок. Ща закачаю себк на кпк и буду сёня читать Кстати а существуют ли какие нить основные функции вин апи? Если да - то могли бы мне их выписать
Выковырнул из блокнота таблицу импорта: Код (Text): [SHELL32.dll] ShellAboutA DragFinish DragQueryFileA SHGetSpecialFolderPathA DragAcceptFiles ShellExecuteA [KERNEL32.dll] ExitProcess GetModuleHandleA GetStartupInfoA GetCommandLineA GlobalFree GetLocaleInfoA lstrcpyA MulDiv CreateFileA GetLastError lstrcatA FindClose FindFirstFileA lstrcmpA GetProfileStringA lstrlenA RtlMoveMemory lstrcpynA LocalReAlloc LocalLock LocalAlloc LocalUnlock _lclose _lwrite DeleteFileA _lcreat _lopen _lread _llseek LocalFree GlobalUnlock GlobalLock GlobalAlloc GetLocalTime GetTimeFormatA GetDateFormatA lstrcmpiA [USER32.dll] MoveWindow InvalidateRect SetFocus PostMessageA GetFocus SendMessageA SetCursor ReleaseDC GetDC LoadIconA WinHelpA SetForegroundWindow EndDialog ShowWindow GetLastActivePopup EnableMenuItem DefWindowProcA MessageBoxA MessageBeep DestroyWindow IsIconic PostQuitMessage GetMessageA DispatchMessageA TranslateMessage TranslateAcceleratorA IsDialogMessageA SetWindowTextA CharNextA CheckMenuItem GetSubMenu CloseClipboard IsClipboardFormatAvailable OpenClipboard GetMenu LoadStringA LoadAcceleratorsA GetSystemMenu RegisterWindowMessageA SetWindowLongA CreateWindowExA LoadCursorA RegisterClassExA GetSystemMetrics UpdateWindow CharPrevA GetClientRect PeekMessageA SetDlgItemTextA TabbedTextOutA CreateDialogParamA EnableWindow GetWindowTextA SendDlgItemMessageA GetDlgCtrlID ChildWindowFromPoint ScreenToClient GetCursorPos GetDlgItemTextA wsprintfA [GDI32.dll] DeleteObject CreateFontIndirectA GetDeviceCaps GetObjectA GetStockObject SelectObject DeleteDC AbortDoc EndDoc EndPage StartPage StartDocA SetAbortProc GetTextExtentPointA CreateFontA GetTextMetricsA SetBkMode SetMapMode LPtoDP SetWindowExtEx SetViewportExtEx GetTextCharset CreateDCA [comdlg32.dll] CommDlgExtendedError GetSaveFileNameA PageSetupDlgA FindTextA ChooseFontA GetOpenFileNameA GetFileTitleA [ADVAPI32.dll] RegSetValueExA RegQueryValueExA RegCloseKey RegCreateKeyA RegOpenKeyA Вот какие функции надо использовать А вообще, ИМХО, начинать надо не со списка функций, а с понимания того, как сопстно создаются элементы всего етого дружественного пользовательского интерфейса, и как они взаимодействуют с системой. Кого советовать почитать - даже не знаю. Сам учился методом тыка по МСДН-у и по форуму (не по WASM)... Знал только, что CreateWindowEx - это главное.
Вот вам. Это кусок из моей статьи по АПИ, которую я пока "пишу в стол": Вот как происходит диалог оконной программы с системой. Сначала окно создаётся, и при создании регистрируется, получая уникальный четырёхбайтный идентификатор. Обычно (в основном для удобства программиста, т.к. можно было бы объявить и как 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. Вот. Это первая часть. ЗЫ Если кто где-нибудь здесь найдёт косяк, правьте нещадно!
DEEP многабукаф может лучше оформить в виде кода с подробным комментарием? Иначе такую воду никто читать не будет...
Код будет. Но сначала - ОЧЕНЬ подробные и разжёванные объяснения. Целевая аудитория - именно новички, которые не знают, как особо-то к апи подступиться. А поэтому сначала теория. Я просто пробовал знакомым объяснять сразу на примере кода - не понимают, окоянные Щас будет вторая часть. Она уже с кодом.
Дип, горячо поддерживаю! Нормальные статьи. И нужные. Если разжевать основы, чтобы поняли даже те, кто умеет только сказать му-му и мама, То это самое главное... база, так сказать. P.S. Блин, не могу не добавить. Если бы все книги по асм писались так доходчиво... Замечательный стиль изложения!
Новые статьи конечно здорово но по апи и так есть много хорошего чтива: ицзелион, рихтер, после них ничего кроме мсдн ненадо... DEEP надо бы чтонить по-замысловатее имхо.
Novi4ek ну пускай сначала парочку статей для самых деревянных напишет А то вот мне пока не разобратся с вин апи