Win32 API 窗口无法打开
Win32 API window won't open
好吧,所以我花了时间去学习Win32 API的一个but做打开窗口,我想出的代码在最后我认为会工作,但没有。我注册了窗口类,做了所有我必须做的事情,但是当我运行它时,什么都没有发生……如果有人能指出我做错了/遗漏了什么,那将是一个很大的帮助。
#include <stdlib.h>
#include <iostream>
#include <Windows.h>
#pragma comment (lib, "wsock32.lib")
#define WNDCLASSNAME "wndclass"
bool quit = false;
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int nshowcmd)
{
WNDCLASSEX WCE;
WCE.cbSize = sizeof(WNDCLASSEX);
WCE.style = CS_HREDRAW|CS_VREDRAW|CS_OWNDC|CS_DBLCLKS;
WCE.lpfnWndProc = WndProc;
WCE.cbClsExtra = 0;
WCE.cbWndExtra = 0;
WCE.hInstance = hinstance;
WCE.hIcon = NULL;//LoadImage()
WCE.hCursor = NULL;//LoadCursor(NULL, IDC_CROSS);
WCE.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
WCE.lpszMenuName = NULL;
WCE.lpszClassName = "KyleWindow";
WCE.hIconSm = NULL;
RegisterClassEx(&WCE);
HWND WindowHandle;
WindowHandle = CreateWindowEx(WS_OVERLAPPEDWINDOW, "KyleWindow", "Xerus", WS_OVERLAPPEDWINDOW, 0, 0, 500, 500, NULL, NULL, hinstance, NULL);
ShowWindow(WindowHandle, SW_SHOWNORMAL);
UpdateWindow(WindowHandle);
std::cout<<"'Opened' Window"<<std::endl;
MSG msg;
while(!quit)
{
if(PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE))
{
if(msg.message == WM_QUIT)
quit = true;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.lParam;
}
使用WS_EX_OVERLAPPEDWINDOW
作为CreateWindowEx
函数的第一个参数(而不是WS_OVERLAPPEDWINDOW
,这不是一个有效的扩展的窗口样式)
用WNDCLASS
代替WNDCLASSEX
改变:
WNDCLASSEX WCE;
to WNDCLASS WCE;
删除线:
WCE.cbSize = sizeof(WNDCLASSEX);
改变:
RegisterClassEx(&WCE);
到RegisterClass(&WCE);
函数int WINAPI WinMain必须在函数LRESULT CALLBACK WndProc之前。编译器按顺序读取
相关文章:
- C++win32 API创建多个类似视口的窗口
- 创建进程 API 失败,在窗口 122 上出现错误代码 10
- 更改 ICDBurn 窗口 API 中的默认刻录驱动器
- 无法在窗口中构建 Tensorflow C++ API
- 如何使用Win32 API阻止来自透明窗口的鼠标输入?
- 无法在C++中使用窗口的蓝牙 API 连接到蓝牙设备
- 当用户更改密码时,哪个窗口 API 调用?钩住这个 API 的好方法是什么
- 密码策略窗口 API
- 如何用API窗口拆卸EXE文件
- 如何使用窗口 API 获取其他应用中的当前活动
- 在放大镜窗口上绘制(放大 API)
- Win32 API 检查当前窗口是对话框还是普通窗口
- Win 32 API,使用垂直拆分条绘制两个子窗口
- 您可以在不使用核心音频 API 的情况下更改窗口中音量混合器/sndvol 中列出的程序名称吗?
- 每个窗口的Win32 api类不同
- Win32 API:如何避免基本窗口控件的闪烁
- 使用Richedit控件时,基于对话框的Win32 API程序将不会显示窗口
- 如何在使用Win32 API创建的窗口上添加淡入/淡出效果
- 在windows API上创建子窗口
- Win32 API 窗口无法打开