# Shell Utilities

There are the utilities that are available everywhere. More...

## Classes
struct | I3DShUtilities
struct | I3DDBActionServer
struct | IMFClipboard
struct | IShDebugUtilities
| Utility functions used for debugging. More...
struct | IShMemoryUtilities
| Memory utilities. You should not need to use any of these functions. More...
struct | IShPartUtilities
| Utilities for creating parts. More...
struct | IShRasterLayerUtilities
struct | IShSafeUtilities
struct | TProcessorInfo
| stores which mmx optimisations are available More...
struct | IShSMPUtilities
| SMP Utilities - Utilities for dealing with SMP systems. More...
struct | IExThreadRemoteInstruction
struct | IExMainThreadInstruction
struct | IShThreadUtilities
struct | IShUtilities
| General utilities. More...
struct | IShNetworkUtilities
struct | IShFileFormatUtilities
| Utilities for handling file formats. Includes file open/save dialog boxes, file format families and lists. More...
struct | IShComponentUtilities
| Utilities for handling components. More...
struct | IShMenuUtilities
| Utilities for handling menus. More...
struct | IShFileUtilities
| File utilities provided by the shell for IMCFile handling. More...
struct | IShFileStream
| Simple stream interface to provide basic file access services. More...
struct | IShActionManager
| Interface for the Action Manager, which handles dispatching of actions. More...
struct | IShResourceUtilities
| Utilities for getting and handling resources. More...
struct | IShPersonalityUtilities
| Utility functions to access the application user defined information (UI, shortcuts...). More...
struct | IShDragAndDropUtilities
struct | IShMouseUtilities
struct | IShSoundUtilities
class | TProgressBarHelper
class | TSMPJobProgress
## Defines
#define | kShStreamIn 1
#define | kShStreamOut 2
#define | kShStreamBegin 0
#define | kShStreamCurrent 1
#define | kShStreamEnd 2
#define | kShDoAction 0
| Stage for IShMouseAction::GetPartToRedraw.
#define | kShUndoAction 1
| Stage for IShMouseAction::GetPartToRedraw.
#define | kShRedoAction 2
| Stage for IShMouseAction::GetPartToRedraw.
#define | kShBeginTracking 0
| Tracking stage for IShMouseAction::Track.
#define | kShContinueTracking 1
| Tracking stage for IShMouseAction::Track.
#define | kShFinishTracking 2
| Tracking stage for IShMouseAction::Track.
## Enumerations
enum | EAlerts { kShNotificationAlert, kShCautionAlert, kShStopAlert }
enum | EAlertButtons { kOneButton, kTwoButtons, kThreeButtons, kCustomButtons }

## Detailed Description

There are the utilities that are available everywhere.

Helper object to manage a progress bar. When the object is created, it starts a new progress bar. When destroyed, it does an EndProgress on the bar. Its member functions simply pass on their parameters to the shell utility functions of the same name.

The advantage to using a TProgressBarHelper instead of directly calling the shell utilities is that with the helper object, you can simply create it on the stack, and be assured that it will be destroyed and the progress bar finished when needed, without having to worry about try/catch statements around every place where a user abort might be encountered.

## Define Documentation

#define kShBeginTracking 0

Tracking stage for IShMouseAction::Track.

#define kShContinueTracking 1

Tracking stage for IShMouseAction::Track.

#define kShDoAction 0

Stage for IShMouseAction::GetPartToRedraw.

#define kShFinishTracking 2

Tracking stage for IShMouseAction::Track.

#define kShRedoAction 2

Stage for IShMouseAction::GetPartToRedraw.

#define kShStreamBegin 0

#define kShStreamCurrent 1

#define kShStreamEnd 2

#define kShStreamIn 1

#define kShStreamOut 2

#define kShUndoAction 1

Stage for IShMouseAction::GetPartToRedraw.

## Enumeration Type Documentation

enum EAlertButtons

Enumerator:

  kOneButton |
  kTwoButtons |
  kThreeButtons |
  kCustomButtons |

enum EAlerts

Enumerator:

  kShNotificationAlert |
  kShCautionAlert |
  kShStopAlert |