Итак, у меня есть источник С++ с привязками клавиш, например:
switch( keypressed )
{
case 'c':
cam_handle->Yaw(min_angle );
break;
case 'd':
cam_handle->Yaw( -min_angle );
break;
case 's':
cam_handle->Pitch(min_angle );
break;
case 'x':
cam_handle->Pitch( -min_angle );
break;
case 'z':
cam_handle->Roll( min_angle );
break;
case 'a':
cam_handle->Roll( -min_angle );
Я всегда забываю, что такое дурацкие клавиши, и мне приходится угадывать, и они могут измениться, или добавиться новые клавиши и т. д. Есть ли какой-нибудь быстрый способ автоматически сгенерировать справку или всплывающее окно «руководства для идиотов», в котором говорится, что кратко порезы есть? Если кто-то не знает boost::program_options, но может ответить, вот пример:
int options(int ac, char ** av, Options& opts) {
// Declare the supported options.
po::options_description desc("Allowed options");
desc.add_options()
("help", "Produce help message.")
("width,w", po::value<int>(&opts.frameWidth)->default_value(640),"frame width")
("height,h", po::value<int>(&opts.frameHeight)->default_value(480),"frame height")
("port,p", po::value<string>(&opts.port)->default_value("5001"),"port");
po::variables_map vm;
po::store(po::command_line_parser(ac, av).options(desc).allow_unregistered().run(),vm);
po::notify(vm);
if (vm.count("help")) {
cout << desc << "\n";
return 1;
}
return 0;
}
Таким образом, мне не нужно «RTFC», чтобы знать, как использовать исполняемый файл, я просто говорю «./myapp --help», и у boost есть автоматически сгенерированная помощь и все такое. Есть ли что-то подобное для сопоставления сочетаний клавиш, где нажатия клавиш заменяют роль флагов командной строки? (В С++ это так. В принципе, C тоже в порядке, но я сомневаюсь, что он может быть таким же элегантным, как и материал Boost.)
po::notify(vm)
, так как он обрабатывает ошибки, такие как отсутствующий параметр. Поскольку в вашем примере их нет, ваш код в порядке. Но есть на что посмотреть. - person rcollyer   schedule 06.10.2011