MFC и Winforms используют очень похожие подходы для реализации этих пользовательских меню.Они начинают с общей поддержки в своих классах ToolBar / ToolStrip и специализируют их для строки меню / классов элементов.
Вы найдете реализацию MFC в vc / atlmfc / src / mfc.Файлы исходного кода afxtoolbarxxx.cpp содержат около 24 000 строк кода C ++.Специализации классов меню находятся в afxmenuxxx.cpp, еще несколько тысяч строк исходного кода.
Вы можете получить исходный код для классов Winform из справочного источника.Файлы исходного кода ToolStripxxx.cs содержат около 40 000 строк кода C #.Специализации классов меню представлены в Menuxxx.cs, еще несколько тысяч строк исходного кода.
Оба используют множество классов поддержки, предоставляемых в их соответствующих платформах, базовые вещи, такие как обертки окон и поддержку рендеринга изображений / текста.Трудно предположить, сколько из этого они потянули.
Числа, подобные этому, примерно на порядок превышают то, что большинство программистов сочли бы целесообразным переписать самим.Вы, безусловно, можете добиться большего успеха, сбрив функции, и в реализациях MFC, и в Winforms есть много наворотов.Winforms тем более, основная причина, по которой он имеет гораздо больше исходного кода.Однако этот вид поддержки функций был добавлен с явным намерением предоставить библиотеку классов, которую вы бы использовали вместо попытки заменить.Рекомендуется.