Здравствуйте, netch80, Вы писали:
N>Без GUI нет стандартных контролов.
А зачем стандартные? Я рядом давал скрин-шот приложухи, там ни одного стандартного контрола, все самописные.
http://www.rsdn.org/forum/flame.comp/6803841.1
Кнопки, переключатели, крутилки, индикаторы, скролл-бары — всё своё.
Да и нет никаких "стандартных контролов" под OpenGL или DirectX — везде идут некие либы или сам пишешь.
Ну разве что АПИ WinRT изкаробки даёт контролы для DirectX, но там тоже всё очень завуалировано, знаешь ли, не так просто нарисовать свой контрол (неоправданно большая трудоёмкость). Иногда дешевле иметь свою простую инфраструктуру с 0-ля и рисовать свои контролы в десяток строк или меньше.
N>Указанный тобой getDC() у surface это только начиная с Windows 7, то есть зверски поздно.
Речь была о DirectDraw, а он вышел лет 20 назад.
Как раз беда в том, что D2D появился слишком поздно. До этого DirectDraw уже много лет был объявлен как deprecated, хотя прекрасно работал все годы. Но часть его ф-ий перенесли в D3D, поэтому, в 2000-х годах было много обсуждений из разряда "подскажите, как лучше выводить видео на экран в своих программах — через DirectShow, DirectDraw или DirectX Graphics (D3D)". Я пробовал выводить через все перечисленные способы, загрузка проца была одинаковой.

Т.е., "под капотом" там происходило примерно одно и то же.
N>До этого делать гуй поверх DirectDraw означало делать закат солнца вручную, рисуя все контролы самому.
Во-первых, не так уж и самому. Можно прямо через системные АПИ рисовать части контролов (DrawFrameControl), подавая как параметр HDC.
В WinXP это АПИ было обновлено, я этой фигней тоже маялся — рисовал контролы через высокоуровневые вызовы uxtheme.dll
(DrawThemeBackground, DrawThemeEdge и т.д.)
N>Или у тебя есть магический ход для более ранних версий?
Можно более конкретный вопрос?
Так-то у меня тут лежит архив уже примерно 15 лет, где грид рисуется ручками как раз через uxtheme:
http://files.rsdn.org/21096/dataGrid.zip
Рисует примерно так:
Рамка грида, заголовки столбцов, чекбоксы — это всё рисуется через uxtheme.
Там же лежит свой таб-контрол (бо который идёт от MFC — это какой-то садизм, а не таб-контрол).
Тоже со своей прорисовкой:

Аналогично, рисуется в текущей теме.
Т.е., в случае DirectDraw получаешь HDC у DirectDraw-поверхности, затем делаешь такие же точно вызовы для рисования, и у тебя DirectX-приложение будет рисоваться в текущей установленной теме. В Висте и Win7 это АПИ было еще совсем чуть-чуть расширено, но и от времён WinXP проги прекрасно себя рисуют в текущей теме Win7, Win8, Win10, если для рисования используют указанные ф-ии.