如何修复'Class not registered'错误



我有一个c++ Win32应用程序。

我想添加一个按钮,但当我启动我的应用程序,我得到一个'类未注册'错误。

我在x64机器上使用Windows 11 build 22000.613

我已经尝试了x64和x86版本的程序

请帮帮我!

c++代码:
#ifndef UNICODE
#define UNICODE
#endif 
#include <windows.h>
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)
{
// Register the window class.
const wchar_t CLASS_NAME[] = L"Sample Window Class";
WNDCLASS wc = { };
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASS_NAME;
RegisterClass(&wc);
// Create the window.
HWND hwnd = CreateWindowEx(
0,                              // Optional window styles.
CLASS_NAME,                     // Window class
L"Learn to Program Windows",    // Window text
WS_OVERLAPPEDWINDOW,            // Window style
// Size and position
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL,       // Parent window    
NULL,       // Menu
hInstance,  // Instance handle
NULL        // Additional application data
);
if (hwnd == NULL)
{
return 0;
}
ShowWindow(hwnd, nCmdShow);
// Run the message loop.
MSG msg = { };
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_CREATE:
CreateWindowEx(NULL,
L"Button",
L"Giai PTB2",
WS_TABSTOP | WS_VISIBLE |
WS_CHILD | BS_DEFPUSHBUTTON,
100,
100,
100,
24,
hwnd,
NULL,
NULL,
NULL);
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
// All painting occurs here, between BeginPaint and EndPaint.
FillRect(hdc, &ps.rcPaint, (HBRUSH)(COLOR_WINDOW + 1));
EndPaint(hwnd, &ps);
}
return 0;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

程序日志

'WindowsProject1.exe' (Win32) : Loaded 'C:Userspc2DocumentVS2022ProjectsWindowsProject1DebugWindowsProject1.exe'. Symbols loaded.
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64ntdll.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64kernel32.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64KernelBase.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64user32.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64win32u.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64gdi32.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64gdi32full.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64msvcp_win.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64ucrtbase.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64vcruntime140d.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64ucrtbased.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64imm32.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64uxtheme.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64combase.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64rpcrt4.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64msctf.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64msvcrt.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64kernel.appcore.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64bcryptprimitives.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64sechost.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64TextInputFramework.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64oleaut32.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64CoreMessaging.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64CoreUIComponents.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64WinTypes.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64advapi32.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64cryptbase.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64ole32.dll'. 
'WindowsProject1.exe' (Win32) : Loaded 'C:WindowsSysWOW64clbcatq.dll'. 
onecorecomcombaseobjactobjact.cxx(4080)combase.dll!769F9977: (caller: 769E5CE6) ReturnHr(1) tid(4938) 80040154 Class not registered
'WindowsProject1.exe' (Win32) : Chargé 'C:WindowsSysWOW64oleacc.dll'. 
The thread 0x2f24 stopped with code 0 (0x0).
The thread 0x1a8c stopped with code 0 (0x0).
The thread 0x2960 stopped with 0 (0x0).
The program '[6768] WindowsProject1.exe' stopped with code 0 (0x0).

(日志是法文的,所以我把日志翻译成英文)

原文如下:误差

据我所知,你忘了break;

case WM_CREATE:
CreateWindowEx(NULL,
L"Button",
L"Giai PTB2",
WS_TABSTOP | WS_VISIBLE |
WS_CHILD | BS_DEFPUSHBUTTON,
100,
100,
100,
24,
hwnd,
NULL,
NULL,
NULL);
break;

最新更新