Описание функции WinMain() и её параметры и их значение пример
Primary tabs
Forums:
1) во-первых, если кто не знает - указатель типа void* может быть приведён к указателю с любым типом (тип, соответственно, должен быть "указательным")
и обратно без потери данных - то есть можно сказать что в этом смысле тип void * является в си этаким обобщённым указателем на память.
2) Движемся дальше . Помним, что наша функция имеет вид =
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPi, LPSTR cCmdline, int nSs)
Что же это за типы данных? (источник = http://dims.karelia.ru/win32/)
Связь следующая (в виде кода определения нового типа в си) =
typedef void *HINSTANCE; /* дескриптор экземпляра программы */
typedef CHAR *LPSTR;
??? какая разницу между char и CHAR - это одно и тоже , просто "люди из майкрософт" написали что-то вроде того =
typedef char CHAR;? ???
Теперь "о смысле" :
HINSTANCE hInst = в эту переменную винда запишет адрес участка памяти , в котором разместится программа. HINSTANCE hPi = а в эту переменную винда поместит указатель на предыдущий экземпляр программы. LPSTR cCmdline = указатель на строку, в которую будет размещена команда , набранная после имени запускаемой программы int nSs = определяет вид, в котором появится окно.
Дело в том, что под виндоусом (по-моему это больше соответствует "windows" ,чем аналогичное "виндовс") одна и та же програ может быть запущены тыщу раз .
поэтому узрев в качестве значения hPi ноль в старые добрые времена - надо было немедленно понять,
что порамма ваша запущена на момент возвращения значения в первом и единственном экземпляре - но в WIN32 данный параметр оставлен исключительно для
совместимости с предыдущими версиями опять же винды.
- Log in to post comments
- 3996 reads