Funkcje API (Application Programming Interface) Win32
Na początku programu z funkcjami API Win32 należy dodawać instrukcję dla kompilatora:
ttinclude <windows.h>
Funkcje API Win32 przyjmują parametry tylko przez stos; nie stosuje się przekazywania parametrów przez rejestry.
Nazwa bibliotecznej funkcji API może być trochę inna niż nazwa pokazana przez system na ekranie pomocy. Na przykład w bibliotekach import32.lib i user32.lib znajduje się funkcja WriteConsoleA, a na ekranie widzimy informacje o funkcji WriteConsole.
Dodatkowa litera A w nazwie funkcji WriteConsoleA i podobnych funkcji odpowiada rodzaju tej funkcji dla wierszy w kodzie ANSI.
Jeśli na końcu nazwy funkcji jest litera W, to funkcja operuje wierszami UNICODE.
Na zakończenie swojego działania funkcja API przez rejestr - akumulator EAX zwraca wartość, która jest wynikiem obliczeń.
Często wartość 0 lub wartość dodatnia odpowiadają pomyślnemu zakończeniu działań, a wartość -1 wskazuje na niepowodzenie.
W przypadku niepowodzenia funkcja API wywołuje funkcję SetLastError, do której przekazuje podwójne słowo z kodem niepowodzenia.
Ten kod można przeczytać wywołując funkcje GetLastError bezpośrednio po wywołaniu funkcji API.
Aby komunikaty były wyświetlane na ekranie z poprawnymi polskimi literami, należy stoso-waćfunkcję CharToOeinAO z zestawu "Platform SDK (Software Development Kit)".
Funkcja charToOemA() pobiera tekst z pierwszego argumentu - tablicy tekstowej, przekoduje i zapisuje do drugiego argumentu - tablicy tekstowej.
Aby zastosować funkcję charToOemAO należy umieścić tekst w tablicy tekstowej oraz zdefiniować bufor tekstowy, na przykład:
char tekst[]="Program w C. Autor Ąćęł Ńóśżź \r\n\r\n";
char buf[256];
CharToOemA(tekst,buf);
printf(buf);
Funkcje API Win32 związane z konsolą
BOOL AllocConsole(void); //Alokacja konsoli.
BOOL FreeConsole(void); //Zamykanie wszystkich konsoli.
HANDLE GetStdHandle(DWORD nStdHandle)
Pobranie deskryptora buforu konsoli:
wejściowego przy nStdHandle = STD_INPUT_NANDLE,
wyjściowego przy nStdHandle = STD_OUTPUT_NANDLE.
BOOL SetConsoleTitleA(LPCTSTR lpConsoleTitle); Wypisywanie nagłówka okna konsolowego.
Argument: lpConsoleTitle - adres wiersza - nagłówka.