WinAPI kontrolki w klasycznym stylu Win98

Odpowiedz Nowy wątek
2011-08-17 12:53
0

Witam, zacząłem się niedawno uczyć WinAPI i już mam poważny problem. Otóż, gdy korzystam z kontrolek, to wyświetlają się one w klasycznym stylu (win98), co nie jest zbyt zadowalające. Oczywiście szukałem rozwiązania i dość dużo osób ma ten problem, tylko, że nic mi nie pomogło. Korzystam z VS C++ 2010 Express i testuję programy zarówno na XP jak i na Win7. Kompilowane są pod Win7. Może przedstawię co już próbowałem (każdy sposób robiony w osobnym projekcie dla pewności):

  1. Wstawienie dyrektywy:
    #pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
  2. http://msdn.microsoft.com/en-us/library/aa289524%28VS.71%29.aspx#vbtchusingwindowsxpvisualstyleswithcontrolsonwindowsformsanchor3
  3. http://www.go4expert.com/forums/showthread.php?t=754
    W każdym przypadku na Win7 działa (są prawidłowe kontrolki), a na XP wyświetla puste okno bez kontrolek. Można by przypuszczać, że źle zrobiłem, ale jak na Win7 działa to coś to daje. Musi być jakiś sposób, żeby to działał prawidłowo na każdej wersji Win. W końcu jest tyle programów i jakoś sobie radzą. WinAPI uczę się z Megatutoriala i ze strony darkcult.nazwa.pl tylko, że tam wszystko jest robione na Win98, więc nie piszą o takim problemie.
    Proszę o jakieś rady ;)
edytowany 2x, ostatnio: mark075, 2011-08-17 12:54

Pozostało 580 znaków

2011-08-18 16:38
0

http://msdn.microsoft.com/en-us/library/ms235229.aspx

generalnie to co powoduje że aplikacja wygląda nowo to pliki "manifest" albo zewnętrzne albo dodane do zasobów programu


░█░█░█░█░█░█░█░█░█░█░█░
edytowany 1x, ostatnio: krwq, 2011-08-18 16:39

Pozostało 580 znaków

2011-08-18 18:03

Problem w tym, że plik manifest jest już domyślnie tworzony, ale to nic nie daje. Nawet po ustawieniu, żeby tworzył osobny plik jest bez zmian (wygląd z Win98). Nie wiem, co jeszcze można by pozmieniać w opcjach. Ale, gdy go sam napiszę tak jak w linkach, które podałem, są efekty. Tylko, że na Win7, a na XP znowu nie widać wcale kontrolek (pusty obszar klienta).

EDIT:
Udało mi się znaleźć rozwiązanie. Trochę dziwne, ale ważne, że działa. Mianowicie dodaję plik manifest tak jak poprzednio, ale dodatkowo trzeba wywołać, gdzieś funkcję GetOpenFileName(NULL), np. zaraz pod WinMain. Nie wnikam jakim cudem to pomogło, najważniejsze, że pomogło :)

edytowany 1x, ostatnio: mark075, 2011-08-20 21:00

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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