Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2014, 10:57   #1
METAH
Новичок
Джуниор
 
Регистрация: 07.04.2014
Сообщений: 2
По умолчанию Странное поведение Windows.Forms.Panel

Всем привет!
Пишу программу используя Lync SDK2013.Видеотраффик рендерится в стандартную Windows.Forms.Panel. Вернее в две панели - входящий и исходящий видео поток. Так вот, все хорошо до тех пор, пока не наведешь курсор мышки на одну из этих панелей. Даже нажимать ничего не надо, достаточно просто навести. После этого, загрузка по одну из ядер процессора взлетает до 100% и пользовательский интерфейс встает колом! Не помогает даже убирание курсора.Свернешь-развернешь окно приложения (уберешь фокус с Panel) и все становится хорошо.
Ниже привожу кусок кода, в котором видимо дело:
1)Вызов функции начала отрисовки:

this.BeginInvoke(new MethodInvoker(delegate()
{
ShowVideo(outgoingvideo_panel, videoChannel.CaptureVideoWindow);
}));
2)Функция отрисовки

private static void ShowVideo(Panel videoPanel, VideoWindow videoWindow)
{
//Win32 constants: WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS;
const long lEnableWindowStyles = 0x40000000L | 0x02000000L | 0x04000000L;
//Win32 constants: WS_POPUP| WS_CAPTION | WS_SIZEBOX
const long lDisableWindowStyles = 0x80000000 | 0x00C00000 | 0x00040000L;
const int OATRUE = -1;

try
{
//sets the properties required for the native video window to draw itself
// videoPanel.



videoWindow.Owner = videoPanel.Handle.ToInt32();

videoWindow.SetWindowPosition(0, 0, videoPanel.Width, videoPanel.Height);

//gets the current window style to modify it
long currentStyle = videoWindow.WindowStyle;

//disables borders, sizebox, close button
currentStyle = currentStyle & ~lDisableWindowStyles;

//enables styles for a child window
currentStyle = currentStyle | lEnableWindowStyles;

//updates the current window style
videoWindow.WindowStyle = (int)currentStyle;

//updates the visibility
videoWindow.Visible = OATRUE;
}
catch (Exception exception)
{
Console.WriteLine(exception);
}
}


Еще одно замечание - если включить только ОДНО окно из двух (ну например только входящий видеопоток рисовать) то все прекрасно работает! Но стоит включить второе, все, конец.

Почему такое происходит и как с этим бороться?
METAH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странное поведение BASM Sibedir Общие вопросы Delphi 8 31.01.2011 12:02
Странное поведение realloc eraserhp Помощь студентам 0 15.05.2010 18:06
Странное поведение gets alex_alpha Общие вопросы C/C++ 3 27.03.2010 18:21
Странное поведение TTreeView mutabor Компоненты Delphi 1 01.05.2009 05:17
Странное поведение ПОИСКПОЗ ZORRO2005 Microsoft Office Excel 5 19.05.2008 14:02