如何以最大化模式启动C++程序的BGI窗口?

Posted

技术标签:

【中文标题】如何以最大化模式启动C++程序的BGI窗口?【英文标题】:How to start BGI window of c++ program in maximized mode? 【发布时间】:2014-12-14 15:36:36 【问题描述】:

我正在为我的高中制作一个 c++ 项目。我正在使用带图形的 Dev c++。我想要的是当 BGI 窗口打开时,它应该以最大化模式而不是普通窗口启动。 以下是我的代码,但它不起作用:(

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

using namespace std;

 void loading() 
 int x=170,i,gdriver=DETECT,gmode;
 initgraph(&gdriver,&gmode,"");
 settextstyle(DEFAULT_FONT,HORIZ_DIR,2);
 outtextxy(170,180,"LOADING,PLEASE WAIT");

  for(i=0;i<300;++i)
 
  delay(30);
  line(x,200,x,220);
  x++;
 
getch();



main() 

ShowWindow( GetConsoleWindow(), SW_HIDE );
loading();
ShowWindow(FindWindow(NULL,"Windows BGI"),SW_MAXIMIZE);


控制台窗口根据我的需要隐藏,但 BGI 窗口没有最大化。我是 C++ 的新手,所以我不知道如何用 C++ 处理 Windows。请提供一些有用的代码或解决方案。

【问题讨论】:

【参考方案1】:

我没有直接的答案,但我可以建议一个方向。

您需要将其分解以查看失败的地方(这种方法有助于解决许多不同类型的错误)。

    您是否正在进入第二行“ShowWindow”代码?您可以检查该行上的断点。

    FindWindow 返回什么?我的猜测是 NULL,但您可以确认这一点(例如将其拉到自己的行: HWND hwndBGI = FindWindow(NULL,"Windows BGI"); ShowWindow(hwndBGI,SW_MAXIMIZE);

然后您可以检查 FindWindow 返回的内容。如果为NULL,你就知道去哪里找问题了;在对 FindWindow 的调用中。

    如果 FindWindow 失败,在调用 FindWindow 之后调用 GetLastError 可能会为您提供更多信息。

FindWindow 并不总是成功。潜在的问题可能是窗口名称不准确、在不同进程中查找窗口的问题、不是***窗口的窗口......

祝你成功!

【讨论】:

【参考方案2】:

使用getmaxwidth()getmaxheight()

打开最大窗口
/* getmaxwidth and getmaxheight example */ 

#include <graphics.h>



int main(void)



   /* Make a window, as big as possible */

   initwindow(getmaxwidth( ), getmaxheight( ));



   /* clean up */

   getch();

   closegraph();

   return 0;


【讨论】:

以上是关于如何以最大化模式启动C++程序的BGI窗口?的主要内容,如果未能解决你的问题,请参考以下文章

如何在管理模式和最大化窗口中启动.exe?

如何以最大化窗口启动 gvim?

Visual C++ 编程技巧之二

如何启动 Outlook 处于最小化状态

如何使用 c# 在窗口应用程序中使用快捷键最小化窗口以最大化窗口?

start