public Form1()
        {
            InitializeComponent();

            PDFXEdit.PXV_Inst Inst = pdfCtl.Inst;

            nMY_PANE_ID          = Inst.Str2ID(MY_PANE_ID, true);
            nMY_DOC_PANE_ID      = Inst.Str2ID(MY_DOC_PANE_ID, true);
            e_documentView_ready = Inst.Str2ID("e.documentView.ready", true);

            pdfCtl.EnableEventListening2(e_documentView_ready, true);             // to call pdfCtl_OnEvent

            // Register a callback to create custom panes during load of panes layout (from the settings)
            myPanesCreator = new CustomPanesCreator(Inst, this);
            Inst.RegisterViewCreator(myPanesCreator);

            settingsLocation = Inst.CreateString("HKCU\\Software\\{PDFXEdit.CustomPane.tmp}");
            try
            {
                Inst.LoadUserSettings(settingsLocation);                 // try to load all previously saved settings (including the custom layout of panes)
            }
            catch { };

            /////////////////////////////////////////////////////////////////////////////////////////
            // Check if our custom pane is already present in the mainView's layout, if not - add it
            /////////////////////////////////////////////////////////////////////////////////////////

            /**/
            // Method 1: use the Inst.ActiveMainView.Layout object
            PDFXEdit.IUIX_Layout layout = Inst.ActiveMainView.Panes.Layout;
            if (!HasPane(layout, nMY_PANE_ID))             // check if pane is present already in the layout
            {
                PDFXEdit.IPXV_View paneContainer;
                PDFXEdit.tagRECT   rc;
                rc.left = rc.top = rc.right = rc.bottom = 0;
                myPanesCreator.CreateNewView(Inst.ActiveMainView, layout.Obj, nMY_PANE_ID, "", ref rc, out paneContainer);
                if (paneContainer != null)
                {
                    PDFXEdit.tagSIZE sz;
                    sz.cx = sz.cy = defPaneSize;
                    layout.Insert(paneContainer.Obj,
                                  "My Custom Pane",
                                  layout.Root, ref sz,
                                  (int)UIX_LayoutItemStyleFlags.UIX_LayoutItemStyle_FixedSize);                                       // make pane fixed size (not proportional)
                }
            }

            /*/
             * // Method 2: check and manipulate the panes layout settings
             * bool paneAdded = false;
             * do
             * {
             *      // First we check whether the pane is already inside of the settings CAB
             *      PDFXEdit.ICabNode layout = Inst.Settings["MainView.Layout"]; // This is the layout CAB - here all of the Panes' settings are stored
             *                                                                                                                               // Then we have docked panes and floating panes
             *                                                                                                                               // Docked panes are stored in Root and floating panes are stored in FloatingRoots
             *                                                                                                                               // We'll need to run recursively through the children to see whether our custom pane is inside
             *
             *      // Lookup in docked panes
             *      if (HasPane(layout["Root"], MY_PANE_ID))
             *              break;
             *      // Lookup in floating panes
             *      if (HasPane(layout["FloatingRoots"], MY_PANE_ID))
             *              break;
             *      // If we don't yet have the pane added then in this sample we will have to add it as a docked pane
             *      ICabNode root = layout["Root"];
             *      // First level children of the Root node are place holders for panes
             *      // The root itself has a UIX_LayoutItemStyle_Splitted | UIX_LayoutItemStyle_VertSplitters | UIX_LayoutItemStyle_NoTabBar style
             *      // In this sample we will add panes to the rightmost splitter (where the search view and properties pane are)
             *      ICabNode placeHolders = root["Kids"];
             *      // Taking the last child for the rightmost placeholder and if it does not exist for some reason, we will add it
             *      // Alternatively the placeholders can be added to divide the Main View even more
             *      // For example, if you want your Custom view to be added before the Properties View and Search View then insert the placeholder before the placeholder that holds these views
             *      ICabNode placeHolder = null;
             *      if (placeHolders.Count == 0)
             *              placeHolder = placeHolders.Add();
             *      else
             *              placeHolder = placeHolders[placeHolders.Count - 1];
             *      // Now we have our new placeholder and we will have to add our Custom View to it
             *      ICabNode kid = placeHolder["Kids"].Add();
             *      // Now we will have to fill the newly added CAB node with needed data
             *      kid["ID"].v = MY_PANE_ID;
             *      kid["S"].v = (int)UIX_LayoutItemStyleFlags.UIX_LayoutItemStyle_FixedSize; // make pane fixed size (not proportional)
             *      kid["FW"].v = defPaneSize;  // fixed-width (UIX_LayoutItemStyle_FixedSize is required)
             *      kid["FH"].v = defPaneSize;  // fixed-height (UIX_LayoutItemStyle_FixedSize is required)
             *      kid["Title"].v = "My Custom Main Pane"; // Title for display
             *      paneAdded = true;
             * } while (false);
             *
             * if (paneAdded)
             *      Inst.ActiveMainView.LoadPanesLayout(); // reload the mofified layout of panes
             * /*/
            /**/
        }