private void InitDialog(IntPtr hWnd)
    {
      m_hWnd = hWnd;

      var hParent = hWnd.GetParent().AssumeNonZero();
      hParent.SetWindowSubclass(m_openFileSubClassDelegate, 0, 0);

      //disable and hide the filter combo box
      var hFilterCombo = hParent.GetDlgItem(InteropUtil.ID_FilterCombo).AssumeNonZero();
      hFilterCombo.EnableWindow(false);
      hParent.SendMessage(InteropUtil.CDM_HIDECONTROL, InteropUtil.ID_FilterCombo, 0);
      hParent.SendMessage(InteropUtil.CDM_HIDECONTROL, InteropUtil.ID_FilterLabel, 0);

      //update the file name label
      var hFileNameLabel = hParent.GetDlgItem(InteropUtil.ID_FileNameLabel).AssumeNonZero();

      if (FileNameLabel != "")
      {
        hFileNameLabel.SendMessageString(InteropUtil.WM_SETTEXT, 0, FileNameLabel);
      }

      //find the button controls in the parent
      var hOkButton = hParent.GetDlgItem(InteropUtil.IDOK).AssumeNonZero();
      var hCancelButton = hParent.GetDlgItem(InteropUtil.IDCANCEL).AssumeNonZero();

      //We don't want the accelerator keys for the ok and cancel buttons to work, because
      //they are not shown on the dialog. However, we still want the buttons enabled
      //so that "esc" and "enter" have the behavior they used to. So, we just
      //clear out their text instead.
      hOkButton.SetWindowTextW("");
      hCancelButton.SetWindowTextW("");

      //find our button controls
      var hSelectButton = hWnd.GetDlgItem(InteropUtil.ID_SELECT).AssumeNonZero();
      var hCustomCancelButton = hWnd.GetDlgItem(InteropUtil.ID_CUSTOM_CANCEL).AssumeNonZero();

      //copy the font from the parent's buttons
      hSelectButton.LoadFontFrom(hOkButton);
      hCustomCancelButton.LoadFontFrom(hCancelButton);

      var cancelLoc = hCancelButton.GetWindowPlacement();

      //hide the ok and cancel buttons
      hParent.SendMessage(InteropUtil.CDM_HIDECONTROL, InteropUtil.IDOK, 0);
      hParent.SendMessage(InteropUtil.CDM_HIDECONTROL, InteropUtil.IDCANCEL, 0);

      //expand the file name combo to take up the space left by the OK and cancel buttons.
      var hFileName = hParent.GetDlgItem(InteropUtil.ID_FileNameCombo).AssumeNonZero();
      var fileNameLoc = hFileName.GetWindowPlacement();
      fileNameLoc.Right = hOkButton.GetWindowPlacement().Right;
      hFileName.SetWindowPlacement(ref fileNameLoc);

      var parentLoc = hParent.GetWindowPlacement();

      //subtract the height of the missing cancel button
      parentLoc.Bottom -= (cancelLoc.Bottom - cancelLoc.Top);
      hParent.SetWindowPlacement(ref parentLoc);

      //move the select and custom cancel buttons to the right hand side of the window:

      var selectLoc = hSelectButton.GetWindowPlacement();
      var customCancelLoc = hCustomCancelButton.GetWindowPlacement();
      m_cancelWidth = customCancelLoc.Right - customCancelLoc.Left;
      m_selectWidth = selectLoc.Right - selectLoc.Left;
      m_buttonGap = customCancelLoc.Left - selectLoc.Right;

      var ctrlLoc = hWnd.GetWindowPlacement();
      ctrlLoc.Right = fileNameLoc.Right;

      //ResizeCustomControl(hWnd, fileNameLoc.Right, hCustomCancelButton, hSelectButton);
      ResizeCustomControl(hWnd);
    }