Страница 10 из 10 21. Как сделать глобальную переменную, доступной всем моим файлам .CPP? Для начала, в одном из файлов .CPP (и только одном) объявите переменную, которая будет глобальной (то есть за пределами всех функций и классов). Например: int g_volume; Затем, в заголовочном файле, который будет включён во все файлы .CPP - такой как stdafx.h - добавьте объявление extern: extern int g_volume; Ключевое слово extern указывает компилятору, что g_volume объявлена в других файлах .CPP как int. Если Вы пропустите первый шаг, то компилятор выдаст unresolved external error. 22. У меня есть строка, которая является представлением числа, скажем "10235". Как преобразовать её в integer? Используйте функции atoi() или atol() , либо если число с плавающей точкой, то , atof(): char* szNumber = "10235"; int iNum = atoi ( szNumber ); long lNum = atol ( szNumber ); double dNum = atof ( szNumber ); 23: Как из моего приложения запустить другую программу? Существует несколько функций, позволяющих запускать другие программы. Самая простая - WinExec(): WinExec ( "C:\\path\\to\\program.exe", SW_SHOWNORMAL ); Так же существует функция ShellExecute(), которая может запускать как экзешники, так и файлы, связанные с приложениями. Например, можно "запустить" текстовый файл, как показано ниже: ShellExecute ( hwndYourWindow, "open", "C:\\path\\to\\readme.txt", NULL, NULL, SW_SHOWNORMAL ); В данном примере, ShellExecute() ищет приложение, связанное с файлами .TXT и запускает его. ShellExecute() также позволяет устанавливать начальную директорию для приложения, а так же дополнительные параметры командной строки. За более подробным описанием функции рекомендую лезть в MSDN. Если Вам необходимо полностью контролировать запущенное приложение, то необходимо использовать CreateProcess(). CreateProcess() имеет кучу параметров, поэтому детальное описание функции опять же смотрите в MSDN. А здесь приведу только простой пример: STARTUPINFO si = { sizeof(STARTUPINFO) }; PROCESS_INFORMATION pi = {0}; BOOL bSuccess;
bSuccess = CreateProcess ( NULL, "\"C:\\Program Files\\dir\\program.exe\"", NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi ); Обратите внимание, что если имя программ содержит пробелы, то его необходимо заключить в кавычки, как показано выше. Если CreateProcess() выполнена успешно, то удостоверьтесь, что дескрипторы в структуре PROCESS_INFORMATION закрыты, так как они нам больше не понадобытся. CloseHandle ( pi.hThread ); CloseHandle ( pi.hProcess ); Конечно же, если всё, что Вам нужно, это просто запустить программу, то необходимость в CreateProcess() отпадает, а вот ShellExecute() будет в самый раз. |