gpt4 book ai didi

c++ - CreateWindow() 样式参数被忽略?

转载 作者:行者123 更新时间:2023-11-28 01:05:18 27 4
gpt4 key购买 nike

在我的 Windows 应用程序中,我正在使用 CreateWindow() 函数创建一个新窗口。注册和创建窗口如下:

// Set up the capture window
WNDCLASS wc = {0};

// Set which method handles messages passed to the window
wc.lpfnWndProc = WindowMessageRedirect<CStillCamera>;
// Make the instance of the window associated with the main application
wc.hInstance = GetModuleHandle(NULL);
// Set the cursor as the default arrow cursor
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
// Set the class name required for registering the window and identifying it for future
// CreateWindow() calls
wc.lpszClassName = c_wzCaptureClassName.c_str();

RegisterClass(&wc); /* Call succeeding */

HWND hWnd = CreateWindow(
c_wzCaptureClassName.c_str() /* lpClassName */,
c_wzCaptureWindowName.c_str() /* lpWindowName */,
WS_OVERLAPPEDWINDOW | WS_MAXIMIZE /* dwStyle */,
CW_USEDEFAULT /* x */,
CW_USEDEFAULT /* y */,
CW_USEDEFAULT /*nWidth */,
CW_USEDEFAULT /* nHeight */,
NULL /* hWndParent */,
NULL /* hMenu */,
GetModuleHandle(NULL) /* hInstance */,
this /* lpParam */
);


if (!hWnd)
{
return false;
}

ShowWindow(hWnd, SW_SHOWDEFAULT);
UpdateWindow(hWnd);

我继续使用该窗口并使用流式视频更新它,它工作正常。但是,似乎无论我作为 CreateWindow() 的 dwStyle 参数传递什么都被忽略了。该窗口没有标题栏、最小化或最大化按钮,正如人们对重叠窗口所期望的那样。此外,窗口未最大化。奇怪的是,将 dwStyle 更改为

WS_OVERLAPPEDWINDOW | WS_HSCROLL /* dwStyle */

现在将鼠标悬停在窗口上时会显示双侧左/右箭头,但没有实际的滚动条。有谁知道可能导致这种奇怪行为的原因吗?

最佳答案

标题栏和其他类似内容的绘制需要您将未处理的窗口消息传递给 DefWindowProc。例如,标题栏是在 WM_NCPAINT 消息期间绘制的。如果您不将消息传递给 DefWindowProc,那将不会完成。

关于c++ - CreateWindow() 样式参数被忽略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6514547/

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