我正在围绕Win32控件/对话框/窗口编写一个相当简单的包装器。
我遇到的问题是ListBox和ComboBox的行为似乎有所不同。
在我继承的基本Widget类中,我覆盖控件的现有WNDPROC,然后处理新WNDPROC中的消息,主要是将它们提升为boost :: signal事件。
问题是,当ComboBox的WndProc收到CBN_SELCHANGE时 - 正如预期的那样 - ListBox的WndProc没有收到LBN_SELCHANGE命令。
我意识到拥有控件的对话框/窗口很可能会收到这个,但是我已经把这个兔子洞搞定了,这感觉就像一个非常简洁的解决方案。需要我退出并让控件的所有者处理WM_COMMAND消息(并从那里将其提升为控件本身的事件)。
这是一个学习练习,所以请不要提醒我关于MFC或评论这样做的价值。
答案 0 :(得分:1)
通知消息通常会发送给控件的父级。大概所有窗口(即父窗口和控件)都使用相同的窗口程序?在这种情况下,通常的解决方案是:在窗口过程的通知处理程序中检查通知是否来自当前窗口。如果确实如此,举起一个活动;如果它没有将消息重新发送回它来自的控件(它将作为一个事件被提升)。