Положить элементы управления на панели инструментов - застрял
Я смотрю на эту документацию уже 5 часов. Я просто не могу соединить шаги. Если вы, ребята, можете просветить меня от всего этого.
Вот этот сайт: http://msdn.microsoft.com/EN-US/library/bb983718(VS.110).aspx
Поэтому моя проблема заключается в следующем: - под номером 5 он попросил меня "установить эти параметры следующим образом:", он даже не упомянул о том, где? Где реализовать конструктор и почему мы используем CMFCToolbarComboBoxButton? когда он уже попросил меня на шаге 4 получить класс с именем CFindComboButton. Должен ли я вместо этого создать для этого contstructor?
- под номером 4(извините за неорганизованную нумерацию проблем) я использовал класс add (а не мастер классов), а затем выбрал MFC Class. Затем я ввожу предположительно CFindComboButton и базовый класс как CMFCToolBarComboBoxButton. Я сделал что-то не так на этом? Нужно ли что-то делать для ID ID_EDIT_FIND_COMBO?
-Когда я регистрирую ID_EDIT_FIND_COMBO в таблице строк, я точно не знаю, что я сделал. Я только что зарегистрировал идентификатор для будущей реализации? Или что-то еще?
-Так что я не могу сделать шаг 5, я перешел к шагу 6. Все, что он просит, - это поиск метода CreateCombo в разделе переопределения свойств в CFindComboButton. Ну, я могу найти только 3 переопределить. Ни один из них не является методом CreateCombo. Ну, оттуда вы можете сказать, что я потерян.
Я новичок в MFC, так что вы можете принять это во внимание.
2 ответа
Несмотря на то, что ваш вопрос немного запутан, позвольте мне попытаться ответить, чтобы он сработал для вас.
Создайте два класса - один производный от CComboBox (назовите его CFindComboBox), а другой - от CMFCToolBarComboBoxButton (назовите его CFindComboBoxButton). Первый класс будет реализовывать Combobox, который будет отображаться при нажатии кнопки раскрывающегося списка на панели инструментов. Эта выпадающая кнопка реализована с помощью CFindComboBoxButton. Надеюсь, это понятно.
Теперь определите конструктор для CFindComboBoxButton как CFindComboBoxButton(UNIT nID, int nImage, DWORD dwStyles), используя три параметра, как описано ниже:
- Идентификатор команды кнопки, которая будет ID_EDIT_FIND_COMBO (или все, что вы хотите определить как). Это будет определено в таблице строк. Просто добавьте новую запись в таблицу строк со значением ID_EDIT_FIND_COMBO в качестве идентификатора и строку-заполнитель. Не опускайте строковое значение, иначе идентификатор не будет определен. Строковое значение может быть любым, поскольку оно нигде не будет использоваться.
- Вторым параметром будет просто вызов CCommandManager::GetCmdImage(ID_EDIT_FIND). Это вернет изображение по умолчанию, используемое для отображения выпадающего списка. Если вы хотите использовать свое собственное изображение, вы можете создать его и вместо этого передать его идентификатор.
- Третий параметр - это стили, которые вы хотите использовать. Они определены по адресу http://msdn.microsoft.com/EN-US/library/7h63bxbe(v=vs.110).aspx но вы можете использовать значение по умолчанию (CBS_DROPDOWNLIST) для начала.
Переопределите метод CreateCombo CMFCToolBarComboBoxButton и добавьте его реализацию в CFindComboBoxButton. В этом методе создайте и верните указатель на CFindComboBox (производный класс CComboBox).
Я надеюсь, что это устранит всю путаницу, и вы должны быть на пути к тому, чтобы встроить пользовательский Combobox в панель инструментов.
Взгляните на пример VisualStudioDemo: http://msdn.microsoft.com/en-us/library/bb983983%28v=vs.90%29.aspx
вы можете найти реализацию CFindComboButton там