2010-08-27 3 views
0

У меня есть главное окно, созданное с:WS_CLIPCHILDREN не работает, когда в полноэкранном режиме

if (!fullscreen) 
{ 
    wStyle = WS_OVERLAPPED | WS_BORDER | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_CLIPCHILDREN; 
    wExStyle = WS_EX_TOPMOST; 
} 
else 
{ 
    wStyle = WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN; 
    wExStyle = WS_EX_TOPMOST; 
} 

Я также оконным ребенком, созданное время работы:

wStyle = WS_VISIBLE | WS_POPUP | WS_CHILD; 
wExStyle = WS_EX_TOPMOST; 

Все идет хорошо, когда я не на весь экран. (то есть дочернее окно хорошо отображается поверх родительского окна.)

Но, когда я нахожусь в полноэкранном режиме, родительское окно окрашивается над дочерним окном, которое вызывает ужасное мерцание.

Как установить свойства основного и дочернего окна, чтобы хорошо отображать дочернее окно даже в полноэкранном режиме?

Заранее благодарим за все ваши ответы.

+0

Есть ли способ прекратить рисовать окно? –

+0

У вас, кажется, несколько неправильных представлений о том, что означают разные стили окон. Это может быть очень запутанным. Я предлагаю прочитать http://msdn.microsoft.com/en-us/library/ms632599(v=VS.85).aspx#types –

ответ

2

WS_POPUP не может использоваться с WS_CHILD. Не положительно, это причина.

+0

Есть ли способ иметь окно без заголовка, без строки состояния, без границ ... и без использования WS_POPUP? –

+0

@ Xavier V .: В большинстве окон нет заголовков, баров статуса, границ и т. Д. Вы должны их попросить, если хотите. Это ортогонально, хотите ли вы дочернее окно или всплывающее окно. –

2

Эти комбинации флагов стиля недействительны. Детское окно не может быть всплывающим окном и не может быть самым большим. Не знаю, какие побочные эффекты могут иметь, никогда не пытались сделать это неправильно намеренно.

Застревание на этом может быть образовательным, но не очень практичным. Считаете ли вы, что используете библиотеку классов, чтобы позаботиться о чужих вещах?

+0

Спасибо за ваш ответ. В какой библиотеке вы думаете? –

+0

Их много: Qt, MFC, wxWidgets, WTL и т. Д. –

+0

Не уверен, почему я получил чек-марку, так что +1, чтобы это было;) –