我在我的应用程序中使用私人消息有一年了,就像这样:
UM_APP_BASE = WM_APP; // WM_APP is declared as WM_APP = $8000; in "Controls" unit.然后定义了我的私人消息:
UM_EXPLORER_MSG = UM_APP_BASE + 1;
UM_LICENSE_CHANGE_MSG = UM_APP_BASE + 2;
etc...在我的课堂上像这样使用它们:
procedure UMLicenseChanged(var Message: TMessage); message UM_LICENSE_CHANGE_MSG;(我也使用RegisterWindowMessage与我的其他应用程序“对话”,但那是另一回事)
我不记得是什么让我一开始就决定使用WM_APP而不是WM_USER作为基础。
文件上写着:
WM_USER常量用于区分保留供window使用的消息值和应用程序可用于在私有窗口类中发送消息的值。有五个消息编号范围:
Range Meaning
0 through WM_USER - 1 Messages reserved for use by Windows.
WM_USER through 0x7FFF Integer messages for use by private window classes.
0x8000 through 0xBFFF Messages reserved for future use by Windows.
0xC000 through 0xFFFF String messages for use by applications.
Greater than 0xFFFF Reserved by Windows for future use.这意味着WM_APP是“为将来的Windows所保留的”。另一方面,Delphi使用的CM_BASE = $B000;就在这个范围内。还有CN_BASE = $BC00;
如何定义基本消息,使其不会与Windows/Delphi/其他控件使用的其他消息冲突?对于我的应用程序,哪个基础消息是首选的私有消息?为什么?
我应该使用WM_USER而不是WM_APP吗?请注意,在CommCtrl中,Windows也使用WM_USER基础,例如TB_ENABLEBUTTON = WM_USER + 1。等等。
我需要一些关于这个问题的见解。
我在我的Delphi help API (D5)上读到了这篇文章。这显然已经过时了!
这可能是我决定使用WM_APP的原因。
不过,如果能解释一下两者之间的区别就更好了:)
https://stackoverflow.com/questions/20596047
复制相似问题