1.AllocateHWND用于建立一个非可视的窗口,专用于响应消息。WINDOWS会把消息发给相应的窗口的。
Windows的Defwindowproc函数用于处理所有你没处理的MESSAGE。
SetForegroundWindow(IconMgr.HWindow);     // 这一句是为了显示菜单
PostMessage(IconMgr.HWindow,WM_USER,0,0); // 不知道它是如何响应WM_USER消息的,但此句是为调用其消息处理的过程的。
2.Loaded是Component装入后的初始化过程,自动调用。
SendTrayMessage(NIM_ADD,NIF_MESSAGE or NIF_ICON or NIF_TIP); // 这便是显示图标的
3.菜单是自动消失的,和一般程序并无不同。
这就是在通知TRAYICON:菜单已释放。
    inherited Notification(Acomponent,Operation); // 如果Operation = opRemove 且 AComponent = PopupMenu,则菜单在这里就释放了
        PopupMenu := nil;  // 这只是清除对菜单的引用(因为它已经不在了)
  Windows来通知TrayNotifyIon类要释放菜单,Windows把消息发到这里,它就在这里知道的。
    if Value <> nil then Value.FreeNotification(Self);  // 这用于在TRAYICON释放时同时能释放菜单另外,我也写过一个TRAYICON,在我的主页里:http://mentals.yes8.com,你可以参考一下(虽然有一部分代码是抄的,^_^)