3ds Max C++ API Reference
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
System Notification Codes

The following pre-defined system notification codes may be passed to the global functions RegisterNotification(), UnRegisterNotification(), BroadcastNotification(). More...

Modules

 The name change notifications.
 Sent if a export fails or is cancelled.
 

Classes

struct  notify_param_helper< code >
 Helper class to assign a param type to a notification code. See GetNotifyParam. More...
 

Macros

#define DEFINE_NOTIFY_CODE(notifyCodeName, codeVal, callParamType)
 Macro to define a notification code and associated type, and register it for GetNotifyParam.
 
#define NOTIFY_UNITS_CHANGE   0x00000001
 Sent if the user changes the unit setting.
 
#define NOTIFY_TIMEUNITS_CHANGE   0x00000002
 Sent if the user changes the time format setting.
 
#define NOTIFY_VIEWPORT_CHANGE   0x00000003
 Sent if the user changes the viewport layout.
 
#define NOTIFY_SPACEMODE_CHANGE   0x00000004
 Sent if the user changes the reference coordinate system.
 
#define NOTIFY_SYSTEM_PRE_RESET   0x00000005
 Sent before 3ds Max system is reset.
 
#define NOTIFY_SYSTEM_POST_RESET   0x00000006
 Sent after 3ds Max system is reset.
 
#define NOTIFY_FILE_POST_SAVE_OLD   0x00000011
 Sent after an old version file is saved.
 
#define NOTIFY_SELECTIONSET_CHANGED   0x00000012
 Sent after the selection set has changed.
 
#define NOTIFY_POST_RENDER   0x00000015
 Sent before rendering starts.
 
#define NOTIFY_PRE_IMPORT   0x00000018
 Sent before a file is imported.
 
#define NOTIFY_PRE_EXPORT   0x0000001B
 Sent if a file import fails or is cancelled.
 
#define NOTIFY_POST_PROGRESS   0x00000020
 Sent after the progress bar is finished.
 
#define NOTIFY_MODPANEL_SEL_CHANGED   0x00000021
 Sent when the modify panel focuses on a new object because of opening the Modify panel or changing selection.
 
#define NOTIFY_RENDPARAM_CHANGED   0x00000023
 Sent when the common renderer parameters have changed via the render dialog.
 
#define NOTIFY_FILELINK_BIND_FAILED   0x0000002A
 Sent if a File Link Bind fails.
 
#define NOTIFY_FILELINK_DETACH_FAILED   0x0000002B
 Sent if a File Link Detach fails.
 
#define NOTIFY_FILELINK_RELOAD_FAILED   0x0000002C
 Sent if a File Link Reload fails.
 
#define NOTIFY_FILELINK_ATTACH_FAILED   0x0000002D
 Sent if a File Link Attach fails.
 
#define NOTIFY_FILELINK_PRE_BIND   0x00000030
 Sent before a File Link Bind.
 
#define NOTIFY_FILELINK_POST_BIND   0x00000031
 Sent after a successful File Link Bind.
 
#define NOTIFY_FILELINK_PRE_DETACH   0x00000032
 Sent before a File Link Detach.
 
#define NOTIFY_FILELINK_POST_DETACH   0x00000033
 Sent after a successful File Link Detach.
 
#define NOTIFY_FILELINK_PRE_RELOAD   0x00000034
 Sent before a File Link Reload (partial, full, or dynamic)
 
#define NOTIFY_FILELINK_POST_RELOAD   0x00000035
 Sent after a successful File Link Reload (partial, full, or dynamic)
 
#define NOTIFY_FILELINK_PRE_ATTACH   0x00000036
 Sent before a File Link Attach.
 
#define NOTIFY_FILELINK_POST_ATTACH   0x00000037
 Sent after a successful File Link.
 
#define NOTIFY_SCENE_POST_DELETED_NODE   0x00000045
 Sent before the renderer starts evaluating objects; NotifyInfo::callParam is a pointer to TimeValue.
 
#define NOTIFY_SEL_NODES_POST_DELETE   0x00000047
 selected nodes will be deleted. (NotifyInfo::callParam is a pointer to Tab<INode*>)
 
#define NOTIFY_SYSTEM_SHUTDOWN   0x00000049
 Sent when main window gets an WM_ENABLE (BOOL enabled)
 
#define NOTIFY_SYSTEM_STARTUP   0x00000050
 3ds Max just went live
 
#define NOTIFY_SYSTEM_SHUTDOWN2   0x00000052
 A plug-in was just loaded. (NotifyInfo::callParam is a pointer to DllDesc).
 
#define NOTIFY_ANIMATE_ON   0x00000053
 Sent when Animate UI mode is activated.
 
#define NOTIFY_ANIMATE_OFF   0x00000054
 Sent when Animate UI mode is de-activated.
 
#define NOTIFY_COLOR_CHANGE   0x00000055
 Sent by the system when one or more custom colors have changed.
 
#define NOTIFY_PRE_EDIT_OBJ_CHANGE   0x00000056
 Sent just before the current edit object is about to change.
 
#define NOTIFY_POST_EDIT_OBJ_CHANGE   0x00000057
 Sent just after the current edit object changes.
 
#define NOTIFY_LIGHTING_UNIT_DISPLAY_SYSTEM_CHANGE   0x0000005C
 Sent when radiosity processing is started.
 
#define NOTIFY_RADIOSITY_PLUGIN_CHANGED   0x00000060
 Sent when starting to render a reflect/refract map.
 
#define NOTIFY_MANIPULATE_MODE_OFF   0x00000063
 Sent on scene undo (NotifyInfo::callParam is a pointer to a string (MCHAR*) with the undo entry name).
 
#define NOTIFY_MANIPULATE_MODE_ON   0x00000064
 Sent when manipulate mode starts.
 
#define NOTIFY_PRE_NOTIFYDEPENDENTS   0x0000006C
 Sent before a mirror operation begins.
 
#define NOTIFY_POST_NOTIFYDEPENDENTS   0x0000006D
 Sent after NotifyDependents from outside the recursion.
 
#define NOTIFY_TIMERANGE_CHANGE   0x00000070
 Sent by Mtl::RefAdded(). NotifyInfo::callParam is a Mtl pointer.
 
#define NOTIFY_FILELINK_POST_RELOAD_PRE_PRUNE   0x00000085
 Sent before a modifier is added to an object.
 
#define NOTIFY_BY_CATEGORY_DISPLAY_FILTER_CHANGED   0x00000092
 Sent before each set of clones is created.
 
#define NOTIFY_CUSTOM_DISPLAY_FILTER_CHANGED   0x00000093
 Sent AFTER custom display filters have been activated/deactivated.
 
#define NOTIFY_MXS_STARTUP   0x0000009B
 Sent after a layer is added to layer manager.
 
#define NOTIFY_MXS_POST_STARTUP   0x0000009C
 Sent by MAXScript when it has completed its initialization.
 
#define NOTIFY_MXS_SHUTDOWN   0x000000A7
 Sent when MAXScript has been shut down.
 
#define NOTIFY_D3D_PRE_DEVICE_RESET   0x000000A8
 This is sent by the D3D GFX (Dx9) when a device reset is going to happen.
 
#define NOTIFY_D3D_POST_DEVICE_RESET   0x000000A9
 This is sent by the D3D GFX (Dx9) when a device reset has happened.
 
#define NOTIFY_TOOLPALETTE_MTL_SUSPEND   0x000000AA
 Used to suspend material change tracking in VIZ.
 
#define NOTIFY_TOOLPALETTE_MTL_RESUME   0x000000AB
 Used to resume material change tracking in VIZ.
 
#define NOTIFY_POST_SCENE_RESET   0x000000BD
 Sent just after deleting all refs in existing scene.
 
#define NOTIFY_SELECTION_LOCK   0x000000D0
 < Sent before an INode's general property is changed.
 
#define NOTIFY_SELECTION_UNLOCK   0x000000D1
 Sent when selection unlock is triggered. *‍/.
 
#define NOTIFY_OS_THEME_CHANGED   0x000000D7
 Sent after a custom attribute is added to an Animatable.
 
#define NOTIFY_ACTIVE_VIEWPORT_CHANGED   0x000000D8
 Sent when the current active viewport is changed.

 
#define NOTIFY_PRE_MAXMAINWINDOW_SHOW   0x000000DB
 NOTIFY_PRE_MAXMAINWINDOW_SHOW is being sent when main window of 3ds Max is about to show.
 
#define NOTIFY_POST_MAXMAINWINDOW_SHOW   0x000000DC
 NOTIFY_POST_MAXMAINWINDOW_SHOW is being sent immediately after the main window of 3ds Max is shown.
 
#define NOTIFY_PRE_APP_FRAME_THEME_CHANGED   0x000000E2
 Provides a notification that a new ClassDesc is being registered.
 
#define NOTIFY_APP_FRAME_THEME_CHANGED   0x000000E3
 Sent when the application theme is changed via IColorManager::SetAppFrameColorTheme().
 
#define NOTIFY_PRE_WORKSPACE_COLLECTION_CHANGE   0x000000E7
 Sent before a viewport is deleted. It usually occurs when removing a view tab.
 
#define NOTIFY_POST_WORKSPACE_COLLECTION_CHANGE   0x000000E8
 Sent after the collection of system workspaces has changed.
 
#define NOTIFY_KEYBOARD_SETTING_CHANGED   0x000000E9
 Sent after keyboard short-cut setting file(*.kbd) has changed.
 
#define NOTIFY_MOUSE_SETTING_CHANGED   0x000000EA
 Sent after mouse setting file has changed.
 
#define NOTIFY_APP_ACTIVATED   0x000000ED
 This provides a notification that a toolbar configuration is being saved, prior to save.
 
#define NOTIFY_APP_DEACTIVATED   0x000000EE
 Called when the main application window is deactivated.
 
#define NOTIFY_CUI_MENUS_UPDATED   0x000000EF
 
#define NOTIFY_CUI_MENUS_PRE_SAVE   0x000000F0
 
#define NOTIFY_CUI_MENUS_POST_SAVE   0x000000F1
 
#define NOTIFY_PLUGINS_PRE_SHUTDOWN   0x000000F3
 Called after the safe frame has been toggled on/off for the viewport.
 
#define NOTIFY_PLUGINS_PRE_UNLOAD   0x000000F4
 Sent during shutdown immediately before DllDesc::Unload is called on all plugin dlls.
 
#define NOTIFY_POST_NODE_SELECT_OPERATION   0x000000FC
 Called after a menu file has been loaded and the menu bar updated.
 
#define NOTIFY_WELCOMESCREEN_DONE   0x000000FE
 Sent before viewport tooltip pops. NotifyInfo::callParam is a INode* to the tip node.
 
#define NOTIFY_PLAYBACK_START   0x000000FF
 
#define NOTIFY_PLAYBACK_END   0x00000100
 
#define NOTIFY_SCENE_EXPLORER_NEEDS_UPDATE   0x00000101
 Sent if the scene explorer needs to refresh its display.
 
#define NOTIFY_FILE_POST_OPEN_PROCESS_FINALIZED   0x00000102
 Sent at the very end of the load sequence, note that any animatables created by the scene load may have been deleted by this point.
 
#define NOTIFY_FILE_POST_MERGE_PROCESS_FINALIZED   0x00000103
 Sent at the very end of the merge sequence, note that any animatables created by the scene merge may have been deleted by this point.
 
#define NOTIFY_PRE_PROJECT_FOLDER_CHANGE   0x00000104
 Sent before project folder is changed.
 
#define NOTIFY_POST_PROJECT_FOLDER_CHANGE   0x00000105
 Sent after project folder is changed.
 
#define NOTIFY_PRE_MXS_STARTUP_SCRIPT_LOAD   0x00000106
 Sent immediately before MAXScript loads its startup scripts. stdscripts will have already been read.
 
#define NOTIFY_SYSTEM_SHUTDOWN_CHECK   0x00000108
 Sent when potentially starting to shut 3ds Max down, before checking for things that can cancel the shutdown, such as scene dirty or ExitMAXCallback callback object returning false.
 
#define NOTIFY_SYSTEM_SHUTDOWN_CHECK_FAILED   0x00000109
 Sent if system shutdown was cancelled.
 
#define NOTIFY_SYSTEM_SHUTDOWN_CHECK_PASSED   0x0000010A
 Sent if system shutdown was not cancelled. and system shutdown is about to start.
 
#define NOTIFY_COLOR_MANAGEMENT_PRE_CHANGE   0x0000010F
 Sent after a file is merged.
 
#define NOTIFY_CUI_MENUS_INVALID   0x00000113
 Sent after the system color management settings are changed, this includes mode changes, system-wide gamma setting or changes to color config.
 
#define NOTIFY_CUI_MENUS_VALID   0x00000114
 : Sent after menu structure is modified (for example after loading a mnxb file) The intent is to use this notification to perform any additional ui updates after new menus are loaded NotifyInfo::callParam is nullptr
 
#define NOTIFY_CUI_QUAD_MENUS_INVALID   0x00000115
 : Sent before quad menu structure is modified (for example before loading a qmnxb file) The intent is to use this notification to clear any storage related to menu structure to avoid keeping dangling pointers NotifyInfo::callParam is nullptr
 
#define NOTIFY_CUI_QUAD_MENUS_VALID   0x00000116
 : Sent after quad menu structure is modified (for example after loading a qmnxb file) The intent is to use this notification to perform any additional ui updates after new menus are loaded NotifyInfo::callParam is nullptr
 
#define NOTIFY_INTERNAL_USE_START   0x70000000
 : Sent before menu structure is loaded NotifyInfo::callParam is a string (MCHAR*) containing the path of the file that will be loaded
 

Typedefs

template<NotifyCode code>
using notify_param_t = typename notify_param_helper< code >::type
 Helper type alias to assign a param type to a notification code.
 

Functions

template<NotifyCode code, NotifyCode... more_codes>
notify_param_t< code > GetNotifyParam (NotifyInfo *info)
 !
 
 DEFINE_NOTIFY_CODE (NOTIFY_FILE_PRE_OPEN, 0x00000009, FileIOType *)
 Sent before a new scene is requested.
 
 DEFINE_NOTIFY_CODE (NOTIFY_FILE_POST_OPEN, 0x0000000A, NotifyPostOpenParam *)
 Sent after a file is opened successfully.
 
 DEFINE_NOTIFY_CODE (NOTIFY_FILE_PRE_MERGE, 0x0000000B, DWORD *)
 Sent before a file is merged.
 
 DEFINE_NOTIFY_CODE (NOTIFY_FILE_PRE_SAVE, 0x0000000D, const MCHAR *)
 Sent before a file is saved (NotifyInfo::callParam is a pointer to a string (MCHAR *) of the file name).
 
 DEFINE_NOTIFY_CODE (NOTIFY_FILE_POST_SAVE, 0x0000000E, const MCHAR *)
 Sent after a file is saved (NotifyInfo::callParam is a pointer to a string (MCHAR *) of the file name).
 
 DEFINE_NOTIFY_CODE (NOTIFY_FILE_OPEN_FAILED, 0x0000000F, FileIOType *)
 Sent after a file open fails. NotifyInfo::callParam is a pointer to type FileIOType.
 
 DEFINE_NOTIFY_CODE (NOTIFY_FILE_PRE_SAVE_OLD, 0x00000010, DWORD *)
 Sent before an old version file is saved.
 
 DEFINE_NOTIFY_CODE (NOTIFY_BITMAP_CHANGED, 0x00000013, const MCHAR *)
 Sent after a bitmap is reloaded.
 
 DEFINE_NOTIFY_CODE (NOTIFY_PRE_RENDERFRAME, 0x00000016, RenderGlobalContext *)
 Sent before rendering each frame.
 
 DEFINE_NOTIFY_CODE (NOTIFY_POST_RENDERFRAME, 0x00000017, RenderGlobalContext *)
 Sent after rendering each.
 
 DEFINE_NOTIFY_CODE (NOTIFY_POST_IMPORT, 0x00000019, const MCHAR *)
 Sent after a file is imported successfully.
 
 DEFINE_NOTIFY_CODE (NOTIFY_POST_EXPORT, 0x0000001C, const MCHAR *)
 Sent after a file is exported successfully.
 

Material Library File Notifications

#define NOTIFY_MATLIB_PRE_OPEN   0x00000024
 Sent before loading a material library.
 
#define NOTIFY_MATLIB_PRE_SAVE   0x00000026
 Sent after loading a material library.
 
#define NOTIFY_MATLIB_POST_SAVE   0x00000027
 Sent after saving a material library.
 
#define NOTIFY_MATLIB_PRE_MERGE   0x00000028
 Sent before merging a material library.
 
#define NOTIFY_MATLIB_POST_MERGE   0x00000029
 Sent after merging a material library.
 

XRef System Notifications

These notices typically surround Merge notices

#define NOTIFY_SCENE_XREF_PRE_MERGE   0x00000065
 Sent before an XRef scene is merged.
 
#define NOTIFY_OBJECT_XREF_PRE_MERGE   0x00000067
 Sent after an XRef scene is successfully merged (NotifyInfo::callParam is a INode* pointer to the scene XRef tree).
 
#define NOTIFY_OBJECT_XREF_POST_MERGE   0x00000068
 Sent after an XRef object is successfully merged.
 

Undo/Redo Notifications

Sent before a Scene State is saved.

Sent after a Scene State is saved.

Sent before a Scene State is restored.

Sent after a Scene State is restored.

Sent after a Scene State is deleted.

Sent after a Scene State is renamed. NotifyInfo::callParam is pointer to NameChange

#define NOTIFY_SCENE_POST_UNDO   NOTIFY_SCENE_UNDO
 Sent before an Undo starts.
 
#define NOTIFY_SCENE_POST_REDO   NOTIFY_SCENE_REDO
 Sent to make the previous undo notification more explicit, and match the PRE_UNDO.
 

Asset Tracking System Notifications

Sent after a ClassDesc was successfully loaded from a plugin dll.

Remarks
For each non NULL class descriptor returned by a plugin's ClassDesc* LibClassDesc(int i) method, the system broadcasts this notification. The call parameter will be a pointer to the ClassDesc.
See also
~{ Required DLL Functions }~

This provides a notification that a toolbar configuration is being loaded, prior to load. NotifyInfo::callParam is a pointer to a string (MCHAR*) and is NULL if the default file is being loaded, or the full path to the file being loaded

This provides a notification that a toolbar configuration is being loaded, after the load. NotifyInfo::callParam is a pointer to a string (MCHAR*) and is NULL if the default file is being loaded, or the full path to the file being loaded

These notification bracket ATS traversal of the entire scene (or ReferenceTarget hierarchy, in the case of a general retarget action) and repath any assets that should be repathed.
No parameters are sent with these notifications.

#define NOTIFY_ATS_PRE_REPATH_PHASE   0x000000B3
 Sent before the ATS traversal starts.
 
#define NOTIFY_ATS_POST_REPATH_PHASE   0x000000B4
 Sent after the ATS traversal completes.
 

Bitmap Proxy System Notifications

Any specific operation during which proxies should be disable can be surrounded by these notifications.

This method of disabling proxies is different from actually disabling the bitmap proxies through the proxy manager; these notifications do not actually result in re-loading of any bitmaps. Rather, the Bitmap Texture will only load the high-res image when it is asked to, which makes the process efficient.

Note
One should ideally NOT broadcast these notifications. Instead, use class BitmapProxyTemporaryDisableGuard; it is safer as it handles multiple nested disables.
#define NOTIFY_PROXY_TEMPORARY_DISABLE_START   0x000000B5
 
#define NOTIFY_PROXY_TEMPORARY_DISABLE_END   0x000000B6
 

New Scene Options

Flag values in callParam for NOTIFY_SYSTEM_PRE_NEW and NOTIFY_SYSTEM_POST_NEW indicating the type of new scene operation that was carried out.

#define PRE_NEW_NEW_ALL   0x1
 All objects are deleted, including their animation data.
 

Detailed Description

The following pre-defined system notification codes may be passed to the global functions RegisterNotification(), UnRegisterNotification(), BroadcastNotification().

See also
Structure NotifyInfo, Class Interface, Class Bitmap, Class RenderGlobalContext.

Macro Definition Documentation

◆ DEFINE_NOTIFY_CODE

#define DEFINE_NOTIFY_CODE (   notifyCodeName,
  codeVal,
  callParamType 
)
Value:
inline constexpr NotifyCode notifyCodeName = codeVal;\
template <> struct notify_param_helper<notifyCodeName> { using type = callParamType; };
int NotifyCode
Type of all notification codes.
Definition: notifyParams.h:46
Helper class to assign a param type to a notification code. See GetNotifyParam.
Definition: notify.h:39
void * type
Definition: notify.h:39

Macro to define a notification code and associated type, and register it for GetNotifyParam.

◆ NOTIFY_UNITS_CHANGE

#define NOTIFY_UNITS_CHANGE   0x00000001

Sent if the user changes the unit setting.

◆ NOTIFY_TIMEUNITS_CHANGE

#define NOTIFY_TIMEUNITS_CHANGE   0x00000002

Sent if the user changes the time format setting.

◆ NOTIFY_VIEWPORT_CHANGE

#define NOTIFY_VIEWPORT_CHANGE   0x00000003

Sent if the user changes the viewport layout.

◆ NOTIFY_SPACEMODE_CHANGE

#define NOTIFY_SPACEMODE_CHANGE   0x00000004

Sent if the user changes the reference coordinate system.

◆ NOTIFY_SYSTEM_PRE_RESET

#define NOTIFY_SYSTEM_PRE_RESET   0x00000005

Sent before 3ds Max system is reset.

◆ NOTIFY_SYSTEM_POST_RESET

#define NOTIFY_SYSTEM_POST_RESET   0x00000006

Sent after 3ds Max system is reset.

◆ NOTIFY_FILE_POST_SAVE_OLD

#define NOTIFY_FILE_POST_SAVE_OLD   0x00000011

Sent after an old version file is saved.

◆ NOTIFY_SELECTIONSET_CHANGED

#define NOTIFY_SELECTIONSET_CHANGED   0x00000012

Sent after the selection set has changed.

◆ NOTIFY_POST_RENDER

#define NOTIFY_POST_RENDER   0x00000015

Sent before rendering starts.

Sent after rendering has finished.

◆ NOTIFY_PRE_IMPORT

#define NOTIFY_PRE_IMPORT   0x00000018

Sent before a file is imported.

◆ NOTIFY_PRE_EXPORT

#define NOTIFY_PRE_EXPORT   0x0000001B

Sent if a file import fails or is cancelled.

Sent before a file is exported

◆ NOTIFY_POST_PROGRESS

#define NOTIFY_POST_PROGRESS   0x00000020

Sent after the progress bar is finished.

◆ NOTIFY_MODPANEL_SEL_CHANGED

#define NOTIFY_MODPANEL_SEL_CHANGED   0x00000021

Sent when the modify panel focuses on a new object because of opening the Modify panel or changing selection.

◆ NOTIFY_RENDPARAM_CHANGED

#define NOTIFY_RENDPARAM_CHANGED   0x00000023

Sent when the common renderer parameters have changed via the render dialog.

◆ NOTIFY_MATLIB_PRE_OPEN

#define NOTIFY_MATLIB_PRE_OPEN   0x00000024

Sent before loading a material library.

◆ NOTIFY_MATLIB_PRE_SAVE

#define NOTIFY_MATLIB_PRE_SAVE   0x00000026

Sent after loading a material library.

NotifyInfo::callParam is a pointer to MtlBaseLib if success, otherwise NULL.

Sent before saving a material library

◆ NOTIFY_MATLIB_POST_SAVE

#define NOTIFY_MATLIB_POST_SAVE   0x00000027

Sent after saving a material library.

◆ NOTIFY_MATLIB_PRE_MERGE

#define NOTIFY_MATLIB_PRE_MERGE   0x00000028

Sent before merging a material library.

◆ NOTIFY_MATLIB_POST_MERGE

#define NOTIFY_MATLIB_POST_MERGE   0x00000029

Sent after merging a material library.

◆ NOTIFY_FILELINK_BIND_FAILED

#define NOTIFY_FILELINK_BIND_FAILED   0x0000002A

Sent if a File Link Bind fails.

◆ NOTIFY_FILELINK_DETACH_FAILED

#define NOTIFY_FILELINK_DETACH_FAILED   0x0000002B

Sent if a File Link Detach fails.

◆ NOTIFY_FILELINK_RELOAD_FAILED

#define NOTIFY_FILELINK_RELOAD_FAILED   0x0000002C

Sent if a File Link Reload fails.

◆ NOTIFY_FILELINK_ATTACH_FAILED

#define NOTIFY_FILELINK_ATTACH_FAILED   0x0000002D

Sent if a File Link Attach fails.

◆ NOTIFY_FILELINK_PRE_BIND

#define NOTIFY_FILELINK_PRE_BIND   0x00000030

Sent before a File Link Bind.

◆ NOTIFY_FILELINK_POST_BIND

#define NOTIFY_FILELINK_POST_BIND   0x00000031

Sent after a successful File Link Bind.

◆ NOTIFY_FILELINK_PRE_DETACH

#define NOTIFY_FILELINK_PRE_DETACH   0x00000032

Sent before a File Link Detach.

◆ NOTIFY_FILELINK_POST_DETACH

#define NOTIFY_FILELINK_POST_DETACH   0x00000033

Sent after a successful File Link Detach.

◆ NOTIFY_FILELINK_PRE_RELOAD

#define NOTIFY_FILELINK_PRE_RELOAD   0x00000034

Sent before a File Link Reload (partial, full, or dynamic)

◆ NOTIFY_FILELINK_POST_RELOAD

#define NOTIFY_FILELINK_POST_RELOAD   0x00000035

Sent after a successful File Link Reload (partial, full, or dynamic)

◆ NOTIFY_FILELINK_PRE_ATTACH

#define NOTIFY_FILELINK_PRE_ATTACH   0x00000036

Sent before a File Link Attach.

◆ NOTIFY_FILELINK_POST_ATTACH

#define NOTIFY_FILELINK_POST_ATTACH   0x00000037

Sent after a successful File Link.

See also
NOTIFY_FILELINK_POST_RELOAD_PRE_PRUNE

◆ NOTIFY_SCENE_POST_DELETED_NODE

#define NOTIFY_SCENE_POST_DELETED_NODE   0x00000045

Sent before the renderer starts evaluating objects; NotifyInfo::callParam is a pointer to TimeValue.

The NotifyInfo::callParam is passed as a pointer to TimeValue. Renderer plugins must broadcast this notification before they start evaluation scene objects. This notification allows plugins (such as modifiers or base objects) to perform a custom task before the renderer evaluates them. The custom task is usually one that would be invalid to be performed during a call to INode::EvalWorldState().

Sent when a node is created (NotifyInfo::callParam is a pointer to the node).

Sent when a node is linked (NotifyInfo::callParam is a pointer to the node).

Sent when a node is unlinked (NotifyInfo::callParam is a pointer to the node).

Sent when a node is hidden (NotifyInfo::callParam is a pointer to the node).

Sent when a node is unhidden (NotifyInfo::callParam is a pointer to the node).

Sent when a node is frozen (NotifyInfo::callParam is a pointer to the node).

Sent when a node is unfrozen (NotifyInfo::callParam is a pointer to the node).

Node is about to get a new material (NotifyInfo::callParam is a pointer to the node).

Node just got a new material (NotifyInfo::callParam is a pointer to the node).

Node just added to scene (NotifyInfo::callParam is a pointer to the node).

Node just removed from scene (NotifyInfo::callParam is a pointer to the node).

Node just removed from scene

◆ NOTIFY_SEL_NODES_POST_DELETE

#define NOTIFY_SEL_NODES_POST_DELETE   0x00000047

selected nodes will be deleted. (NotifyInfo::callParam is a pointer to Tab<INode*>)

Selected nodes just deleted.

◆ NOTIFY_SYSTEM_SHUTDOWN

#define NOTIFY_SYSTEM_SHUTDOWN   0x00000049

Sent when main window gets an WM_ENABLE (BOOL enabled)

3ds Max is about to exit, (system shutdown starting)

◆ NOTIFY_SYSTEM_STARTUP

#define NOTIFY_SYSTEM_STARTUP   0x00000050

3ds Max just went live

◆ NOTIFY_SYSTEM_SHUTDOWN2

#define NOTIFY_SYSTEM_SHUTDOWN2   0x00000052

A plug-in was just loaded. (NotifyInfo::callParam is a pointer to DllDesc).

Last broadcast before exit, after the scene is destroyed. Most plugins will not live long enough to receive the notification. It is important to unregister this notification when your plugin dies. If not, 3ds Max will try to notify objects that no longer exist.

◆ NOTIFY_ANIMATE_ON

#define NOTIFY_ANIMATE_ON   0x00000053

Sent when Animate UI mode is activated.

◆ NOTIFY_ANIMATE_OFF

#define NOTIFY_ANIMATE_OFF   0x00000054

Sent when Animate UI mode is de-activated.

◆ NOTIFY_COLOR_CHANGE

#define NOTIFY_COLOR_CHANGE   0x00000055

Sent by the system when one or more custom colors have changed.

Plug-ins should listen to this notification if they use any of the custom colors registered with the system. See ViewportDrawingColors. If a plug-in has created a toolbar with a MaxBmpFileIcons object on it, it should register for this notification, and call ICustToolbar::ResetIconImages() in response to it. See classes ICustToolbar and MAXBmpFileIcon.

◆ NOTIFY_PRE_EDIT_OBJ_CHANGE

#define NOTIFY_PRE_EDIT_OBJ_CHANGE   0x00000056

Sent just before the current edit object is about to change.

This notification is sent whenever the object returned by Interface::GetCurEditObject() changes.

◆ NOTIFY_POST_EDIT_OBJ_CHANGE

#define NOTIFY_POST_EDIT_OBJ_CHANGE   0x00000057

Sent just after the current edit object changes.

This notification is sent whenever the object returned by Interface::GetCurEditObject() changes.

◆ NOTIFY_LIGHTING_UNIT_DISPLAY_SYSTEM_CHANGE

#define NOTIFY_LIGHTING_UNIT_DISPLAY_SYSTEM_CHANGE   0x0000005C

Sent when radiosity processing is started.

The radiosity_process notifications are designed to be broadcast by radiosity plugins (derived from class RadiosityEffect). The broadcast must be implemented in the plugin for the notification to work.

Sent when radiosity processing is stopped, but not done. The radiosity_process notifications are designed to be broadcast by radiosity plugins (derived from class RadiosityEffect). The broadcast must be implemented in the plugin for the notification to work.

Sent when radiosity processing is reset. The radiosity_process notifications are designed to be broadcast by radiosity plugins (derived from class RadiosityEffect). The broadcast must be implemented in the plugin for the notification to work.

Sent when radiosity processing is complete. The radiosity_process notifications are designed to be broadcast by radiosity plugins (derived from class RadiosityEffect). The broadcast must be implemented in the plugin for the notification to work.

Sent when lighting unit display system is changed

◆ NOTIFY_RADIOSITY_PLUGIN_CHANGED

#define NOTIFY_RADIOSITY_PLUGIN_CHANGED   0x00000060

Sent when starting to render a reflect/refract map.

Sent when starting to render the full frame.

Sent when starting to render a tone-mapping image.

Sent when the radiosity plugin is changed (a new one is assigned)

◆ NOTIFY_MANIPULATE_MODE_OFF

#define NOTIFY_MANIPULATE_MODE_OFF   0x00000063

Sent on scene undo (NotifyInfo::callParam is a pointer to a string (MCHAR*) with the undo entry name).

Sent on scene redo (NotifyInfo::callParam is a pointer to a string (MCHAR*) with the redo entry name).

Sent when manipulate mode ends

◆ NOTIFY_MANIPULATE_MODE_ON

#define NOTIFY_MANIPULATE_MODE_ON   0x00000064

Sent when manipulate mode starts.

◆ NOTIFY_SCENE_XREF_PRE_MERGE

#define NOTIFY_SCENE_XREF_PRE_MERGE   0x00000065

Sent before an XRef scene is merged.

◆ NOTIFY_OBJECT_XREF_PRE_MERGE

#define NOTIFY_OBJECT_XREF_PRE_MERGE   0x00000067

Sent after an XRef scene is successfully merged (NotifyInfo::callParam is a INode* pointer to the scene XRef tree).

Sent before an XRef object is merged

◆ NOTIFY_OBJECT_XREF_POST_MERGE

#define NOTIFY_OBJECT_XREF_POST_MERGE   0x00000068

Sent after an XRef object is successfully merged.

◆ NOTIFY_PRE_NOTIFYDEPENDENTS

#define NOTIFY_PRE_NOTIFYDEPENDENTS   0x0000006C

Sent before a mirror operation begins.

NotifyInfo::callParam is a pointer to Tab<INode*> consisting of the nodes currently in the selection list that the mirror tool is to be applied to.

Sent after a mirror operation ends. NotifyInfo::callParam is a pointer to Tab<INode*> consisting of the nodes currently in the selection list that the mirror tool is to be applied to.

Sent after a node is cloned but before theHold.Accept(..) (NotifyInfo::callParam is a pointer to the node).

Sent before NotifyDependents from outside the recursion that is, not during the traversal of reference targets

◆ NOTIFY_POST_NOTIFYDEPENDENTS

#define NOTIFY_POST_NOTIFYDEPENDENTS   0x0000006D

Sent after NotifyDependents from outside the recursion.

That is, not during the traversal of reference targets

◆ NOTIFY_TIMERANGE_CHANGE

#define NOTIFY_TIMERANGE_CHANGE   0x00000070

Sent by Mtl::RefAdded(). NotifyInfo::callParam is a Mtl pointer.

Sent by Mtl::FefDeleted(). NotifyInfo::callParam is a Mtl pointer.

Sent after the animate time range has been changed

◆ NOTIFY_FILELINK_POST_RELOAD_PRE_PRUNE

#define NOTIFY_FILELINK_POST_RELOAD_PRE_PRUNE   0x00000085

Sent before a modifier is added to an object.

The NotifyInfo structure pointer callParam is passed a pointer to a NotifyModAddDelParam.

Sent after a modifier is added to an object. The NotifyInfo structure pointer callParam is passed a pointer to a NotifyModAddDelParam.

Sent before a modifier is deleted from an object. The NotifyInfo structure pointer callParam is passed a pointer to a NotifyModAddDelParam.

Sent after a modifier is deleted from an object. The NotifyInfo structure pointer callParam is passed a pointer to a NotifyModAddDelParam.

Sent after all of the new objects for a reload have been created But, before any objects have been deleted.

◆ NOTIFY_BY_CATEGORY_DISPLAY_FILTER_CHANGED

#define NOTIFY_BY_CATEGORY_DISPLAY_FILTER_CHANGED   0x00000092

Sent before each set of clones is created.

For example, if there are N nodes cloned C times, the notification is sent C times. The NotifyInfo::callParam for NOTIFY_PRE_NODES_CLONED is a pointer to the array of nodes that will be cloned (the original nodes): INodeTab* origNodes

Sent after each set of clones is created. For example, if there are N nodes cloned C times, the notification is sent C times. The NotifyInfo::callParam for NOTIFY_POST_NODES_CLONED is a pointer to NotifyPostNodesCloned

Sent before a system path changes. Originally intended to notify the tool palette if the Catalog's dir changes from the Configure Path dialog.

Sent after a system path has changed. Originally intended to notify the tool palette if the Catalog's dir changes from the Configure Path dialog.

Schematic view notification. NotifyInfo::callParam is a pointer to the index of the schematic view (int*)

Schematic view notification NotifyInfo::callParam is IGraphNode*

Sent before the renderer changes NotifyInfo::callParam is the RenderSettingID enum value

Sent after the renderer changes NotifyInfo::callParam is the RenderSettingID enum value

Sent before a schematic view layout change is made. NotifyInfo::callParam is a pointer to the index of the schematic view (int*)

Sent after a schematic view layout change is made. NotifyInfo::callParam is a pointer to the index of the schematic view (int*)

Sent AFTER object categories were marked to be hidden/unhidden. Clients registered for this notification can retrieve the categories whose hidden state have changed by retrieving the category flags by calling DWORD Interface::GetHideByCategoryFlags()

◆ NOTIFY_CUSTOM_DISPLAY_FILTER_CHANGED

#define NOTIFY_CUSTOM_DISPLAY_FILTER_CHANGED   0x00000093

Sent AFTER custom display filters have been activated/deactivated.

Results in changes to some objects hidden state. Clients registered for this notification can retrieve the active custom display filters by checking their On/Off state using BOOL Interface::GetDisplayFilter(int index)

◆ NOTIFY_MXS_STARTUP

#define NOTIFY_MXS_STARTUP   0x0000009B

Sent after a layer is added to layer manager.

NotifyInfo::callParam is a pointer to ILayer.

Sent before layer is removed from layer manager; NotifyInfo::callParam is a pointer to ILayer.

NotifyInfo::callParam is a pointer to LayerChange newLayer and oldLayer can be NULL when switching between layers, during create, and when loading files Layers may not be present in layer manager when sent during file load/merge

Sent when a tabbed dialog is created. NotifyInfo::callParam is point to the dialogID (Class_ID).

Sent when a tabbed dialog is deleted. NotifyInfo::callParam is a pointer to the dialogID (Class_ID).

Sent by BaseNode::SetName. NotifyInfo::callParam is pointer to NodeNameSetParam

Sent by the Material Editor when the "use texture in hardware shader" button is pressed.

Sent by MAXScript during its initialization Occurs immediately before it scans the registered plugin classes and wraps them in MAXClass values any runtime defined classes created in this callback will be detected by MXS any core interfaces installed in this callback will be detected by MXS

◆ NOTIFY_MXS_POST_STARTUP

#define NOTIFY_MXS_POST_STARTUP   0x0000009C

Sent by MAXScript when it has completed its initialization.

◆ NOTIFY_SCENE_POST_UNDO

#define NOTIFY_SCENE_POST_UNDO   NOTIFY_SCENE_UNDO

Sent before an Undo starts.

Sent before a Redo starts. Allows a developer to get an accurate picture of what the undo/redo is doing, and not having to rely on calling RestoreOrRedoing(). This solves a problem of evaluating a node during an undo when the hold system was active, but wasn't initiated from either script or the UI. An example is right- clicking to cancel object creation

Sent to make the previous undo notification more explicit, and match the PRE_UNDO.

◆ NOTIFY_SCENE_POST_REDO

#define NOTIFY_SCENE_POST_REDO   NOTIFY_SCENE_REDO

Sent to make the previous undo notification more explicit, and match the PRE_UNDO.

◆ NOTIFY_MXS_SHUTDOWN

#define NOTIFY_MXS_SHUTDOWN   0x000000A7

Sent when MAXScript has been shut down.

No access to any MXS value should be made after this notification, including calls to event handlers

◆ NOTIFY_D3D_PRE_DEVICE_RESET

#define NOTIFY_D3D_PRE_DEVICE_RESET   0x000000A8

This is sent by the D3D GFX (Dx9) when a device reset is going to happen.

This can allow Hardware shader to release their resources allocated in the DEFAULT_POOL

◆ NOTIFY_D3D_POST_DEVICE_RESET

#define NOTIFY_D3D_POST_DEVICE_RESET   0x000000A9

This is sent by the D3D GFX (Dx9) when a device reset has happened.

This can allow Hardware shader to release their resources allocated in the DEFAULT_POOL

◆ NOTIFY_TOOLPALETTE_MTL_SUSPEND

#define NOTIFY_TOOLPALETTE_MTL_SUSPEND   0x000000AA

Used to suspend material change tracking in VIZ.

In VIZ, the tool palette system listens for additions and removals to the scene material library and tracks reference additions and removals to existing materials. Upon resumption, the scene material lib will be traversed and changes reflected in the palette.

◆ NOTIFY_TOOLPALETTE_MTL_RESUME

#define NOTIFY_TOOLPALETTE_MTL_RESUME   0x000000AB

Used to resume material change tracking in VIZ.

In VIZ, the tool palette system listens for additions and removals to the scene material library and tracks reference additions and removals to existing materials. Upon resumption, the scene material lib will be traversed and changes reflected in the palette.

◆ NOTIFY_ATS_PRE_REPATH_PHASE

#define NOTIFY_ATS_PRE_REPATH_PHASE   0x000000B3

Sent before the ATS traversal starts.

◆ NOTIFY_ATS_POST_REPATH_PHASE

#define NOTIFY_ATS_POST_REPATH_PHASE   0x000000B4

Sent after the ATS traversal completes.

◆ NOTIFY_PROXY_TEMPORARY_DISABLE_START

#define NOTIFY_PROXY_TEMPORARY_DISABLE_START   0x000000B5

◆ NOTIFY_PROXY_TEMPORARY_DISABLE_END

#define NOTIFY_PROXY_TEMPORARY_DISABLE_END   0x000000B6

◆ NOTIFY_POST_SCENE_RESET

#define NOTIFY_POST_SCENE_RESET   0x000000BD

Sent just after deleting all refs in existing scene.

This notification is sent after wiping the existing scene. Examples of when this occurs is immediately before loading in the new scene from a file, and when doing a file new

◆ NOTIFY_SELECTION_LOCK

#define NOTIFY_SELECTION_LOCK   0x000000D0

< Sent before an INode's general property is changed.

Sent After an INode's general property is changed. Sent before an INode's global illumination property is changed. Sent after an INode's global illumination property is changed. Sent before an INode's mental ray property is changed. Sent after an INode's mental ray illumination property is changed.

Sent before an INode's bone property is changed. Note that bone properties can only be changed through a function published interface. Thus it is called on a per node basis, and not on a collection of INodes. Therefore while the callParam for the notification may return an INodeTab for legacy compatibility, the INodeTab will always only contain one object, not multiple objects. Note: This event will not broadcast for transform matrix changes.

Sent after an INode's bone property is changed. Note that bone properties can only be changed through a function published interface. Thus it is called on a per node basis, and not on a collection of INodes. Therefore while the callParam for the notification may return an INodeTab for legacy compatibility, the INodeTab will always only contain one object, not multiple objects. Note: This event will not broadcast for transform matrix changes. < Sent before an INode's user property is changed. Sent after an INode's user property is changed. < Sent before an INode's render property is changed. Sent after an INode's render property is changed. Sent before an INode's display property is changed. Sent after an INode's display property is changed. Sent before an INode's basic property is changed. Sent after an INode's basic property is changed.

Sent when selection lock is triggered. *‍/ NotifyInfo::callParam is NULL.

◆ NOTIFY_SELECTION_UNLOCK

#define NOTIFY_SELECTION_UNLOCK   0x000000D1

Sent when selection unlock is triggered. *‍/.

NotifyInfo::callParam is NULL.

◆ NOTIFY_OS_THEME_CHANGED

#define NOTIFY_OS_THEME_CHANGED   0x000000D7

Sent after a custom attribute is added to an Animatable.

Sent after a custom attribute is removed from an Animatable

Sent after OS theme has been changed

◆ NOTIFY_ACTIVE_VIEWPORT_CHANGED

#define NOTIFY_ACTIVE_VIEWPORT_CHANGED   0x000000D8

Sent when the current active viewport is changed.

Typically this notification is sent when the user has switched viewports. To get notifications of any other type of viewport change, please use NOTIFY_VIEWPORT_CHANGE

◆ NOTIFY_PRE_MAXMAINWINDOW_SHOW

#define NOTIFY_PRE_MAXMAINWINDOW_SHOW   0x000000DB

NOTIFY_PRE_MAXMAINWINDOW_SHOW is being sent when main window of 3ds Max is about to show.

◆ NOTIFY_POST_MAXMAINWINDOW_SHOW

#define NOTIFY_POST_MAXMAINWINDOW_SHOW   0x000000DC

NOTIFY_POST_MAXMAINWINDOW_SHOW is being sent immediately after the main window of 3ds Max is shown.

◆ NOTIFY_PRE_APP_FRAME_THEME_CHANGED

#define NOTIFY_PRE_APP_FRAME_THEME_CHANGED   0x000000E2

Provides a notification that a new ClassDesc is being registered.

This occurs when dlls containing plugins are loaded, and when a ClassDesc is dynamically created and registered with 3ds Max (for example, when a scripted plugin is defined). When loading a dll containing plugins, for each plugin you will get a NOTIFY_CLASSDESC_LOADED notification followed by a NOTIFY_CLASSDESC_ADDED notification. When a ClassDesc is dynamically created and registered with 3ds Max, you will get just a NOTIFY_CLASSDESC_ADDED notification. CallParam is pointer to ClassDesc

NOTIFY_OBJECT_DEFINITION_CHANGE_BEGIN is sent immediately before object instances are updated to a new object definition

MAXScript allows scripted plugin and scripted custom attribute definitions to be updated by re-evaluating the definition script. The new definition can add or remove local variables, parameter blocks, parameter block items, rollouts, and rollout controls. After the new definition is evaluated, existing plugin instances are converted to this new definition. This notification is sent immediately before the instances are converted to the new definition. The NotifyInfo structure pointer callParam is passed a pointer to a ObjectDefinitionChangeNotificationParam struct instance. Currently the only valid type value is kScriptedPlugin, which signifies a scripted plugin/custom attribute class description, and the definition is a pointer to ClassDesc2 A plugin may use this notification to, for example, control the rebuilding of rollout displays for instances of the plugins using the definition.

See also
REFMSG_OBJECT_DEFINITION_CHANGE_BEGIN, ObjectDefinitionChangeNotificationParam

NOTIFY_OBJECT_DEFINITION_CHANGE_END is sent immediately after object instances are updated to a new object definition

MAXScript allows scripted plugin and scripted custom attribute definitions to be updated by re-evaluating the definition script. The new definition can add or remove local variables, parameter blocks, parameter block items, rollouts, and rollout controls. After the new definition is evaluated, existing plugin instances are converted to this new definition. This notification is sent immediately after the instances are converted to the new definition. The NotifyInfo structure pointer callParam is passed a pointer to a ObjectDefinitionChangeNotificationParam struct instance. Currently the only valid type value is kScriptedPlugin, which signifies a scripted plugin/custom attribute class description, and the definition is a pointer to ClassDesc2 A plugin may use this notification to, for example, control the rebuilding of rollout displays for instances of the plugins using the definition.

See also
REFMSG_OBJECT_DEFINITION_CHANGE_END, ObjectDefinitionChangeNotificationParam

Sent when a MtlBase is about to show its UI with Associated parameter rollouts when being edited in a material editor.

NotifyInfo::callParam is a pointer to the MtlBase that is about to show its UI.

Sent when a MtlBase has finished its editing in the material editor and the UI with Associated parameter rollouts have been closed.

NotifyInfo::callParam is a pointer to the MtlBase that has closed its UI.

Sent before the application theme is changed via IColorManager::SetAppFrameColorTheme().

NotifyInfo::callParam is NULL.

◆ NOTIFY_APP_FRAME_THEME_CHANGED

#define NOTIFY_APP_FRAME_THEME_CHANGED   0x000000E3

Sent when the application theme is changed via IColorManager::SetAppFrameColorTheme().

NotifyInfo::callParam is NULL.

◆ NOTIFY_PRE_WORKSPACE_COLLECTION_CHANGE

#define NOTIFY_PRE_WORKSPACE_COLLECTION_CHANGE   0x000000E7

Sent before a viewport is deleted. It usually occurs when removing a view tab.

NotifyInfo::callParam is the HWND of the viewport to be deleted. Sent before a CUI workspace is about to change NotifyInfo::callParam is a pointer to a string (MCHAR*), containing the name of the workspace the CUI is changing to. Sent after a CUI workspace has changed NotifyInfo::callParam is a pointer to a string (MCHAR*), containing the name of the workspace the CUI has changed to. Sent before the collection of system workspaces is about to change.

◆ NOTIFY_POST_WORKSPACE_COLLECTION_CHANGE

#define NOTIFY_POST_WORKSPACE_COLLECTION_CHANGE   0x000000E8

Sent after the collection of system workspaces has changed.

◆ NOTIFY_KEYBOARD_SETTING_CHANGED

#define NOTIFY_KEYBOARD_SETTING_CHANGED   0x000000E9

Sent after keyboard short-cut setting file(*.kbd) has changed.

For example, loading/saving a new keyboard setting file.

◆ NOTIFY_MOUSE_SETTING_CHANGED

#define NOTIFY_MOUSE_SETTING_CHANGED   0x000000EA

Sent after mouse setting file has changed.

For example, loading/saving a new mouse setting file.

◆ NOTIFY_APP_ACTIVATED

#define NOTIFY_APP_ACTIVATED   0x000000ED

This provides a notification that a toolbar configuration is being saved, prior to save.

NotifyInfo::callParam is a pointer to a string (MCHAR*), which is NULL for the default save file, or the full path to the file being saved.

This provides a notification that a toolbar configuration is being saved, after the save. NotifyInfo::callParam is a pointer to a string (MCHAR*), which is NULL for the default save file, or the full path to the file being saved.

Called when the main application window is activated.

Note this message is called every time the main window is activated. Use with caution. If the intention is to do something on system startup, consider NOTIFY_SYSTEM_STARTUP instead. This message is likely called before NOTIFY_SYSTEM_STARTUP, but it is not guaranteed that the application is in a ready/idle state at that point.

◆ NOTIFY_APP_DEACTIVATED

#define NOTIFY_APP_DEACTIVATED   0x000000EE

Called when the main application window is deactivated.

Note this message is called every time the main window is deactivated. Use with caution. If the intention is to do something on system shutdown, consider NOTIFY_SYSTEM_SHUTDOWN instead.

◆ NOTIFY_CUI_MENUS_UPDATED

#define NOTIFY_CUI_MENUS_UPDATED   0x000000EF
Deprecated:
Deprecated in 3ds Max 2025. See documentation for ICuiMenuManager

◆ NOTIFY_CUI_MENUS_PRE_SAVE

#define NOTIFY_CUI_MENUS_PRE_SAVE   0x000000F0
Deprecated:
Deprecated in 3ds Max 2025. See documentation for ICuiMenuManager

◆ NOTIFY_CUI_MENUS_POST_SAVE

#define NOTIFY_CUI_MENUS_POST_SAVE   0x000000F1
Deprecated:
Deprecated in 3ds Max 2025. See documentation for ICuiMenuManager

◆ NOTIFY_PLUGINS_PRE_SHUTDOWN

#define NOTIFY_PLUGINS_PRE_SHUTDOWN   0x000000F3

Called after the safe frame has been toggled on/off for the viewport.

Note
This sets a dirty flag on the view and some values on the ViewExp class might take a message pump to make sense with this update.

Sent during shutdown immediately before DllDesc::CallShutdown is called on all plugin dlls

◆ NOTIFY_PLUGINS_PRE_UNLOAD

#define NOTIFY_PLUGINS_PRE_UNLOAD   0x000000F4

Sent during shutdown immediately before DllDesc::Unload is called on all plugin dlls.

◆ NOTIFY_POST_NODE_SELECT_OPERATION

#define NOTIFY_POST_NODE_SELECT_OPERATION   0x000000FC

Called after a menu file has been loaded and the menu bar updated.

NotifyInfo::callParam is a pointer to a string (MCHAR*), which is the full path to the file that was loaded.

Sent after the parent of a layer was changed.

NotifyInfo::callParam is a pointer on the struct LayerParentChange. layerChanged is the pointer on the layer that has changed parent. oldParent is the pointer on the old parent of the layer. The new parent can easily be obtained by calling layerChanged.GetParentLayer(). The new parent can be NULL, which mean that the layer is at the top level.

Sent when an action item starts executing

This notification is sent without regard of how the action item was invoked (hot-key, menu item, toolbar button, etc). NotifyInfo::callParam is a pointer to the ActionItem instance.

Sent when an action item finished executing

This notification is sent without regard of how the action item was invoked (hot-key, menu item, toolbar button, etc). NotifyInfo::callParam is a pointer to the ActionItem instance.

Sent when the user starts creating a plug-in instance.

Examples of when this notification is sent include interactive creation of objects via the Create and Modify panels or the main menu. This notification is not sent when plug-in instances are created programmatically (SDK, Maxscript, python etc). NotifyInfo::callParam is a pointer to the ClassDesc instance describing the plug-in whose instance is created.

Sent when the user ends creating a plug-in instance.

This notification is not sent when plug-in instances are created programmatically (SDK, Maxscript, python etc). NotifyInfo::callParam is a pointer to the ClassDesc instance describing the plug-in whose instance has been created. See NOTIFY_INTERACTIVE_PLUGIN_INSTANCE_CREATION_STARTED.

Sent after the system Node Selection Processor has finished selecting nodes

◆ NOTIFY_WELCOMESCREEN_DONE

#define NOTIFY_WELCOMESCREEN_DONE   0x000000FE

Sent before viewport tooltip pops. NotifyInfo::callParam is a INode* to the tip node.

Sent once initial welcome screen is done (either it did not show or it has been closed).

◆ NOTIFY_PLAYBACK_START

#define NOTIFY_PLAYBACK_START   0x000000FF

◆ NOTIFY_PLAYBACK_END

#define NOTIFY_PLAYBACK_END   0x00000100

◆ NOTIFY_SCENE_EXPLORER_NEEDS_UPDATE

#define NOTIFY_SCENE_EXPLORER_NEEDS_UPDATE   0x00000101

Sent if the scene explorer needs to refresh its display.

◆ NOTIFY_FILE_POST_OPEN_PROCESS_FINALIZED

#define NOTIFY_FILE_POST_OPEN_PROCESS_FINALIZED   0x00000102

Sent at the very end of the load sequence, note that any animatables created by the scene load may have been deleted by this point.

◆ NOTIFY_FILE_POST_MERGE_PROCESS_FINALIZED

#define NOTIFY_FILE_POST_MERGE_PROCESS_FINALIZED   0x00000103

Sent at the very end of the merge sequence, note that any animatables created by the scene merge may have been deleted by this point.

◆ NOTIFY_PRE_PROJECT_FOLDER_CHANGE

#define NOTIFY_PRE_PROJECT_FOLDER_CHANGE   0x00000104

Sent before project folder is changed.

◆ NOTIFY_POST_PROJECT_FOLDER_CHANGE

#define NOTIFY_POST_PROJECT_FOLDER_CHANGE   0x00000105

Sent after project folder is changed.

◆ NOTIFY_PRE_MXS_STARTUP_SCRIPT_LOAD

#define NOTIFY_PRE_MXS_STARTUP_SCRIPT_LOAD   0x00000106

Sent immediately before MAXScript loads its startup scripts. stdscripts will have already been read.

◆ NOTIFY_SYSTEM_SHUTDOWN_CHECK

#define NOTIFY_SYSTEM_SHUTDOWN_CHECK   0x00000108

Sent when potentially starting to shut 3ds Max down, before checking for things that can cancel the shutdown, such as scene dirty or ExitMAXCallback callback object returning false.

◆ NOTIFY_SYSTEM_SHUTDOWN_CHECK_FAILED

#define NOTIFY_SYSTEM_SHUTDOWN_CHECK_FAILED   0x00000109

Sent if system shutdown was cancelled.

◆ NOTIFY_SYSTEM_SHUTDOWN_CHECK_PASSED

#define NOTIFY_SYSTEM_SHUTDOWN_CHECK_PASSED   0x0000010A

Sent if system shutdown was not cancelled. and system shutdown is about to start.

◆ NOTIFY_COLOR_MANAGEMENT_PRE_CHANGE

#define NOTIFY_COLOR_MANAGEMENT_PRE_CHANGE   0x0000010F

Sent after a file is merged.

Sent when ActiveShade in the frame buffer is toggled on/off. NotifyInfo::callParam is a pointer to a BOOL which is TRUE if ActiveShade in the frame buffer is being switched on or FALSE if it's being switched off. Please note that toggling ActiveShade in the viewport generates a different notification, namely NOTIFY_ACTIVESHADE_IN_VIEWPORT_TOGGLED

Sent before ActiveShade in the viewport is toggled on/off. NotifyInfo::callParam is a pointer to a BOOL which is TRUE if ActiveShade is being switched on or FALSE if it's being switched off. Please note that toggling ActiveShade in the frame buffer generates a different notification, namely NOTIFY_ACTIVESHADE_IN_FRAMEBUFFER_TOGGLED

Sent after ActiveShade in the viewport is toggled on/off. NotifyInfo::callParam is a pointer to a BOOL which is TRUE if ActiveShade is being switched on or FALSE if it's being switched off. Please note that toggling ActiveShade in the frame buffer generates a different notification, namely NOTIFY_ACTIVESHADE_IN_FRAMEBUFFER_TOGGLED

Sent before the system color management settings changed, this includes mode changes, system-wide gamma setting or changes to color config.

◆ NOTIFY_CUI_MENUS_INVALID

#define NOTIFY_CUI_MENUS_INVALID   0x00000113

Sent after the system color management settings are changed, this includes mode changes, system-wide gamma setting or changes to color config.

At this point all the new settings will be available through the IColorPipelineMgr interface but changes may not have propagated through the system yet (for example bitmaps may still have the old color spaces assigned to them). If you want to get notifications after the first wave of updates, then please listen to the NOTIFY_COLOR_MANAGEMENT_POST_CHANGE2 message. NotifyInfo::callParam is a pointer to uint32_t which holds one or more MaxSDK::ColorMangement::NotificationChangeMask bits indicating what has changed.

Sent right after the NOTIFY_COLOR_MANAGEMENT_POST_CHANGE notification, signaling that all entities listening to the NOTIFY_COLOR_MANAGEMENT_POST_CHANGE notification has finished responding to it. If there were changes in the input color spaces, at this point all the bitmaps in the system will have new color spaces assigned to them. NotifyInfo::callParam is a pointer to uint32_t which holds one or more MaxSDK::ColorMangement::NotificationChangeMask bits indicating what has changed. NotifyInfo::callParam is a pointer to the ICuiQuadMenuManager loading the menu structure.

: Sent before menu structure is modified (for example before loading a mnxb file) The intent is to use this notification to clear any storage related to menu structure to avoid keeping dangling pointers NotifyInfo::callParam is nullptr

◆ NOTIFY_CUI_MENUS_VALID

#define NOTIFY_CUI_MENUS_VALID   0x00000114

: Sent after menu structure is modified (for example after loading a mnxb file) The intent is to use this notification to perform any additional ui updates after new menus are loaded NotifyInfo::callParam is nullptr

◆ NOTIFY_CUI_QUAD_MENUS_INVALID

#define NOTIFY_CUI_QUAD_MENUS_INVALID   0x00000115

: Sent before quad menu structure is modified (for example before loading a qmnxb file) The intent is to use this notification to clear any storage related to menu structure to avoid keeping dangling pointers NotifyInfo::callParam is nullptr

◆ NOTIFY_CUI_QUAD_MENUS_VALID

#define NOTIFY_CUI_QUAD_MENUS_VALID   0x00000116

: Sent after quad menu structure is modified (for example after loading a qmnxb file) The intent is to use this notification to perform any additional ui updates after new menus are loaded NotifyInfo::callParam is nullptr

◆ NOTIFY_INTERNAL_USE_START

#define NOTIFY_INTERNAL_USE_START   0x70000000

: Sent before menu structure is loaded NotifyInfo::callParam is a string (MCHAR*) containing the path of the file that will be loaded

: Sent befoe quadmenu structure is loaded NotifyInfo::callParam is a string (MCHAR*) containing the path of the file that will be loaded

: Sent after quadmenu structure is loaded NotifyInfo::callParam is a string (MCHAR*) containing the path of the file that has been loaded

Sent when the standard menu structure is loaded. NotifyInfo::callParam is a pointer to the ICuiMenuManager loading the menu structure.

◆ PRE_NEW_NEW_ALL

#define PRE_NEW_NEW_ALL   0x1

All objects are deleted, including their animation data.

Typedef Documentation

◆ notify_param_t

using notify_param_t = typename notify_param_helper<code>::type

Helper type alias to assign a param type to a notification code.

See GetNotifyParam. For example, notify_param_t<NOTIFY_FILE_PRE_OPEN> is the type of the callParam sent with the NOTIFY_FILE_PRE_OPEN notification.

Function Documentation

◆ GetNotifyParam()

notify_param_t< code > GetNotifyParam ( NotifyInfo info)
inline

!

Use this function to retrieve the callParam that is associated with one or more notification codes. It is recommended to do a null check on the value returned by this function. This will fail to compile if all notification codes don't have the same associated param type.

void MyCallback(void* param, NotifyInfo* info)
{
switch (info->intcode)
{
case NOTIFY_FILE_PRE_OPEN:
{
if (auto callParam1 = GetNotifyParam<NOTIFY_FILE_PRE_OPEN>(info))
{
... // callParam1 will resolve to FileIOType*
}
break;
}
case NOTIFY_FILE_POST_OPEN:
{
if (auto callParam2 = GetNotifyParam<NOTIFY_FILE_POST_OPEN>(info))
{
... // callParam2 will resolve to NotifyPostOpenParam*
}
break;
}
case NOTIFY_NODE_CREATED:
case NOTIFY_NODE_UNHIDE:
case NOTIFY_NODE_UNFREEZE:
{
if (auto callParam3 = GetNotifyParam<NOTIFY_NODE_CREATED, NOTIFY_NODE_UNHIDE, NOTIFY_NODE_UNFREEZE>(info))
{
... // callParam3 will resolve to INode*
}
break;
}
}
}
3ds Max supports a system where a plug-in can ask to receive a callback when certain events occur.
Definition: notifyParams.h:83
NotifyCode intcode
Definition: notifyParams.h:84
86{
87 using result_t = notify_param_t<code>;
88 if constexpr (sizeof...(more_codes) > 0)
89 {
90 static constexpr bool allSameParamType = (std::is_same_v<result_t, notify_param_t<more_codes>> && ...);
91 static_assert(allSameParamType, "All notification codes don't have the same associated param type");
92 }
93#ifdef MAX_ASSERTS_ACTIVE
94 if (info)
95 {
96 // Raise a DbgAssert if the notification code sent at run time is different to what was expected at compile time
97 static constexpr NotifyCode allCodes[] = { code, more_codes... };
98 const bool goodCode = std::any_of(std::begin(allCodes), std::end(allCodes),
99 [&](NotifyCode acode) { return acode == info->intcode; });
100 DbgAssert(goodCode && "Unexpected notification code in GetNotifyParam");
101 }
102#endif
103 void* paramPtr = info ? info->callParam : nullptr;
104 if constexpr (std::is_pointer_v<result_t>)
105 {
106 return static_cast<result_t>(paramPtr);
107 }
108 else
109 {
110 return static_cast<result_t>(reinterpret_cast<intptr_t>(paramPtr));
111 }
112}
#define DbgAssert(expr)
Definition: assert1.h:83
typename notify_param_helper< code >::type notify_param_t
Helper type alias to assign a param type to a notification code.
Definition: notify.h:44
void * callParam
Definition: notifyParams.h:85

◆ DEFINE_NOTIFY_CODE() [1/12]

DEFINE_NOTIFY_CODE ( NOTIFY_FILE_PRE_OPEN  ,
0x00000009  ,
FileIOType  
)

Sent before a new scene is requested.

NotifyInfo::callParam is New Scene Options

Sent after a new scene requested has been serviced. NotifyInfo::callParam is New Scene Options

Sent before a file is opened. NotifyInfo::callParam is a pointer to type FileIOType.

◆ DEFINE_NOTIFY_CODE() [2/12]

DEFINE_NOTIFY_CODE ( NOTIFY_FILE_POST_OPEN  ,
0x0000000A  ,
NotifyPostOpenParam  
)

Sent after a file is opened successfully.

◆ DEFINE_NOTIFY_CODE() [3/12]

DEFINE_NOTIFY_CODE ( NOTIFY_FILE_PRE_MERGE  ,
0x0000000B  ,
DWORD *   
)

Sent before a file is merged.

When merge is called to load an XRef, you can determine this by testing void * callParam. The result is not NULL if an XRef is being loaded.

◆ DEFINE_NOTIFY_CODE() [4/12]

DEFINE_NOTIFY_CODE ( NOTIFY_FILE_PRE_SAVE  ,
0x0000000D  ,
const MCHAR  
)

Sent before a file is saved (NotifyInfo::callParam is a pointer to a string (MCHAR *) of the file name).

◆ DEFINE_NOTIFY_CODE() [5/12]

DEFINE_NOTIFY_CODE ( NOTIFY_FILE_POST_SAVE  ,
0x0000000E  ,
const MCHAR  
)

Sent after a file is saved (NotifyInfo::callParam is a pointer to a string (MCHAR *) of the file name).

◆ DEFINE_NOTIFY_CODE() [6/12]

DEFINE_NOTIFY_CODE ( NOTIFY_FILE_OPEN_FAILED  ,
0x0000000F  ,
FileIOType  
)

Sent after a file open fails. NotifyInfo::callParam is a pointer to type FileIOType.

◆ DEFINE_NOTIFY_CODE() [7/12]

DEFINE_NOTIFY_CODE ( NOTIFY_FILE_PRE_SAVE_OLD  ,
0x00000010  ,
DWORD *   
)

Sent before an old version file is saved.

◆ DEFINE_NOTIFY_CODE() [8/12]

DEFINE_NOTIFY_CODE ( NOTIFY_BITMAP_CHANGED  ,
0x00000013  ,
const MCHAR  
)

Sent after a bitmap is reloaded.

The NotifyInfo::callParam is passed the MCHAR * to the bitmap file name. This is used for updating bitmaps that have changed. The callParam is used to pass the name of the bitmap file in case it is used in multiple changes. If the callParam is NULL, this notification applies to all bitmaps, as is the case when the input file gamma changes.

◆ DEFINE_NOTIFY_CODE() [9/12]

DEFINE_NOTIFY_CODE ( NOTIFY_PRE_RENDERFRAME  ,
0x00000016  ,
RenderGlobalContext  
)

Sent before rendering each frame.

NotifyInfo::callParam is passed as a pointer to the RenderGlobalContext. At the time of this call, the scene must not be modified. The renderer has already called GetRenderMesh() on all the object instances, and the materials and lights are already updated. If you don't modify anything that is rendered, then it is safe to use this callback.

◆ DEFINE_NOTIFY_CODE() [10/12]

DEFINE_NOTIFY_CODE ( NOTIFY_POST_RENDERFRAME  ,
0x00000017  ,
RenderGlobalContext  
)

Sent after rendering each.

NotifyInfo::callParam is passed a pointer to the RenderGlobalContext.

See also
NOTIFY_PRE_RENDERFRAME

◆ DEFINE_NOTIFY_CODE() [11/12]

DEFINE_NOTIFY_CODE ( NOTIFY_POST_IMPORT  ,
0x00000019  ,
const MCHAR  
)

Sent after a file is imported successfully.

NotifyInfo::callParam is a pointer to a string (MCHAR *) of the file name.

◆ DEFINE_NOTIFY_CODE() [12/12]

DEFINE_NOTIFY_CODE ( NOTIFY_POST_EXPORT  ,
0x0000001C  ,
const MCHAR  
)

Sent after a file is exported successfully.

NotifyInfo::callParam is a pointer to a string (MCHAR *) of the file name.