/
Creating Dialogs

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



Related content