3. В основном каталоге библиотеки FLTK откройте подкаталог lib
. Скопируйте (а не просто переместите или перетащите) все файлы с расширением .lib
, за исключением файла README.lib
(их должно быть семь) в каталог C:\Program Files\Microsoft Visual Studio\Vc\lib.
4. Вернитесь в основной каталог библиотеки FLTK и скопируйте подкаталог FL в каталог C:\Program Files\Microsoft Visual Studio\Vc\include.
Эксперты скажут вам, что было бы лучше инсталлировать библиотеку, а не копировать файлы в каталоги C:\Program Files\Microsoft Visual Studio\Vc\lib и C:\Program Files\Microsoft Visual Studio\Vc\include. Они правы, но мы не стремимся быть экспертами по среде Visual Studio. Если эксперты будут настаивать, попросите их продемонстрировать лучшую альтернативу.
Г.4. Использование библиотеки FLTK в среде Visual Studio
1. Создайте новый проект в среде Visual Studio, внеся одно изменение в обычной процедуре: выбирая тип проекта, выберите опцию “Win32 project”, а не “Console application”. Убедитесь, что вы создаете “Empty project”; в противном случае мастер добавит в ваш проект много лишнего кода, который вы не поймете и вряд ли будете использовать.
2. Находясь в среде Visual Studio, выберите команду Project в главном меню, а в выпадающем меню выполните команду Properties.
3. В левом меню окна Properties щелкните на пиктограмме Linker. В открывающемся подменю выберите команду Input. В поле редактирования Dependencies, находящемся справа, введите следующий текст:
fltkd.lib wsock32.lib comctl32.lib fltkjpegd.lib fltkimagesd.lib
(Следующий шаг может оказаться ненужным, поскольку в настоящее время он выполняется по умолчанию.)
В поле редактирования Ignore Specific Library введите следующий текст:
libcd.lib
4. Этот шаг может оказаться ненужным, так как в настоящее время опция /MDd включается по умолчанию. В левом меню того же самого окна Properties выберите команду C/C++, чтобы открыть другое подменю. Открыв подменю, выберите команду Code Generation. В правом меню измените опцию Runtime Library на Multi-threaded Debug DLL (/MDd). Щелкните на кнопке OK, чтобы закрыть окно Properties.
Г.5. Как тестировать, если не все работает
Создайте новый файл с расширением .cpp
в новом проекте и введите следующий код. Он должен скомпилироваться без проблем.
#include
#include
#include
int main()
{
Fl_Window window(200, 200, "Window title");
Fl_Box box(0,0,200,200,"Hey, I mean, Hello, World!");
window.show();
return Fl::run();
}
Если что-то не работает, выполните следующее.
• Если вы получили сообщение компилятора, утверждающее, что файл с расширением .lib
невозможно найти, то, возможно, вы сделали что-то не так при инсталлировании библиотеки. Внимательно проверьте п. 3, в котором указан путь для сохранения библиотечных файлов (.lib
) на вашем компьютере.
• Если вы получили сообщение компилятора, утверждающее, что файл с расширением .h
невозможно открыть, значит, скорее всего, вы ошиблись при инсталлировании. Внимательно проверьте п. 3, в котором указан путь для сохранения заголовочных файлов (.h
) на вашем компьютере.
• Если вы получили сообщение редактора связей, упоминающее о неразрешенных внешних ссылках, то проблема таится в свойствах проекта.
Если наши советы вам не помогли, зовите друга.
Приложение Д
Реализация графического пользовательского интерфейса
“Когда вы наконец поймете, что делаете,
то все пойдет правильно”
Билл Фэйрбэнк (Bill Fairbank)
В этом приложении представлена реализация обратных вызовов, а также классов Window
, Widget
и Vector_ref
. В главе 16 мы не требовали от читателей знать об указателях и операторах приведения типа, поэтому вынесли подробные объяснения в приложение.
Д.1. Реализация обратных вызовов
Обратные вызовы реализованы следующим образом:
void Simple_window::cb_next(Address, Address addr)
// вызов функции Simple_window::next() для окна,
// расположенного по адресу addr
{
reference_to
}