【问题标题】:How to change window size in C++?如何在 C++ 中更改窗口大小?
【发布时间】:2014-01-16 05:34:07
【问题描述】:

您好,我必须在 C++ 中运行一个程序,并且我想确保在执行该程序时,它会以特定的大小/尺寸打开控制台,以便我的程序中的显示正确。我需要帮助,因为我不知道该怎么做。我正在使用 Dev C++ 5.42(Orwell)。我尝试使用

#include<iostream> 
#include<windows.h> 

using namespace std; 

SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); 

int main(){ 
    cout<<"Hello World"; 
}

得到一个错误

[Error] expected constructor, destructor, or type conversion before '(' token

我是初学者,因此我对这些东西了解不多。

【问题讨论】:

  • 我们需要查看更多围绕该行的代码。
  • 您是否为该功能添加了&lt;windows.h&gt;?并且控制台窗口不会过于友好地调整超出其最大尺寸的大小,因此请记住这一点。
  • 如果您尝试更改 控制台 窗口的大小,请使用 SetConsoleDisplayMode()
  • 对其他 cmets 更进一步,即使它确实编译并运行了,您认为标志 SWP_NOMOVE 和 SWP_NOSIZE 究竟是做什么的? (提示:正如他们所说的那样。)您可以使用其中一个或两者都不使用,但不能同时使用两者 - 除非您尝试更改窗口的 Z 顺序而不改变其在屏幕上的大小或位置。
  • 将代码放在main 之前不会使其在main 之前执行。只需将它放在 main 的开头,除非您确实有充分的理由说明为什么它需要在 main 之前运行,在这种情况下,有一些方法可以实现。

标签: c++ windows winapi user-interface


【解决方案1】:

该功能对于不拥有窗口的控制台应用程序毫无用处(除非他们使用 CreateWindow API 创建一个窗口,这对于控制台应用程序来说是非典型的)。相反,它们的输出连接到有窗口的 csrss。

你应该使用

  • SetConsoleScreenBufferSize
  • SetConsoleWindowInfo

改为。

http://www.cplusplus.com/forum/windows/10731/有一个例子

【讨论】:

    【解决方案2】:

    这对我有用:

    HWND hwnd = GetConsoleWindow();
    if( hwnd != NULL ){ MoveWindow(hwnd ,340,550 ,680,150 ,TRUE); }
    

    【讨论】:

      【解决方案3】:

      如果您要更改屏幕缓冲区,那么:

      HANDLE buff = GetStdHandle(STD_OUTPUT_HANDLE);
      COORD sizeOfBuff;
      sizeOfBuff.X=150;
      sizeOfBuff.Y=100;
      SetConsoleScreenBufferSize(buff,sizeOfBuff);
      

      要调整屏幕大小,请使用 DaveWalley 的解决方案。

      或者您可以这样做(仅用于调整大小)

      HWND hwnd = GetConsoleWindow();
      if( hwnd != NULL ){ SetWindowPos(hwnd ,0,0,0 ,1000,300 ,SWP_SHOWWINDOW|SWP_NOMOVE); }
      

      一定要包括:

      #define _WIN32_WINNT 0x0502
      #include<windows.h>
      

      在文件的开头。字面意思是第一行。

      通过修改 Ben Voigt 提到的功能得到解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-07-08
        • 2012-12-10
        • 2018-03-18
        • 2013-02-06
        • 2019-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多