gpt4 book ai didi

回调未在编辑控件上触发

转载 作者:行者123 更新时间:2023-11-30 14:38:19 26 4
gpt4 key购买 nike

我正在尝试将回调事件处理程序附加到 Windows 控件。我的代码如下:

URLInput.c

#include <windows.h>

#define ID_EDITCHILD 100

LRESULT CALLBACK URLInputWndProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
switch (uMsg) // Breakpoint set here never fires
{
...
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
}

HWND URLInput(HWND hwnd)
{
HINSTANCE hInstance = GetModuleHandle(NULL);
WNDCLASSW wc = { 0 };

wc.lpszClassName = L"Edit Control";
wc.lpfnWndProc = URLInputWndProc;
wc.hInstance = hInstance;

RegisterClassW(&wc);

hwnd = CreateWindowExW(
0,
L"EDIT",
NULL,
WS_CHILD | WS_VISIBLE | ES_LEFT | ES_AUTOVSCROLL,
0,
0,
100,
100,
hwnd,
(HMENU) ID_EDITCHILD,
(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),
NULL
);

if (hwnd == NULL) {
return 0;
}

return hwnd;
}

ma​​in.c中我这样调用:

INT WINAPI WinMain(  
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd)
{
...
URLInputHwnd = URLInput(hwnd);
...

它渲染得很好。但是,如果我在第 11 行 switch(uMsg) 上设置断点,它就永远不会中断。例如,我希望它在创建窗口时会破裂。或者,在输入中输入文本时。但这并没有发生。

我已经检查了 MSDN 文档,但找不到有关使用 WNDCLASS 与控件的任何内容。

有什么想法我哪里出错了吗?

最佳答案

感谢@Thomas 在评论中提供帮助。我解决了对创建的组件进行子类化的问题。

URLInput.c

#include <windows.h>

#define ID_EDITCHILD 100

static WNDPROC oldURLInputProc = 0;

LRESULT CALLBACK URLInputWndProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
switch (uMsg)
{
/* Do something with messages */
}

return CallWindowProc(oldURLInputProc, hwnd, uMsg, wParam, lParam);
}

HWND URLInput(HWND hwnd)
{
return CreateWindowExW(
0,
L"EDIT",
NULL,
WS_CHILD | WS_VISIBLE | ES_LEFT | ES_AUTOVSCROLL,
0,
0,
100,
100,
hwnd,
(HMENU) ID_EDITCHILD,
(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),
NULL
);
}

void setOldURLInputProc(WNDPROC wndProc)
{
oldURLInputProc = wndProc;
}

ma​​in.c中:

URLInputHwnd = URLInput(hwnd);
/* Error checking */
setOldURLInputProc((WNDPROC)SetWindowLongPtr (URLInputHwnd, GWLP_WNDPROC, (LONG_PTR)URLInputWndProc));

Microsoft 文档提供了帮助:https://learn.microsoft.com/en-us/windows/desktop/controls/subclassing-overview

一切正常。

关于回调未在编辑控件上触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56694718/

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