gpt4 book ai didi

c++ - 创建窗口(): Type name is not allowed

转载 作者:行者123 更新时间:2023-11-28 05:53:39 25 4
gpt4 key购买 nike

我正在编写一个 C++ 程序,我想在其中使用 CreateWindow() 函数创建一个窗口,但我无法让它工作。我无法编译该程序,Visual Studio 在错误列表中给我的唯一信息是“不允许使用类型名称”。我该如何解决这个问题?我无法确定如何自行修复它。这是程序的代码:

#include "stdafx.h"
#include <Windows.h>

int main()
{
int screenWidth = GetSystemMetrics(SM_CXSCREEN);
int screenHeight = GetSystemMetrics(SM_CYSCREEN);
HWND window = CreateWindow("Melter", NULL, WS_POPUP, 0, 0, screenWidth, screenHeight, HWND_DESKTOP, NULL, HINSTANCE, NULL);
return 0;
}

最佳答案

要从控制台应用程序创建窗口,您需要做一些事情。首先,您必须通过 RegisterClass 使用样式参数、模块句柄注册您自己的窗口类最重要的是一个窗口过程。您可以通过GetModuleHandle(0)获取模块句柄,what 返回用于创建调用进程的文件句柄。你有的窗口程序定义你自己。这是一个处理发送到窗口的消息的函数。使用此窗口类和模块句柄,您可以使用 CreateWindow 创建您的窗口。创建窗口后,您必须使用 ShowWindow 显示它。最后,您的窗口需要一个消息循环:

#include <Windows.h>

// Window procedure which processes messages sent to the window
LRESULT CALLBACK WindowProcedure( HWND window, unsigned int msg, WPARAM wp, LPARAM lp )
{
switch(msg)
{
case WM_DESTROY: PostQuitMessage(0); return 0;
default: return DefWindowProc( window, msg, wp, lp );
}
}

int main()
{
// Get module handle
HMODULE hModule = GetModuleHandle( 0 );
if (!hModule)
return 0;

// Register window class
const char* const myWindow = "MyWindow" ;
//const wchar_t* const myWindow = L"MyWindow"; // unicode
WNDCLASS myWndClass = {
CS_DBLCLKS, WindowProcedure, 0, 0, hModule,
LoadIcon(0,IDI_APPLICATION), LoadCursor(0,IDC_ARROW),
CreateSolidBrush(COLOR_WINDOW+1), 0, myWindow };
if ( !RegisterClass( &myWndClass ) )
return 0;

// Create window
int screenWidth = GetSystemMetrics(SM_CXSCREEN)/2;
int screenHeight = GetSystemMetrics(SM_CYSCREEN)/2;
HWND window = CreateWindow( myWindow, NULL, WS_OVERLAPPEDWINDOW, 0, 0, screenWidth, screenHeight, HWND_DESKTOP, NULL, hModule, NULL);
if( !window )
return 0;

// Show window
ShowWindow( window, SW_SHOWDEFAULT );

// Message loop
MSG msg ;
while( GetMessage( &msg, 0, 0, 0 ) )
DispatchMessage(&msg);

return 0;
}

关于c++ - 创建窗口(): Type name is not allowed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34668993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com