Witam. Mam pytanie co do dialogów w winApi. Stworzyłem dialog modalny i potrzebuję w nim wyświetlać progressbara.
Robie to za pomocą CreateWindowEx(), a uchwyt dostaję za pomocą GetDlgItem(hwnd, ID_DIALOG); , przy czym ID_DIALOG jest identyfikatorem dialogu z pliku zasobow. Funkcję CreateWindowEx() wywołuję w komunikacie WM_INITDIALOG:. Wszystko sie pieknie kompiuje i dialog się pojawia, jednak nie widac progressbara. Wszystkie inne kontrolki w dialogu są widoczne. Prosze o pomoc.

- Rejestracja:ponad 13 lat
- Ostatnio:około 5 lat
- Postów:839
- Rejestracja:ponad 14 lat
- Ostatnio:około 11 lat
- Postów:60
Z tego co rozumiem Dialog masz w zasobach, a ProgressBar tworzysz dynamicznie? Spróbuj umieścić ProgressBar w zasobach.

- Rejestracja:ponad 13 lat
- Ostatnio:około 5 lat
- Postów:839
Probowalem ale nigdzie nie znalazłem "tytulu" Progressbara. Jak wpisuję składnie kontrolki w zasoby "PROGRESSBAR" to wyskakuje błąd. Mam wszystkie potrzebne biblioteki windows.h i commctrl.h . Na internecie nie znalazłem komendy odpowiadającej Progressbarowi. Korzystałem z http://cpp0x.pl/kursy/Kurs-WinAPI-C++/Podstawy/Okna-dialogowe-cz-8/191 . Jednak tu nie ma wzmianki o progressbarze :P Szukalem i dupa
- Rejestracja:około 21 lat
- Ostatnio:ponad 9 lat
- Postów:513
Nie ma wzmianki, bo artykuł opiera się na starej wersji skryptu zasobów, z czasów windowsa 95.
W "nowej" wersji progressbar będzie wyglądał tak:
// made in resedit.exe
IDD_DLG1 DIALOGEX 10,10,150,100
CAPTION "IDD_DLG"
FONT 8,"MS Sans Serif",0,0,0
STYLE WS_VISIBLE|WS_OVERLAPPEDWINDOW
BEGIN
CONTROL "",IDC_PGB1,"msctls_progress32",WS_CHILDWINDOW|WS_VISIBLE,45,33,54,9
END
Zauważ DIALOGEX, ustandaryzowane "CONTROL" zamiast wielu różnych typów kontrolek, oraz nazwę klasy kontrolki.
CreateWindow ustawia LastError w przypadku błędu, sprawdź, czy GetLastError() czasem nie zwraca ERROR_CANNOT_FIND_WND_CLASS lub ERROR_CLASS_DOES_NOT_EXIST. Pewnie brakuje InitCommonControls() lub selektywnego InitCommonControlsEx?
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.