
- •Оглавление
- •Цель работы
- •Краткая теория Введение в api-программирование
- •Api операционных систем
- •Widows api
- •Структура api-программ
- •Описание используемых api-функций
- •InitCommonControls
- •RegisterClassEx
- •ShowWindow Показать окно, установить статус показа. Если окно перед этим было видимо, возвращается значение - не 0. Если окно перед этим было не видимо, возвращаемое значение - 0.
- •ТеКст программы textred.Asm
- •Filedlgs.Asm
- •Rsrc.Rc
- •Результаты работы
- •Список литературы
RegisterClassEx
Регистрирует класс окна для последующего использования при вызове CreateWindowEx функции.
Синтаксис:
ATOM WINAPI RegisterClass (
WNDCLASS * lpWndClass // Указатель на WNDCLASS структуры.
);
GetSystemMetrics
Функция возвращает системную метрику и системные параметры настройки конфигурации. Системная метрика – это размеры элементов отображения Windows. Все размеры указываются в пикселях. При успехе, функция возвращает запрашиваемую системную метрику или конфигурационную установку. При ошибке возвращается ноль. Для получения дополнительной информации об ошибке, вызовите GetLastError.
Синтаксис:
int GetSystemMetrics(
int nIndex // затребованная системная метрика или системные установки
);
CreateWindowEx
Создает перекрывающее, всплывающее или дочернее окно с расширенным стилем окна. Если функция успешно завершила работу, возвращаемое значение - дескриптор созданного окна. Если функция завершилась ошибкой, возвращаемое значение - ПУСТО (NULL).
Синтаксис:
HWND CreateWindowEx(
DWORD dwExStyle, // улучшенный стиль окна
LPCTSTR lpClassName, // указатель на зарегистрированное имя класса
LPCTSTR lpWindowName, // указатель на имя окна
DWORD dwStyle, // стиль окна
int x, // горизонтальная позиция окна
int y, // вертикальная позиция окна
int nWidth, // ширина окна
int nHeight, // высота окна
HWND hWndParent, // дескриптор родительского или окна владельца
HMENU hMenu, // дескриптор меню или ID дочернего окна
HINSTANCE hInstance, // дескриптор экземпляра прикладной программы
LPVOID lpParam // указатель на данные создания окна
);
LoadMenu
Функция загружает заданный ресурс меню из исполняемого (.exe) файла программы, связанного с экземпляром приложения. Если функция завершается успешно, возвращаемое значение - дескриптор ресурса меню. Если функция завершается ошибкой, возвращаемое значение - ПУСТО (NULL).
Синтаксис
HMENU LoadMenu(
HINSTANCE hInstance, // Дескриптор модуля
LPCTSTR lpMenuName // Указатель на символьную строку с нулем в конце
);
SetMenu
Функция назначает новое меню для заданного окна.
Синтаксис
BOOL SetMenu(
HWND hWnd, // Дескриптор окна, к которому назначается меню.
HMENU hMenu // Дескриптор нового меню.
);
ShowWindow Показать окно, установить статус показа. Если окно перед этим было видимо, возвращается значение - не 0. Если окно перед этим было не видимо, возвращаемое значение - 0.
Синтаксис:
BOOL ShowWindow(
HWND hWnd, // дескриптор окна
int nCmdShow // состояние показа окна
);
UpdateWindow
Функция обновляет рабочую область заданного окна, отправляя сообщение WM_PAINT окну, если регион обновления окна не пуст. Функция отправляет сообщение WM_PAINT непосредственно оконной процедуре указанного окна, обходя очередь приложения. Если регион обновления пуст, никакое сообщение не отправляется. Если функция завершается успешно, возвращаемое значение - не 0. Если функция завершается ошибкой, возвращаемое значение - 0.
Синтаксис:
BOOL UpdateWindow(
HWND hWnd // Дескриптор окна.
);
GetMessage
Получить очередное сообщение из очереди сообщений данного приложения.
Синтаксис:
BOOL GetMessage(
LPMSG lpMsg, // указатель на структуру
HWND hWnd, // указатель окна чьи сообщения нужно обрабатывать
UINT wMsgFilterMin, // номер мимимального сообщения для выборки
UINT wMsgFilterMax // номер максимального сообщения для выборки
);
TranslateMessage
Транслировать клавиатурные сообщения в ASCII-коды. Если сообщение переведено (то есть символьное сообщение помещено в очереди сообщений потока), величина возвращаемого значения не 0. Если сообщение не переведено (то есть символьное сообщение не помещено в очереди сообщений потока), величина возвращаемого значения - 0.
Синтаксис:
BOOL TranslateMessage(
const MSG* lpMsg // Указатель на структуру MSG, которая содержит информацию о сообщении извлеченную из очереди сообщений вызывающего потока при помощи использования функции GetMessage.
);
DispatchMessage
Вернуть управление Windows с передачей сообщения предназначенному окну. Величина возвращаемого значения определяется значением, которое возвращает оконная процедура. Несмотря на то, что это значение зависит от отправляемого сообщения, возвращаемое значение, как правило, игнорируется.
Синтаксис:
LRESULT DispatchMessage(
CONST MSG *lpmsg // указатель на структуру с сообщением
);
SendMessage
Функция отправляет заданное сообщение окну или окнам. Функция вызывает оконную процедуру для заданного окна и не возвращает значение до тех пор, пока оконная процедура не обработает сообщение. Чтобы отправить сообщение и возвратить немедленно значение, используйте функцию SendMessageCallback или SendNotifyMessage. Чтобы поместить сообщение в очередь сообщений потока и возвратить немедленно значение, используйте функцию PostMessage или PostThreadMessage.
Синтаксис
LRESULT SendMessage(
HWND hWnd, // Дескриптор окна
UINT Msg, // Определяет сообщение, которое будет отправлено
WPARAM wParam, // Определяет дополнительную конкретизирующую сообщение информацию
LPARAM lParam // Определяет дополнительную конкретизирующую сообщение информацию
);
SetWindowText
Функция изменяет текст заголовка заданного окна (если таковой имеется). Если определяемое окно - орган управления, то изменяется его текст. Однако SetWindowText не может изменить текст органа управления в другом приложении.
Синтаксис
BOOL SetWindowText(
HWND hWnd, // дескриптор окна или элемента управления
LPCTSTR lpString // адрес строчки
);
SetFocus
Функция устанавливает фокус клавиатуры в заданном окне. Окно должно быть связано с очередью сообщений вызывающего потока.
Синтаксис
HWND SetFocus
(HWND hWnd // дескриптор окна, которому передается фокус
);
SetWindowLong
Функция заменяет атрибуты указанного окна. Функция также устанавливает и 32-разрядное (long) значение при заданном смещении в дополнительную память окна.
Синтаксис
LONG SetWindowLong(
HWND hWnd, // Дескриптор окна
int nIndex, // Определяет отсчитываемое от нуля смещение устанавливаемого значения
LONG dwNewLong // Устанавливает заменяемое значение
);
MoveWindow
Функция изменяет позицию и габариты определяемого окна. Для окна верхнего уровня, позиция и габариты отсчитываются относительно левого верхнего угла экрана. Для дочернего окна, они - относительно левого верхнего угла рабочей области родительского окна.
Синтаксис
BOOL MoveWindow(
HWND hWnd, // дескриптор окна
int x, // позиция по горизонтали
int y, // позиция по вертикали
int nWidth, // ширина
int nHeight, // высота
BOOL bRepaint // флажок перекраски
);
GetClientRect
Функция возвращает координаты клиентской области окна. Клиентские координаты определяют верхний левый и правый нижний углы клиентской области. Поскольку клиентские координаты относительны левому углу клиентской области окна, то координаты верхнего левого угла является (0, 0).
BOOL GetClientRect(
HWND hWnd, // дескриптор окна
LPRECT lpRect // адрес структуры для клиентских координат
);
PostQuitMessage
Функция указывает системе, что поток сделал запрос на то, чтобы завершить свою работу (выйти). Это обычно используется в ответ на сообщение WM_DESTROY.
Синтаксис
void PostQuitMessage(
int nExitCode // Определяет код завершения прикладной программы
);
DefWindowProc
Функция вызывается оконной процедурой по умолчанию, чтобы обеспечить обработку по умолчанию любого сообщения окна, которые приложение не обрабатывает. Эта функция гарантирует то, что обрабатывается каждое сообщение. Функция DefWindowProc вызывается с теми же самыми параметрами, принятыми оконной процедурой.
Синтаксис
LRESULT DefWindowProc(
HWND hWnd, // Дескриптор оконной процедуры
UINT Msg, // сообщение
WPARAM wParam,
LPARAM lParam
);
CreateFile
Функция создает или открывает каталог, физический диск, том, буфер консоли, коммуникационный ресурс, почтовый слот или именованный канал. Если функция завершается успешно, возвращаемое значение - открытый дескриптор заданного файла. Если функция завершается с ошибкой, возвращаемое значение - INVALID_HANDLE_VALUE.
Синтаксис:
HANDLE CreateFile(
LPCTSTR lpFileName, // имя файла- указатель на символьную строку с нулем в конце, устанавливающую имя объекта, который создается или открываться
DWORD dwDesiredAccess, // режим доступа(чтение, запись или то и другое)
DWORD dwShareMode, // режим совместного доступа (чтение, запись, оба или никакого действия)
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // Указатель на структуру SECURITY_ATTRIBUTES, которая устанавливает может ли возвращенный дескриптор быть унаследован дочерними процессами
DWORD dwCreationDisposition, // как действовать
DWORD dwFlagsAndAttributes, // атрибуты и флажки файла
HANDLE hTemplateFile // Дескриптор файла шаблона с правом доступа GENERIC_READ
);
GetFileSize
Функция извлекает размер указанного файла. Размер файла, который может быть сообщен при помощи этой функции ограничивается значением двойного слова (DWORD). Если функция завершается успешно, возвращаемое значение - младшая часть двойного слова размера файла, и если параметр lpFileSizeHigh - не ПУСТО (NULL), функция помещает старшую часть двойного слова размера файла в переменную, на которую указывает этот параметр. Если функция завершается ошибкой, и lpFileSizeHigh равен ПУСТО (NULL), возвращаемое значение - INVALID_FILE_SIZE. Если функция завершается ошибкой, и lpFileSizeHigh - не ПУСТО (NULL), возвращаемое значение - INVALID_FILE_SIZE.
Синтаксис:
DWORD GetFileSize(
HANDLE hFile, // дескриптор файла, размер которого должен возвратиться.
LPDWORD lpFileSizeHigh // указатель на переменную, в которой возвращается старшее слово размера файла.
);
CloseHandle
Функция закрывает дескриптор открытого объекта, созданный функцией CreateFile. Если функция завершается успешно, величина возвращаемого значения - не 0. Если функция завершается с ошибкой, величина возвращаемого значения - 0.
Синтаксис:
BOOL CloseHandle(
HANDLE hObject // дескриптор открытого объекта
);
MessageBox
Отображается модальное диалоговое окно, которое содержит системный значок, набор кнопок, а также краткое заявление конкретного сообщения, например, статуса или об ошибке. В окне сообщения возвращает целое число, указывающее кнопку, нажатую пользователем. Если функция завершается ошибкой, возвращаемое значение равняется 0.
Синтаксис:
Int MessageBox (
HWND HWND, // Дескриптор владельца окна в окне сообщения. Если этот параметр - ПУСТО (NULL), окно сообщения не имеет окна владельца.
LPCTSTR lpText, // Указатель на символьную строку с нулем в конце, которая содержит сообщение показываемое на экране.
LPCTSTR lpCaption, // Указатель на символьную строку с нулем в конце, которая содержит заголовок диалогового окна (окна сообщения).
UINT uType // Содержание и поведение диалогового окна.
);
SysAllocStringByteLen
Принимает на входе строку ANSI и возвращает содержащую ее BSTR. Не выполняет никаких преобразований ANSI-Unicode.
BSTR SysAllocStringByteLen(
char FAR* psz, // Заканчивающаяся нулем строка, которую нужно скопировать, или NULL, если новая строка должна остаться неинициализированной.
unsigned int len // Число байт, которые нужно скопировать из psz. После скопированных символов добавляется нулевой символ, т. е. всего выделяется len +1 байт
);
ReadFile
Функция читает данные из файла или того, что было создано функцией CreateFile, начиная с позиции, обозначенной указателем файла.
Синтаксис:
BOOL ReadFile(
HANDLE hFile, // дескриптор файла, который читается
LPVOID lpBuffer, // Указатель на буфер, который принимает прочитанные данные из файла
DWORD nNumberOfBytesToRead, // число байтов, которые читаются из файла
LPDWORD lpNumberOfBytesRead, // число прочитанных байтов
LPOVERLAPPED lpOverlapped // асинхронный буфер
);
WriteFile
Функция пишет данные в файл с места, обозначенного указателем позиции в файле. Если функция завершается успешно, величина возвращаемого значения - не 0. Если функция завершается с ошибкой, величина возвращаемого значения - 0.
Синтаксис:
BOOL WriteFile(
HANDLE hFile, // дескриптор файла
LPCVOID lpBuffer, // Указатель на буфер, содержащий данные, которые будут записаны в файл
DWORD nNumberOfBytesToWrite, // число байтов, которые будут записаны в файл
LPDWORD lpNumberOfBytesWritten, // число записанных байтов
LPOVERLAPPED lpOverlapped // асинхронный буфер
);
DeleteFile
Функция удаляет существующий файл. Если функция завершается успешно, возвращаемое значение - не 0. Если функция завершается с ошибкой, величина возвращаемого значения - 0.
Синтаксис:
BOOL DeleteFile(
LPCTSTR lpFileName // Указатель на символьную строку с нулем в конце, которая определяет имя удаляемого файла
);
GetWindowTextLength
Функция возвращает обратно длину, в символах, текста строки заголовка заданного окна (если окно имеет область заголовка). Если определяемое окно - орган управления, функция возвращает обратно длину текста внутри элемента управления. Однако, GetWindowTextLength не может получить длину текста поля редактирования текста в другом приложении.
Синтаксис
int GetWindowTextLength(
HWND hWnd // дескриптор окна или панели
// управления с текстом
);
SysFreeString
Освобождает строку, выделенную ранее с помощью SysAllocString, SysAllocString-ByteLen, SysReAllocString, SysAllocStringLen и SysReAllocStringLen.
void SysFreeString
(
BSTR bstr // Выделенная ранее BSTR либо NULL. В последнем случае функция просто возвращает управление.
);
DestroyWindow
Функция разрушает заданное окно. Функция отправляет сообщения WM_DESTROY и WM_NCDESTROY окну, чтобы деактивировать его и удалить фокус клавиатуры из него. Функция также уничтожает меню окна, очищает очередь потоков сообщений, уничтожает таймеры, удаляет монопольное использование буфера обмена и разрывает цепочку просмотра окон буфера обмена (если окно имеет наверху цепочку просмотров).
Если заданное окно - родитель или владелец окон, DestroyWindow автоматически уничтожает связанные дочерние или находящиеся в собственности окна, когда она уничтожает окно владельца или родителя. Функция сначала уничтожает дочерние или находящиеся в собственности окна, а затем она уничтожает окно владельца или родителя.
Функция DestroyWindow уничтожает также и немодальные диалоговые окна, созданные функцией CreateDialog.
Синтаксис
BOOL DestroyWindow(
HWND hWnd // дескриптор для разрушения окна
);
CallWindowProc
Функция передает информацию сообщения процедуре заданного окна.
Синтаксис
LRESULT CallWindowProc(
WNDPROC lpPrevWndFunc,// указатель на предыдущую процедуру
HWND hWnd, // дескриптор окна
UINT Msg, // сообщение
WPARAM wParam, // первый параметр сообщения
LPARAM lParam // второй параметр сообщения
);
GetOpenFileName
Функция создает диалоговое окно Открыть (Open), которое позволяет пользователю определить открываемый диск, каталог и имя файла или имена ряда файлов. Если пользователь задает имя файла и щелкает по кнопке ОК, возвращаемое значение не нуль. Буфер, указанный членом lpstrFile структуры OPENFILENAME содержит полный путь и имя файла, которые определил пользователь. Если пользователь прервал работу или закрыл диалоговое окно Открыть (Open) или произошла ошибка, возвращаемое значение – 0.
Синтаксис:
BOOL GetOpenFileName (
LPOPENFILENAME lpofn // Указатель на структуру OPENFILENAME, которая содержит информацию, используемую для инициализации диалогового окна. Когда GetOpenFileName возвращает значение, эта структура содержит информацию о файле, выбранном пользователем.
);
GetSaveFileName
Функция создает стандартное диалоговое окно Сохранить (Save), которое позволяет пользователю определить диск, каталог и имя файла, которое нужно сохранить. Если пользователь задает имя файла и щелкает по кнопке ОК и функция завершается успешно, возвращаемое значение не 0..
Синтаксис:
BOOL GetSaveFileName(
LPOPENFILENAME lpofn // Указатель на структуру OPENFILENAME, которая содержит информацию, используемую, чтобы инициализировать диалоговое окно. Когда GetSaveFileName возвращает значение, эта структура содержит информацию о выбранном пользователем файле.
);