|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.04.2014, 10:57 | #1 |
Новичок
Джуниор
Регистрация: 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); } } Еще одно замечание - если включить только ОДНО окно из двух (ну например только входящий видеопоток рисовать) то все прекрасно работает! Но стоит включить второе, все, конец. Почему такое происходит и как с этим бороться? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Странное поведение 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 |