Код статьи: 943453 - Последнее изменение :: 19 июня 2011 г. - Редакция: 4.0

«GDI + окна» может отображаться при запуске приложения на пустой рабочий стол или запуска экранной заставки

Совет по использованию системыЭта статья относится к операционной системе, отличной от установленной на вашем компьютере. Содержимое, не относящееся к используемой системе, отключено.
Развернуть все | Свернуть все
Источник: Поддержка Майкрософт

БЫСТРАЯ ПУБЛИКАЦИЯ

БЫСТРАЯ ПУБЛИКАЦИЯ ДАННЫХ СОДЕРЖАТСЯ СВЕДЕНИЯ НЕПОСРЕДСТВЕННО В СЛУЖБУ ТЕХНИЧЕСКОЙ ПОДДЕРЖКИ МАЙКРОСОФТ ОРГАНИЗАЦИИ. СВЕДЕНИЯ, СОДЕРЖАЩИЕСЯ В НАСТОЯЩЕМ ДОКУМЕНТЕ СОЗДАЕТСЯ В ОТВЕТ НА НОВЫХ ИЛИ УНИКАЛЬНЫЙ РАЗДЕЛЫ, ИЛИ ПРЕДНАЗНАЧЕНА ДОПОЛНЕНИЯ ДРУГИХ ЗНАНИЙ СВЕДЕНИЯ.

Действие

На рабочем столе с нет существующих окон (например, экранной заставки) запускается приложение Windows Forms.

Результат

«GDI + окна» отображается и является окно переднего плана. Ввод с клавиатуры не переместится на окна приложения.

Причина



Библиотеки форм Windows Forms инициализирует GDI + для выполнения при запуске его рисования. GDI () + порождает рабочий поток, на котором создается скрытое только для сообщений Windows () ("GDI () + Окно () "). Если это «GDI + окно» первое окно, созданное на рабочем столе «GDI + окна» устанавливается отображается поверх других окон. Поскольку «GDI +» создаваемого окна в отдельном потоке, нет гонки ли сначала создать или сначала создать главное окно приложения.

Разрешение



В качестве окна приложения окно переднего плана после его создания путем вызова функции Win32 SetForegroundWindow() и передачи в дескриптор окна. Это можно сделать.NET приложений через вызов P/Invoke.

Приложения, которые явно инициализировать интерфейс GDI + можно сделать после создания их главного окна.

Дополнительные сведения



Пример на C#:

с помощью системы;
с помощью System.Collections.Generic;
с помощью имен System.ComponentModel;
с помощью System.Data;
с помощью System.Drawing;
с помощью имен System.Text;
с помощью System.Windows.Forms;
с помощью класса System.Runtime.InteropServices;
пространство имен MyApplication
{
открытый разделяемого класса Form1: формы
{
открытый Form1()
{
InitializeComponent();
}

[DllImport("user32.dll")]
[вернуться: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow (IntPtr hWnd);

переопределить защищенный аннулировать OnLoad (EventArgs e)
{
SetForegroundWindow (это.Маркер);
Основание.OnLoad(e);
}
}
}

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ

КОРПОРАЦИЯ МАЙКРОСОФТ ИЛИ ЕЕ СООТВЕТСТВУЮЩИХ ПОСТАВЩИКОВ НЕ ДЕЛАЮТ НИКАКИХ УТВЕРЖДЕНИЙ О ПРИГОДНОСТИ, НАДЕЖНОСТЬ И ТОЧНОСТЬ ДАННЫХ И СВЯЗАННЫЕ РИСУНКИ, СОДЕРЖАЩИЕСЯ В НАСТОЯЩЕМ ДОКУМЕНТЕ. ТАКОЙ ИНФОРМАЦИИ И СВЯЗАННОЙ ГРАФИКИ ПРЕДОСТАВЛЯЮТСЯ «КАК ЕСТЬ» БЕЗ ГАРАНТИЙ ЛЮБОГО РОДА. КОРПОРАЦИЯ МАЙКРОСОФТ ИЛИ ЕЕ ПОСТАВЩИКИ СООТВЕТСТВУЮЩИХ НАСТОЯЩИМ DISCLAIM ВСЕ УСЛОВИЯ ПО ОТНОШЕНИЮ К ЭТОЙ ИНФОРМАЦИИ И СВЯЗАННЫЕ ГРАФИЧЕСКИЕ ОБЪЕКТЫ, ВКЛЮЧАЯ ВСЕ ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ И УСЛОВИЯ ГАРАНТИИ ТОВАРНОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ, ОТКАЗЫВАЕМСЯ, ЗАГОЛОВОК И НЕНАРУШЕНИЯ И ГАРАНТИИ. В ЧАСТНОСТИ СОГЛАСНЫ, НЕ ДОГОВОРА КОРПОРАЦИЯ МАЙКРОСОФТ ИЛИ ЕЕ ПОСТАВЩИКИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБОЙ ПРЯМОЙ, КОСВЕННЫЙ, PUNITIVE, СЛУЧАЙНЫЙ, СПЕЦИАЛЬНЫЙ, КОСВЕННЫЕ УБЫТКИ, ИЛИ КАКОЙ-ЛИБО УЩЕРБА КАКОЙ-ЛИБО ВКЛЮЧАЯ, БЕЗ ОГРАНИЧЕНИЙ, УЩЕРБА, ПОТЕРЬ, ИСПОЛЬЗОВАНИЕ, ДАННЫХ ИЛИ ПРИБЫЛИ, ВЫТЕКАЮЩИЕ ИЗ ИЛИ ЛЮБЫМ СПОСОБОМ ПОДКЛЮЧЕНИЯ С ИСПОЛЬЗОВАНИЕМ ИЛИ НЕВОЗМОЖНОСТЬ ИСПОЛЬЗОВАНИЯ ИНФОРМАЦИИ И СВЯЗАННЫЕ РИСУНКИ СОДЕРЖАТСЯ НАЗВАНИЯКАК НА ОСНОВЕ КОНТРАКТА, ГРАЖДАНСКИМ, НЕБРЕЖНОСТЬЮ, СТРОГАЯ ОТВЕТСТВЕННОСТЬ, ТАК И В ПРОТИВНОМ СЛУЧАЕ, ДАЖЕ ЕСЛИ КОРПОРАЦИЯ МАЙКРОСОФТ ИЛИ ЕЕ ПОСТАВЩИКОВ БЫЛИ ИЗВЕЩЕНЫ УЩЕРБА.
Примечание. Это ЭКСПРЕСС-ПУБЛИКАЦИЯ, подготовленная непосредственно службой технической поддержки Майкрософт . Сведения, содержащиеся в данном документе, предоставлены в качестве отклика на возникшие проблемы. Из-за срочности в материалах могут быть опечатки, и в любое время и без уведомления в них могут быть внесены изменения. Чтобы получить дополнительные сведения, см. Условия использования (http://go.microsoft.com/fwlink/?LinkId=151500) .

Информация в данной статье относится к следующим продуктам.
  • Microsoft .NET Framework 3.0
  • Microsoft .NET Framework 3.5
  • Microsoft .NET Framework 2.0
Ключевые слова: 
kbnomt kbrapidpub kbmt KB943453 KbMtru
Переведено с помощью машинного переводаПереведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:943453  (http://support.microsoft.com/kb/943453/en-us/ )