почему конструктор wxPanel имеет windowID по умолчанию, а конструктор wxBookCtrl — нет?

#wxwidgets

#wxwidgets

Вопрос:

Знаете ли вы, почему конструктор wxPanel имеет windowID по умолчанию, а конструктор wxBookCtrl по умолчанию требует явного windowID? Я имею в виду, что это не согласуется с тем, как вы создаете объект управления в wxWidgets. Например

 wxPanel* panel  = new wxPanel(parent)
  

но

 wxBookCtrl* book = new wxBookCtrl(parent, wxID_ANY)
  

Есть ли какие-либо преимущества или требования к выполнению этого?

Спасибо.

Ответ №1:

Это все еще несколько непротиворечиво в том смысле, что запись new wxPanel(parent, wxID_ANY) тоже работает, но wxPanel является исключением, позволяющим полностью исключить wxID_ANY . Это связано с тем, что вы в принципе никогда не хотите привязываться к событиям панели по ее идентификатору, поэтому вас никогда не волнует ее значение, в то время как это более полезно для других элементов управления, включая wxBookCtrl .