Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 下一代显示屏启动屏幕| C和#x2B+;_C++_Visual Studio - Fatal编程技术网

C++ 下一代显示屏启动屏幕| C和#x2B+;

C++ 下一代显示屏启动屏幕| C和#x2B+;,c++,visual-studio,C++,Visual Studio,有没有在没有窗口的情况下显示启动屏幕?就像只是图像弹出几秒钟,然后显示一个对话框,询问玩家他/她是否想要创建一个新项目或打开一个项目。我知道,两个问题合一。我现在正在使用VisualStudio 谢谢 你的意思是: 代码块: Photoshop: 甚至,您正在使用的程序Visual Studio: 其他的包括Adobe套件中的任何东西,以及office套件中的任何东西,都在我的脑海中 因此,答案显然是肯定的。方法是创建一个无边界窗口。用C++,这似乎有点困难。我强烈建议坚持使用矩形启动屏幕

有没有在没有窗口的情况下显示启动屏幕?就像只是图像弹出几秒钟,然后显示一个对话框,询问玩家他/她是否想要创建一个新项目或打开一个项目。我知道,两个问题合一。我现在正在使用VisualStudio

谢谢

你的意思是:

代码块:

Photoshop:

甚至,您正在使用的程序Visual Studio:

其他的包括Adobe套件中的任何东西,以及office套件中的任何东西,都在我的脑海中

因此,答案显然是肯定的。方法是创建一个无边界窗口。用C++,这似乎有点困难。我强烈建议坚持使用矩形启动屏幕,除非你想处理绘画事件来绘制你下面的任何东西,这是一种痛苦

我发现了一个操作指南,它在下面,所以根据so指南,它也在这个网站上

另一种选择是简单地使用C#,这使得这类事情非常简单


首先创建一个带有
WS\u弹出窗口
标志的窗口

另外-在创建窗口时,考虑到系统可能仍希望绘制边框和标题栏等事实。。。因此,将其计算到窗口尺寸中,如下所示

#define WINDOW_WIDTH 300 // whatever size you need
#define WINDOW_HEIGHT 256

// Calculate the proper size for the window given a client 
DWORD dwFrameWidth = GetSystemMetrics( SM_CXSIZEFRAME );
DWORD dwFrameHeight = GetSystemMetrics( SM_CYSIZEFRAME );
DWORD dwMenuHeight = GetSystemMetrics( SM_CYMENU );
DWORD gdwWindowXPos = ( GetSystemMetrics( SM_CXSCREEN ) - WINDOW_WIDTH ) / 2;
DWORD gdwWindowYPos = ( GetSystemMetrics( SM_CYSCREEN ) - WINDOW_HEIGHT ) / 2;
DWORD gdwWindowWidth = WINDOW_WIDTH + dwFrameWidth * 2;
DWORD gdwWindowHeight = WINDOW_HEIGHT + dwFrameHeight * 2 + dwMenuHeight;
然后,在创建窗口时,您应该有如下内容:

HWND hwnd = CreateWindowEx(0,
                           "Class Name",
                           "Window Name",
                           WS_POPUP, // and any other flags you need
                           gdwWindowXPos, // these just center the
                           gdwWindowYPos, // window on the screen
                           gdwWindowWidth, // Calculated width
                           gdwWindowHeight, // and height
                           NULL, // Parent window
                           NULL, // Menu (don't want one)
                           hInst, // hInstance
                           NULL // Other Parameters
);
。。。对

下一步是设置窗口区域,这样您就可以通过使用
CreateRectRgn
SetWindowRgn
来只绘制感兴趣的区域,如下所示:

HRGN hrgn = CreateRectRgn( 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT );

SetWindowRgn( hwnd, hrgn, TRUE );
这会将窗口剪裁为我定义的窗口宽度和高度时所需的大小,您的意思是:

代码块:

Photoshop:

甚至,您正在使用的程序Visual Studio:

其他的包括Adobe套件中的任何东西,以及office套件中的任何东西,都在我的脑海中

因此,答案显然是肯定的。方法是创建一个无边界窗口。用C++,这似乎有点困难。我强烈建议坚持使用矩形启动屏幕,除非你想处理绘画事件来绘制你下面的任何东西,这是一种痛苦

我发现了一个操作指南,它在下面,所以根据so指南,它也在这个网站上

另一种选择是简单地使用C#,这使得这类事情非常简单


首先创建一个带有
WS\u弹出窗口
标志的窗口

另外-在创建窗口时,考虑到系统可能仍希望绘制边框和标题栏等事实。。。因此,将其计算到窗口尺寸中,如下所示

#define WINDOW_WIDTH 300 // whatever size you need
#define WINDOW_HEIGHT 256

// Calculate the proper size for the window given a client 
DWORD dwFrameWidth = GetSystemMetrics( SM_CXSIZEFRAME );
DWORD dwFrameHeight = GetSystemMetrics( SM_CYSIZEFRAME );
DWORD dwMenuHeight = GetSystemMetrics( SM_CYMENU );
DWORD gdwWindowXPos = ( GetSystemMetrics( SM_CXSCREEN ) - WINDOW_WIDTH ) / 2;
DWORD gdwWindowYPos = ( GetSystemMetrics( SM_CYSCREEN ) - WINDOW_HEIGHT ) / 2;
DWORD gdwWindowWidth = WINDOW_WIDTH + dwFrameWidth * 2;
DWORD gdwWindowHeight = WINDOW_HEIGHT + dwFrameHeight * 2 + dwMenuHeight;
然后,在创建窗口时,您应该有如下内容:

HWND hwnd = CreateWindowEx(0,
                           "Class Name",
                           "Window Name",
                           WS_POPUP, // and any other flags you need
                           gdwWindowXPos, // these just center the
                           gdwWindowYPos, // window on the screen
                           gdwWindowWidth, // Calculated width
                           gdwWindowHeight, // and height
                           NULL, // Parent window
                           NULL, // Menu (don't want one)
                           hInst, // hInstance
                           NULL // Other Parameters
);
。。。对

下一步是设置窗口区域,这样您就可以通过使用
CreateRectRgn
SetWindowRgn
来只绘制感兴趣的区域,如下所示:

HRGN hrgn = CreateRectRgn( 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT );

SetWindowRgn( hwnd, hrgn, TRUE );

这会将窗口剪裁为我定义时所需的大小
窗口宽度
窗口高度

谢谢!这对我有帮助!对于Adobe Photoshop等闪屏中的透明效果,您也可以只显示带有透明部分的矩形图像,将
WS_EX__LAYERED
扩展样式添加到窗口中,然后调用
SetLayeredWindowAttributes
UpdateLayeredWindow
函数。可能比处理区域更容易。@MisterVid,如果这解决了您的问题,请务必单击文章左上角上/下箭头下方的复选标记。谢谢!这对我有帮助!对于Adobe Photoshop等闪屏中的透明效果,您也可以只显示带有透明部分的矩形图像,将
WS_EX__LAYERED
扩展样式添加到窗口中,然后调用
SetLayeredWindowAttributes
UpdateLayeredWindow
函数。可能比处理区域更容易。@MisterVid,如果这解决了您的问题,请务必单击文章左上角上/下箭头下方的复选标记。