C++ 在Windows 10操作系统中扩展控制台

C++ 在Windows 10操作系统中扩展控制台,c++,windows,C++,Windows,背景信息:我正在开发一个Windows 10应用程序。在我的应用程序中,我使用嵌套的控制台。我熟悉GetSystemMetrics()并使用它的一些参数来定义我的控制台物理外观(即SM_CXBORDER,SM_CXDLGFRAME等) 剪断: 问题:如果我希望嵌套的子控制台(即子控制台)可以调整大小,我应该研究什么参数?我的当前逻辑将用户cmd输出到此控制台。随着时间的推移,产出不断累积。例如,如果用户输入cmdTime10次,则他/她需要开始滚动输出以查看以前的任何输出。在所需场景中,用户可以

背景信息:我正在开发一个Windows 10应用程序。在我的应用程序中,我使用嵌套的控制台。我熟悉
GetSystemMetrics()
并使用它的一些参数来定义我的控制台物理外观(即
SM_CXBORDER
SM_CXDLGFRAME
等)

剪断:

问题:如果我希望嵌套的子控制台(即子控制台)可以调整大小,我应该研究什么参数?我的当前逻辑将用户cmd输出到此控制台。随着时间的推移,产出不断累积。例如,如果用户输入cmd
Time
10次,则他/她需要开始滚动输出以查看以前的任何输出。在所需场景中,用户可以输入cmd
Time
10次,而无需滚动,这可以通过垂直扩展控制台来完成。作为一个用户,我宁愿扩展控制台而不是滚动输出。这纯粹是为了更好的可视性和更少的拥挤


尝试:我尝试了更改
DLGFRAME
DLGWINFRAME
调整框架大小
,以及
滚动
。然而,我并没有取得多大的成功

经典的Windows API中没有布局引擎可以自动扩展窗口大小

“使窗口大小适合文本”是一项仅在更复杂的GUI工具包中实现的功能

如果您坚持在GUI中使用经典的Windows API(有点像使用石器时代的工具),那么唯一的选择就是计算渲染文本的大小(假设它总是一行,或者使用带有DT_CALCRECT标志的DrawText),并将主窗口和文本控件扩展该数量

总的来说,切换到真正的GUI工具包要比使用WINAPI和重新发明极其复杂的轮子明智得多

顺便说一句,不要将其称为控制台-因为控制台是一个用于指使用不同API的Windows控制台终端的术语-您的问题与现有术语相混淆

请阅读