Как изменить порядок виджетов? Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
lester
Filthy Rich wx Solver
Filthy Rich wx Solver
Posts: 211
Joined: Sat Sep 02, 2006 7:24 pm
Location: Ukraine

Как изменить порядок виджетов?

Post by lester »

У меня есть несколько виджетов на wxPanel без сайзера, когда два( или больше ) виджета пересекаются ( налаживаются друг на друга ) мне надо поменять их порядок( выше - ниже ), Lower() и Raise() не помогают, может у кого-то есть пример решения? Заранее спасибо
tan
wxWorld Domination!
wxWorld Domination!
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Post by tan »

А какая платформа?
У меня есть подозрение, что это работает только под MSW.
OS: Windows XP Pro
Compiler: MSVC++ 7.1
wxWidgets: 2.8.10
lester
Filthy Rich wx Solver
Filthy Rich wx Solver
Posts: 211
Joined: Sat Sep 02, 2006 7:24 pm
Location: Ukraine

Post by lester »

tan wrote:А какая платформа?
У меня есть подозрение, что это работает только под MSW.
как раз под MSW и не работает :( для MacOS Lower() и Raise() работают как надо, а под windows почему-то нет
tan
wxWorld Domination!
wxWorld Domination!
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Post by tan »

lester wrote:
tan wrote:А какая платформа?
У меня есть подозрение, что это работает только под MSW.
как раз под MSW и не работает :( для MacOS Lower() и Raise() работают как надо, а под windows почему-то нет
Странно, в MSW порте просто вызывается API функция SetWindowPos(...), вроде должно работать. Попробуй вместо Lower()/Raise() явно юзать SetWindowPos(). Ну и там флагами поиграться. Может что-нить типа Refresh() требуется.
OS: Windows XP Pro
Compiler: MSVC++ 7.1
wxWidgets: 2.8.10
lester
Filthy Rich wx Solver
Filthy Rich wx Solver
Posts: 211
Joined: Sat Sep 02, 2006 7:24 pm
Location: Ukraine

Post by lester »

tan wrote: Странно, в MSW порте просто вызывается API функция SetWindowPos(...), вроде должно работать. Попробуй вместо Lower()/Raise() явно юзать SetWindowPos(). Ну и там флагами поиграться. Может что-нить типа Refresh() требуется.
оно визуально отрабатывает, но если сверху к примеру поводить другим окном - то опять отрисовка идет в старом порядке + обработка событий мыши не меняется
User avatar
T-Rex
Moderator
Moderator
Posts: 1248
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex »

Та же проблема была, пытался поверх wxHtmlWindow впихнутого в wxAUI отобразить комбик без сайзера. Пробовал Raise и вобще много чего пробовал, не помогло.
Решения вменяемого не нашел, вместо комбика заюзал wxMenu, щаз подумываю над хэндлером тегов, но это уже совсем другая история.
tan
wxWorld Domination!
wxWorld Domination!
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Post by tan »

Привет.
T-Rex wrote:Та же проблема была, пытался поверх wxHtmlWindow впихнутого в wxAUI отобразить комбик без сайзера. Пробовал Raise и вобще много чего пробовал, не помогло.
Ну это уже совсем странно. В таком варианте у меня работало (без АУИ, правда). А кто был парент у комбо бокса?
В первом случае, как я понимаю, все контролы имеют одного парента и плавают поверх него, тут вроде проблем нет. Проблема в Z-порядке их между собой. А в этом один комбо бокс с парентом wxHtmlWindow и так будет поверх него и никакого Raise не требуется. Или я чего-то не понимаю?
OS: Windows XP Pro
Compiler: MSVC++ 7.1
wxWidgets: 2.8.10
User avatar
T-Rex
Moderator
Moderator
Posts: 1248
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex »

Ну, я вначале думал что wxHtmlWindow не рендерит все сам, а хитро юзает sizer'ы, из-за чего у меня проблемы с Z-Order'ом возникают, но Spy++ показывает что он все рендерит ручками, поэтому было довольно странно наблюдать эти глюки. Пробовал родителем делать форму и сам wxHtmlWindow, эффект тот же. Ну мне особо так не надо было заморачиваться, думаю, слеплю-ка я хэндлер для комбиков и на этом все закончится.
lester
Filthy Rich wx Solver
Filthy Rich wx Solver
Posts: 211
Joined: Sat Sep 02, 2006 7:24 pm
Location: Ukraine

Post by lester »

вобщем на досуге попытаюсь руками сделать свой ZOrder через ручную отрисовку на wxClientDC и перенаправлении событий мыши родителю, а от него верхнему виджету по позиции
User avatar
T-Rex
Moderator
Moderator
Posts: 1248
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex »

Эээ,... клиент ДЦ это мм.. странно.
Я вобще смутно себе представляю ситуацию где его юзание оправдано. Хотя хз конечно. Там я помню с Клиент ДЦ проблема если поверх что-то само по себе ездит, например скринмэйт какой-нить, Neko например или там Virtual Girl. В общем если окна сами ездят по экрану, могут быть глюки с отрисовкой..
lester
Filthy Rich wx Solver
Filthy Rich wx Solver
Posts: 211
Joined: Sat Sep 02, 2006 7:24 pm
Location: Ukraine

Post by lester »

T-Rex wrote:Эээ,... клиент ДЦ это мм.. странно.
Я вобще смутно себе представляю ситуацию где его юзание оправдано. Хотя хз конечно. Там я помню с Клиент ДЦ проблема если поверх что-то само по себе ездит, например скринмэйт какой-нить, Neko например или там Virtual Girl. В общем если окна сами ездят по экрану, могут быть глюки с отрисовкой..
я выставляю флаг и по Idle отрисовываю виджет
Post Reply