我正在浏览一个开源项目的一些代码,这是我第一次处理 Win32 应用程序(主要是做控制台的东西)。我看到代码中的几个函数是 Windows 过程,因为它们返回 LRESULT CALLBACK。
程序员是否需要做一些事情来确保 DispatchMessage 调用正确的 WndProc 或者 DispatchMessage 的编码方式使其可以自行确定正确的 WndProc?
编辑:
我猜测 DispatchMessage(const MSG*) 在应用程序中的不同 WndProc 之间进行选择的方式是基于传递给它的 MSG 对象的窗口句柄成员 (HWND)。[希望前面的句子不会太混乱。] 如果例如,消息是针对应用程序的编辑窗口的(而不是针对其主窗口的),那么 DispatchMessage 将为编辑窗口作为其对象的特定类选择 WndProc 成员函数。如果消息是针对主窗口的,那么它将为主窗口作为对象的类选择 WndProc 成员函数(对我来说,这个类将是 Notepad_plus_Window 类)。不过,这只是一个想法。我没有找到太多的支持,所以如果有人能证实这一点,我会很高兴。