---
name: "findDisplay"
type: command
status: ok
groups: ["GUI Control"]
arma3_since: "0.50"
locality: {"argument": null, "effect": null, "server_exec": false}
source: https://community.bistudio.com/wiki/findDisplay
revid: 369048
updated: 2024-09-02T20:24:49Z
---

# findDisplay

*Command · GUI Control · Arma 3 v0.50 · introduced in Armed Assault v1.00*

## Description

Finds a display by its IDD which can either be defined in [missionConfigFile](../commands/missionConfigFile.md) ([description.ext](../topics/Description.ext.md)) or [configFile](../commands/configFile.md) (config.cpp) or by its UI On Texture's unique name (see [displayUniqueName](../commands/displayUniqueName.md)).

If the specified display cannot be found, [displayNull](../commands/displayNull.md) is returned.

> [!IMPORTANT]
> Dedicated servers and headless clients do not have a primary display (e.g `findDisplay 46` will return [displayNull](../commands/displayNull.md)).
>
> Detect both with the [hasInterface](../commands/hasInterface.md) command.

> [!NOTE]
> For a list of (almost) all Arma 3's IDDs, see Arma 3: IDD List.

## Syntax

### Syntax 1

```sqf
findDisplay idd
```

**Parameters:**

- `idd`: [Number](../topics/Number.md)

**Returns:** [Display](../topics/Display.md)

### Syntax 2

*since arma3 2.12*

```sqf
findDisplay displayName
```

**Parameters:**

- `displayName`: [String](../topics/String.md)

**Returns:** [Display](../topics/Display.md)

## Examples

### Example 1

```sqf
0 spawn
{
    waitUntil { !isNull findDisplay 46 };
    hint "Mission Display is now available!";
};
```

### Example 2

```sqf
_display = findDisplay 1;
```

### Example 3

```sqf
private _display = findDisplay "RscDisplayRenderTest";
```

## See also

[allDisplays](../commands/allDisplays.md) · [displayCtrl](../commands/displayCtrl.md) · [createDisplay](../commands/createDisplay.md) · [createDialog](../commands/createDialog.md) · [dialog](../commands/dialog.md) · [displayNull](../commands/displayNull.md) · [controlNull](../commands/controlNull.md) · [isNull](../commands/isNull.md) · [ctrlCreate](../commands/ctrlCreate.md) · [displayParent](../commands/displayParent.md) · [displayUniqueName](../commands/displayUniqueName.md)

## Community notes

**Lou Montana** — 2019-07-07

Common IDDs:
- 46: Mission display
- 312: Zeus display
- 49: Pause menu
- 602: Inventory
- 24: Chat box
- 300: Weapon state
- 12: Map
- 160: UAV Terminal

---

**Kronzky** — 2009-06-15

[findDisplay](../commands/findDisplay.md) does *not* find displays defined under RscTitles (even when they are visible).

To access those types of displays, either assign the resource to a global variable, or pass its [this](../topics/Magic_Variables.md#this_2) value to a script, during the onLoad event:
e.g. 

```cpp
class RscTitles
{
    class MyRsc
    {
        onLoad = "myDisplay = (_this select 0)";
        // or
        // onLoad = "_this execVM 'myDialog.sqf'";
        // ...
    };
};
```

You can then use the stored value as you would for regular dialogs:

```sqf
(myDisplay displayCtrl 1111) ctrlSetText "hello there");
```

---

**Nelis75733126** — 2017-06-25

I have tested the behavior of this command and I found out that `findDisplay` appears to only return the display AFTER any [onLoad](../topics/User_Interface_Event_Handlers.md#onload) event handler of that display is done.

Meaning: using [findDisplay](../commands/findDisplay.md) inside the code of an onLoad event handler is useless.

---

**Demellion** — 2017-08-14

There are some specific cases, where [findDisplay](../commands/findDisplay.md) will not be able to find an existing display. Here's the cases and how to act on them:

```cpp
// Your display has IDD= -1.
class RscDisplayNew
{
    idd = -1;
    scriptName = "RscDisplayNew";
    // ...
};
```

```cpp
// Your display doesn't have IDD
class RscDisplayNew
{
    scriptName = "RscDisplayNew";
    // ...
};
```

```cpp
// Your display doesn't have scriptname with IDD = -1
class RscDisplayNew
{
    idd = -1;
    // ...
};
```

```cpp
// Your display doesn't have scriptname, neither IDD
class RscDisplayNew
{
    // ...
};
```

1. You actually can find a -1 display, but this means finding a display with this IDD might be a problem, when there are a few displays marked as -1.So as you can see, theres an entry called **scriptName**. You can get a reference to this display by using [uiNamespace](../commands/uiNamespace.md):

```sqf
(uiNamespace getVariable "RscDisplayNew")
```

**NOTE**: Variables are overwritten with a reference of the last declared display under the same scriptName entry. Take a look at case 3 for solution.
1. Displays without IDDs can actually exist. They can be manipulated only in a way described in the first case using [uiNamespace](../commands/uiNamespace.md).
1. You can really have this display seeking it manually in a [allDisplays](../commands/allDisplays.md) return. This is experimental, but working option.
1. You will have a problem finding this display, since this display doesn't exist even in [allDisplays](../commands/allDisplays.md)(?) return. Behaviour unknown.

---

**AVespade** — 2023-05-07

Since findDisplay is case-sensitive, and any UI On Texture unique names defined inside a p3d file will always be forced to lowercase, the unique name you search for with findDisplay will need to be lowercase.

```sqf
private _display = findDisplay "rscdisplayrendertest";
```

Use of [toLower](../commands/toLower.md) may be useful to improve legibility or flow, especially in cases where a UI On Texture's unique name is the same as the class name.

```sqf
private _display = findDisplay (toLower "RscDisplayRenderTest");
```

<sub>Source: [BI Community Wiki — findDisplay](https://community.bistudio.com/wiki/findDisplay) (revision 369048).</sub>
