Zmiana stylów okna w WinApi

0

Cześć, mam takie pytanie:
Na stronie MSDN (http://msdn.microsoft.com/en-us/library/windows/desktop/ms632600%28v=vs.85%29.aspx) odnośnie stylów okna jest informacja, że:

The following are the window styles. After the window has been created, these styles cannot be modified, except as noted.

Mam więc pytanie co oznacza druga część tego zdania (że nie można modyfikować tych stylów z wyjątkiem gdy nie jest to odnotowane(?))?
Które style można modyfikować a których nie?
Czy mogę zmienić np. styl z WS_CHILD na WS_POPUP?

Z góry dzięki za rozjaśnienie sprawy

0

WTF? Po pierwsze można choćby funkcją SetWindowLong(Ptr) po drugie po jaka cholerę zmieniać z potomnego na popup?

0
kAzek napisał(a):

WTF? Po pierwsze można choćby funkcją SetWindowLong(Ptr) po drugie po jaka cholerę zmieniać z potomnego na popup?

Ja się nie pytam jak zmienić style, bo to dobrze wiem! Pytam się co oznacza ten komunikat na stronie, który sugeruje, że nie powinno się tego robić (mimo, że wolno).
Co do pytania po co zmieniać okno z potomnego na popup to odpowiedź jest prosta - bo mogę mieć na to ochotę. Zobacz jak masz zrobionego chociażby firefox-a czasami zakładki są wewnątrz okna a czasami możesz chcieć zrobić z zakładki niezależną stronę (bez jej zamykania). I podobnym przykładów jest pełno.

lisu1411 napisał(a):

http://cpp0x.pl/kursy/Kurs-WinAPI-C++/Podstawy/Podstawy-WinAPI/168
Mi bardzo pomógł ;)

Podstawy WinApi mam w miarę dobrze opanowane. Pytanie, które zadałem wynika z niejasnego opisu na MSDN.

1

Pytam się co oznacza ten komunikat na stronie, który sugeruje, że nie powinno się tego robić (mimo, że wolno).

Skoro M$ pisze że nie wolno, to nie wolno ;-)
Nie masz gwarancji że będzie działać. Dzisiaj może działać, a jutro może już nie działać. Może przestać działać np. w nowej wersji Windowsa albo nawet po zainstalowaniu jakiegoś hotfixa.

Ludzie piszą programy na zasadzie „bo przecież działa”, potem wychodzi Windows 8/9/10 i program nie działa. I na kogo winę wszyscy zwalają? Oczywiście że na Microsoft – mimo że MS pisał by tak nie robić.

After the window has been created, these styles cannot be modified, except as noted.
Po utworzeniu okna nie można zmieniać tych stylów, chyba że zaznaczono inaczej.

„Zaznaczono inaczej” np. w przypadku stylu WS_GROUP:

You can turn this style on and off to change dialog box navigation. To change this style after a window has been created, use the SetWindowLong function.
Można ten styl włączać i wyłączać by zmieniać nawigację w obrębie okna dialogowego. By zmienić ten styl po utworzeniu okna, użyj funkcji SetWindowLong.

W przypadku kolejnego stylu, WS_HSCROLL jest tylko lakoniczna informacja The window has a horizontal scroll bar. To znaczy że nie powinno się używać SetWindowLong do ustawiania tego stylu, nawet jeśli działa.

0

To niech Microsoft trzyma się jednej wersji, bo póki co w ich dokumentacji funkcji SetWindowLong jet napisane że wywołując ją z parametrem GWL_STYLE można zmieniać style.

0
Azarien napisał(a):

Ludzie piszą programy na zasadzie „bo przecież działa”, potem wychodzi Windows 8/9/10 i program nie działa. I na kogo winę wszyscy zwalają? Oczywiście że na Microsoft – mimo że MS pisał by tak nie robić.

Czyżbyś bronił tych lakonicznych wypowiedzi M$? ;]

Czyli jedyny bezpieczny sposób, który przychodzi mi do głowy by zmienić style to zamknięcie okna i jeszcze raz jego utworzyć :-). W zasadzie dużo więcej pracy nie ma ;-)

0

A tak w ramach ciekawostki: w przypadku stylów rozszerzonych i stylów klasy to tam nie ma żadnej informacji, że nie można ich modyfikować ;-). Jest tylko info, że:

The following are the window class styles / extended window styles.

1 użytkowników online, w tym zalogowanych: 0, gości: 1