Как я могу контролировать размер окна справки, используя System.Windows.Forms.Help.ShowHelp ()? - PullRequest
0 голосов
/ 27 января 2011

У меня есть приложение WPF 4.0, написанное на C #, и в настоящее время я использую System.Windows.Forms.Help.ShowHelp () для отображения файла справки Windows для приложения.

Iхотелось бы иметь возможность контролировать начальный размер средства просмотра справки при его открытии.В настоящее время по умолчанию используется последний использованный размер.

Как мне этого добиться?

Ответы [ 2 ]

4 голосов
/ 27 января 2011

Это возможно. Добавьте класс в ваш проект и вставьте этот код:

using System;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;

static class Utils {
    public static void MoveHelpWindow(Rectangle rc) {
        EnumThreadWndProc callback = (hWnd, lp) => {
            // Check if this is the help window
            StringBuilder sb = new StringBuilder(260);
            GetClassName(hWnd, sb, sb.Capacity);
            if (sb.ToString() != "HH Parent") return true;
            MoveWindow(hWnd, rc.Left, rc.Top, rc.Width, rc.Height, false);
            return false;
        };
        foreach (ProcessThread pth in Process.GetCurrentProcess().Threads) {
            EnumThreadWindows(pth.Id, callback, IntPtr.Zero);
        }
    }
    // P/Invoke declarations
    private delegate bool EnumThreadWndProc(IntPtr hWnd, IntPtr lp);
    [DllImport("user32.dll")]
    private static extern bool EnumThreadWindows(int tid, EnumThreadWndProc callback, IntPtr lp);
    [DllImport("user32.dll")]
    private static extern int GetClassName(IntPtr hWnd, StringBuilder buffer, int buflen);
    [DllImport("user32.dll")]
    private static extern bool MoveWindow(IntPtr hWnd, int x, int y, int w, int h, bool repaint);
}

Вы используете это так, важен вызов BeginInvoke:

Help.ShowHelp(this, @"file://c:\windows\help\bcmwlhlp.chm");
this.BeginInvoke(new MethodInvoker(() => Utils.MoveHelpWindow(new Rectangle(0, 0, 300, 200))));
2 голосов
/ 27 января 2011

Вы не можете сделать это, но, как ChrisF упоминает в комментарии, вы можете удалить пользовательские настройки. Они хранятся в папке «Документы и настройки» \% username% \ Application Data \ Microsoft \ HTML Help

Проверить эту тему ' Как очистить исходное состояние HTML HELP? '

Если вы хотите изменить значения по умолчанию, используйте Мастерская HTMLHelp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...