Мы размещаем диалоговые окна, используя редактор ресурсов. Так сказать, у меня есть RichEditCtrl, называемый IDC_RICH. И я хочу связать его с экземпляром пользовательского класса CMyRichEditCtrl : CRichEditCtrl
, не теряя возможности устанавливать в нем свойства в редакторе ресурсов.Каков правильный способ создания подкласса MFC-управления?
Каков правильный путь? Вы можете получить некоторую функциональность, создав DDX-связанную переменную и изменив ее на CMyRichEditCtrl
. Но в некоторых случаях я вижу людей, вызывающих код типа:
m_Rich.SubclassDlgItem(IDC_RICH, this));
В чем разница?
EDIT: Одна из проблем, которые я вижу, заключается в том, что когда я переопределяю методы Create (Ex), они не вызываются. Это похоже на то, что элемент управления уже создан к тому моменту, когда мой объект привязан к идентификатору ресурса, pehaps?
По классу-имя, которое вы означает класс Window, а не класс C++? Если я создаю настраиваемый элемент управления с его собственным именем класса Window, он все равно позволит мне изменить базовые свойства в редакторе ресурсов? Или просто появиться как большая серая коробка? –
Да, класс окна, первый параметр для CreateWindow(). Вы не можете поместить пользовательский контроль в редактор ресурсов без явной поддержки кодировки. Это то, что используется в элементе «Пользовательский контроль» в VS Toolbox. Вы можете установить несколько свойств, таких как включен и заголовок, но это очень просто. («пользовательский контроль» я имею в виду «производный от CWnd», а не из другого элемента управления, и если вы это сделаете, вы можете установить свойства в редакторе ресурсов, потому что редактор ресурсов не будет знать о новом элементе управления или классе окна управления имя). – Roel