Я создаю приложение-виджет с графическим интерфейсом пользователя в WPF, которое будет отображаться поверх игры. Я пытаюсь добавить ComboBox, который будет отображаться перед фоном виджета. Перемещение ComboBox под изображением в XAML просто исправляет это, но всплывающее окно из ComboBox отображается позади изображения, что бы я ни делал. Я пытался установить z-индекс ComboBox, z-индекс элементов ComboBox, я пытался переместить ComboBox в другую сетку, но ничего не помогло. После нескольких попыток я понял, что является причиной этого. Это был код, который я использую в самом верху/внизу моего виджета:
Код: Выделить всё
IntPtr windowHandle = new System.Windows.Interop.WindowInteropHelper(overlayWindow).Handle;
if (foregroundWindowHandle == targetGameProcessHandle) {
SetWindowPos(windowHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE);
} else {
SetWindowPos(windowHandle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE);
}
Код: Выделить всё
overlayWindow.Topmost = true;
if (foregroundWindowHandle == targetGameProcessHandle) {
overlayWindow.Visibility = Visibility.Visible;
} else {
overlayWindow.Visibility = Visibility.Hidden;
}
Как я уже сказал, это решило мою проблему, поэтому я не ищу лучший код, который ее исправит (хотя это и помогло бы быть оценен по достоинству). Я просто хочу знать, почему или что вызывает сбой при использовании SetWindowPos.
Спасибо за ваше время и усилия, чтобы помочь.
Подробнее здесь: https://stackoverflow.com/questions/788 ... red-behind