【发布时间】:2012-08-28 02:23:51
【问题描述】:
一个通知由一个控件发送给它的父级。当我使用SetWindowSubclass 子类化控件时,如何处理通知?我不想在父窗口进程中处理它们。在子类 proc 中有什么我可以做的吗?
如果我将一个Edit控件子类化,如何处理子类中的EN_CHANGE通知?
更新
这是子类proc:
LRESULT CALLBACK MyEditWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData)
{
switch (uMsg)
{
default:
return DefSubclassProc(hWnd, uMsg, wParam, lParam);
}
}
我用
SetWindowSubclass(GetDlgItem(hWnd, ID_MYEDIT), MyEditWindowProc, 0, 0);
对 Edit 控件进行子类化。
但是我应该处理哪条消息?当然不是WM_NOTIFY,因为它是由父级处理的。
【问题讨论】:
-
如果你已经继承了它,你应该可以在子类 WndProc 中处理它。如果没有,你能发布一些代码吗?
-
@casablanca 但是我应该处理哪条消息?
-
EN_CHANGE等不都是WM_USER + x吗?我没有分类那么多,所以我不记得了。 -
@chris
EN_CHANGE是通知代码,而不是消息代码。 -
啊,我看错了你的问题。我认为您不能通过子类化来处理通知。 MFC 有一个名为message reflection 的功能可以执行此操作,但我所知道的 Win32 API 中没有执行此操作。
标签: c winapi user-interface