Как разделить класс управления на реализацию или публичный интерфейс? - PullRequest
1 голос
/ 14 декабря 2010

Я создал класс управления MFC, который я получил из CWnd.

Элемент управления написан с нуля и не использует дочерние элементы управления.Этот единственный класс реализует всю логику управления, включая поддержание состояния, рисование, реагирование на события и т. Д.

Кроме того, мне нужен более «открытый» интерфейс, который будет использоваться кодом, который использует элемент управления.В идеале кажется, что это был бы более простой класс с гораздо более простым интерфейсом.Тем не менее, наличие двух классов MFC, связанных с одним и тем же окном, кажется, вызывает всевозможные проблемы или даже невозможно.

Я не совсем уверен, что лучший способ подойти к этому.Меня интересуют мысли о том, как лучше всего предоставить простой класс интерфейса для элемента управления, подобного этому.

Обратите внимание, что элемент управления не прекомпилирован в библиотеку или что-либо еще.Он будет скомпилирован как часть приложения.

Ответы [ 2 ]

1 голос
/ 15 декабря 2010

Интерфейсы MFC просты, потому что они на самом деле не реализуют класс, они просто оборачивают общедоступный API (C & WM), чтобы упростить кодирование в C ++.

Например, вы можете sendMessage hwnd WM_SetTextв поле редактирования, или используйте CEdit(hwnd).setText(), чтобы сделать то же самое.

2 Классы - это путь, я думаю, вы можете сделать класс интерфейса родителем реализации или, возможно, пойти на присоединение модели PIMPLинтерфейс с реализацией.

1 голос
/ 15 декабря 2010

Вы можете попытаться разделить класс на две части, причем более сложный класс реализации является дочерним для открытого класса.

Обычно я бы предложил создать отдельный чистый класс виртуального интерфейса и использовать множественное наследование для подключенияэто в MFC, но я предполагаю, что вы захотите использовать стандартные методы CWnd в интерфейсе.

...