WinApi - ProgressBar w oknie dialogowym

0

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.

0

Z tego co rozumiem Dialog masz w zasobach, a ProgressBar tworzysz dynamicznie? Spróbuj umieścić ProgressBar w zasobach.

0

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

1

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?

0

I sprawa zalatwiona. Wszystko dziala. Reszte juz umiem obsluzyc. Dziekuje Ci. :)

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