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