UI
8 отговора
255 прегледа
UI
Имам проблем с потребителския интерфейс. Искам да направя програма където главния прозорец да бъде разцепен поне на четири части. Очевидно едно решение е да се използват деца , но се оказва че в този случай менюта са невъзможни.Добре би било да има менюта и в дъщерните прозорци а в Maya видях че има.От тук възниква въпроса как в Maya разцепват прозореца.
Освен това в VC++ ако тръгнеш да дърпаш например Workspace прозореца то се дърпа само контура и едва като се отпусне мишката се изрисува целия прозорец. Въросът ми е как тези ефекти са постигнати в посочените програми.
И на края отговор съдържащ MFC неще ми бъде полезен
Ще съм особено благодарен на отговор който включва и насочващ код.
Освен това в VC++ ако тръгнеш да дърпаш например Workspace прозореца то се дърпа само контура и едва като се отпусне мишката се изрисува целия прозорец. Въросът ми е как тези ефекти са постигнати в посочените програми.
И на края отговор съдържащ MFC неще ми бъде полезен
Ще съм особено благодарен на отговор който включва и насочващ код.
Re: UI
Разбрах че не искаш MFC пример.
Мисля че трябва да направиш следното:
Направи се менютата в ресурса, зареждаш ги по време на изпълнение с LoadMenu(), и ги прикачаш към всеки прозорец с SetMenu().
За изрисуването на прозорците при местене на мишката:
В процедурата, която управлява WM_MOUSEMOVE, пресмяташ новите позиции на прозорците и викаш MoveWindow (..., TRUE) за да се прерисува веднага.
Може да ползуваш и тройката BeginDeferWindowPos()/DeferWindowPos ()/EndDeferWindowPos() макар че аз там имах повече проблеми.
Мисля че трябва да направиш следното:
Направи се менютата в ресурса, зареждаш ги по време на изпълнение с LoadMenu(), и ги прикачаш към всеки прозорец с SetMenu().
За изрисуването на прозорците при местене на мишката:
В процедурата, която управлява WM_MOUSEMOVE, пресмяташ новите позиции на прозорците и викаш MoveWindow (..., TRUE) за да се прерисува веднага.
Може да ползуваш и тройката BeginDeferWindowPos()/DeferWindowPos ()/EndDeferWindowPos() макар че аз там имах повече проблеми.
Re: UI
Опитах да закача меню но тези прозорци са и си остават деца. А меню в прозорец дете е невъзможно. Със SPY++ разбрах че и Maya използва MFC така че ще трябва да го науча.
Re: UI
А ако направиш тея прозорци да не са деца, а обикновени pop-up с подходящи рамки, и на главния прозорец на WM_SIZE, WM_MOVE и т.н ги местиш/управляваш заедно с главния? Всъщност децата се управляват точно така, само че автоматично. Аз правих подобно нещо в диалогов прозорец, само че не ми трябваха менюта.
Щото и в MFC децата нямат менюта (май).
Щото и в MFC децата нямат менюта (май).
Re: UI
Неможах да докарам рамката. Идеята ми беше първо да покажа само лентата с заглавието и менюто на главния прозорец(нещо като JBuilder на Borland).И после точно под така образувалата се лента да добава 4 прозореца,така 4е да наподобя желаното.Да ама не. Как едновременно да имам меню и да нямам лента с името на прозореца? Явно мислим по сходни на4ини но сам няма да се справя. Така 4е дай малко код.
деца и менюта
прозорец с атрибут WM_CHILD НЯМА НАЧИН да има меню, защото в същия LONG в който се пази handle за менюто на другите прозорци, ори childs се пази ID-то (същото използувано в GetDlgItem).
има 2 варианта,
а) не child прозорци, които да се управляват ръчно
б) child прозорци в които да се прави рисува менюто
вариант (а) съм го правил, така че става със сигурност, но е кошмарно.
вариант (б) би трябвало да се реализира по-лесно, особено ако се използва (потърси) готова контрола (например toolbar с изключени картинки и включени надписи).
Пламен
има 2 варианта,
а) не child прозорци, които да се управляват ръчно
б) child прозорци в които да се прави рисува менюто
вариант (а) съм го правил, така че става със сигурност, но е кошмарно.
вариант (б) би трябвало да се реализира по-лесно, особено ако се използва (потърси) готова контрола (например toolbar с изключени картинки и включени надписи).
Пламен
Re: UI
Всичко е в параметъра за стил, който указваш на CreateWindow().
Трябва да се избягва WS_CAPTION, WS_OVERLAPPED,WS_TILED
Според мен WS_POPUP | WS_CLIPCHILDREN | WS_BORDER ще направи прозорец без title bar и с тънка рамка. Ако махнеш WS_BORDER рамката ще изчезне. WS_DLGFRAME прави рамка като на диалог. Имаше и още някои параметри, влияещи на рамката - виж в MSDN.
Стига да съм те разбрал правилно... :))
Трябва да се избягва WS_CAPTION, WS_OVERLAPPED,WS_TILED
Според мен WS_POPUP | WS_CLIPCHILDREN | WS_BORDER ще направи прозорец без title bar и с тънка рамка. Ако махнеш WS_BORDER рамката ще изчезне. WS_DLGFRAME прави рамка като на диалог. Имаше и още някои параметри, влияещи на рамката - виж в MSDN.
Стига да съм те разбрал правилно... :))
Re: деца и менюта
i az taka predpolagam, prosto ne sam go probval,
kogato gi pravih tia neshta niamah izbor
Пламен
kogato gi pravih tia neshta niamah izbor
Пламен