Creating Dialogs
Inherit from XeStyledDialog (include SDK/Headers/inc/XeStyledDialog.h) to create a native Kudo styled dialog
If you want to track lifetime also inherit from XeTrackableWidget (include SDK/Headers/inc/XeThreadHelper.h)
Take XeUpdateLock before dialog is created.
If run modal dialog with exec(), make sure XeUpdateLock is released before. Otherwise it will create a deadlock.
Ensure to take XeUpdateLock whenever UI is modified. Update lock is required for all UI modification done from event thread. You can use XeThreadHelper::XeCurrentlyOn( XeThreadId id ) to find what thread you are in.
Take XeUpdateLock before deleting dialog or use DialogScopeLock that will delete dialog when DialogScopeLock object is released
For dialogs inheriting from XeTrackableWidget, you can also use XeTrackableWidgetPtr. XeTrackableWidget will be destroyed when XeTrackableWidgetPtr is released.
Make sure Db modification from dialogs are made in event thread. XeThreadHelper provides API to post execution to correct thread (XeThreadHelper::PostToThread)
If lifetime tracking of dialog is required, use POST_TO_THREAD_LIFETIME_TRACKED and related
Otherwise XE_BIND_NO_LIFETIME_TRACKING and related can be used
See BlockAttributeWidget for examples of modal and modeless dialog