【问题标题】:My UI hangs when I select some area in the console当我在控制台中选择某个区域时,我的 UI 挂起
【发布时间】:2013-04-01 19:26:49
【问题描述】:

我将消息记录到控制台。但我有一些有趣的效果。当我在控制台中选择一些消息时,我的 UI 挂起。当我在控制台中取消全选时,UI 会活着。 我不喜欢这样的行为。

有什么解决办法吗?

Console::WriteLine("Message");  

【问题讨论】:

    标签: .net console c++-cli


    【解决方案1】:

    您可以通过编程方式在控制台中禁用快速编辑模式:

    class Program {
        static void Main(string[] args) {
            uint mode;
            IntPtr stdIn = GetStdHandle(STD_INPUT_HANDLE);
            if (GetConsoleMode(stdIn, out mode)) {
                if ((mode & (uint) ConsoleModes.ENABLE_QUICK_EDIT_MODE) != 0) {
                    mode = mode ^ (uint) ConsoleModes.ENABLE_QUICK_EDIT_MODE;
                    SetConsoleMode(stdIn, mode);
                }
            }
            int i = 0;
            while (true) {
                Thread.Sleep(300);
                Console.WriteLine(i++);
            }
        }
        const int STD_INPUT_HANDLE = -10;
        [DllImport("kernel32.dll", SetLastError = true)]
        static extern IntPtr GetStdHandle(int nStdHandle);
        [DllImport("kernel32.dll")]
        static extern bool GetConsoleMode(IntPtr hConsoleHandle, out uint lpMode);
        [DllImport("kernel32.dll")]
        static extern bool SetConsoleMode(IntPtr hConsoleHandle, uint dwMode);
        [Flags()]
        enum ConsoleModes : uint {
            ENABLE_PROCESSED_INPUT = 0x1,
            ENABLE_LINE_INPUT = 0x2,
            ENABLE_ECHO_INPUT = 0x4,
            ENABLE_WINDOW_INPUT = 0x8,
            ENABLE_MOUSE_INPUT = 0x10,
            ENABLE_INSERT_MODE = 0x20,
            ENABLE_QUICK_EDIT_MODE = 0x40,
            ENABLE_EXTENDED_FLAGS = 0x80,
            ENABLE_AUTO_POSITION = 0x100,
        }
    }
    

    【讨论】:

      【解决方案2】:

      您正在控制台中选择文本。您可以想象,如果控制台继续输出信息,则很难选择您要选择的内容,因此系统会暂停可见更新。如果您希望您的应用程序继续显示可见的更新,请停止选择屏幕上的文本。

      【讨论】:

        【解决方案3】:

        这并非特定于您的应用程序,它的“功能”适用于所有控制台应用程序。选择文本时 - 整个应用程序挂起。此行为无法更改。

        【讨论】:

          猜你喜欢
          • 2016-02-22
          • 1970-01-01
          • 2023-03-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-12-17
          相关资源
          最近更新 更多