我有一个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;