(animacja) w visual C++ ... Da się to zrobić?

A więc tak, mam taki problem:

Po kliknięciu na przycisk w visual C++ chciałbym, aby w okienku który ten przycisk wywołuje pojawiła się animacja (WYSYŁANIE)

przycisk mam zaprogramowany tak:

void CAnkietaDlg::OnBnClickedzakonczenie()

	{

		MessageBox("Teraz, jak już mam wszystkie informacje Wysyłam dane do CBA :D HAHAHAHAHA","Zakończenie",MB_OK|MB_ICONINFORMATION);

	}

Oczywiście nie chcę żeby się cokolwiek wysyłało tylko żeby sprawiało takie wrażenie :stuck_out_tongue: :mrgreen: 8)

Co jeszcze trzeba dopisać do kodu żeby pojawiła się ta animacja?

Aha i jeszcze jakbyście podali jak dorzucić obrazek np .jpg do okna

Mam nadzieję że jasno się wyraziłem i mnie zrozumiecie… :slight_smile:

Szczerze mówiąc, to nie sądzę, że znajdzie się ktoś, kto napisze Ci ten kod. A to dlatego, że nie jest to 1 czy 2 linie.

Jezeli chcesz zrobić jakiś pasek postępu, to zrób sobie nowy dialog, który odpalisz po naciśnieciu przycisku. Dialog ten powinien zawierać CProgressCtrl, który bedziesz sobie zwiększać co jakiś czas - mozesz się posłużyć do tego celu timer-em (SetTimer / KillTimer - szczegóły w dokumentacji).

Szczerze mówiąc to nie sądzę, byś wiedział co piszesz. Bo to nie jest dużo kodu.

Sylwan: piszesz w MFC czy używasz jakiejś innej biblioteki (np. wxWindows)?

MFC …

Ryan, nie zapisalem *duzo*, to raz. Po drugie, zarzucasz mi niewiedze, a sam pytasz sie o MFC majac podne informacje: VC++, CAnkietaDlg, MessageBox, … jezeli nie sklada Ci sie to w MFC, to …

Przechodzac jednak do senda sprawy, jezeli jestes taki uczynny, to napisz ten kod dla _Sylwan_ i ciekawe czy uda mu sie do bez problemu odpalic.

MessageBox istnieje w praktycznie każdej implementacji wrapera API. CAnkietaDlg to tylko nazwa klasy - nie da się na tej podstawie określić używanej biblioteki. Nie zarzuciłem Ci niewiedzę, tylko sparafrazowałem Twoją wypowiedź. Jeśli sam jesteś buńczuczny, nie oczekuj głaskania. Składało mi się to w MFC tak samo jak w wxWindows i pewnie kilkanaście innych bibliotek, których nigdy nie uzywałem, dlatego zadałem proste pytanie. Pytanie, które zresztą nie miałoby miejsca gdyby Sylwan przeczytał przyklejony temat. I nie wiem czy mu się uda czy nie - nie leży to w moich rękach. Póki co kilkadziesiąt odpowiedzi, które na forum udzieliłem działały, bo jestem “taki uczynny”. Tak jak i kilka innych osób na forum (wiecie kim jesteście :slight_smile: ).

Sylwan: do definicji okna dialogowego dodaj:

class CAnkietaDlg : public CDialog

{

...

private:

    CAnimateCtrl *Player;

};

W konstruktorze (CAnkietaDlg::CAnkietaDlg) okna dialogowego pod //}}AFX_DATA_INIT dodaj:

Animacja = new CAnimateCtrl;

W destruktorze (CAnkietaDlg::~CAnkietaDlg) dodaj:

Animacja->Stop();

Animacja->Close();

delete Animacja;

Zdefiniuj rozmiar pola animacji i załaduj plik w OnInitDialog:

BOOL CControlsDlg::OnInitDialog()

{

    RECT Obszar = { 5, 5, 360, 360 };

    Animacja->Create(WS_CHILD | WS_VISIBLE | ACS_TRANSPARENT | ACS_AUTOPLAY, Obszar, this, 0x1884);

    Animacja->Open("plik.avi");

    return TRUE;

}

Aby odtworzyć animację użyj:

Animacja->Play(0, -1, -1);

Możesz też użyć edytora zasobów (CAnimateCtrl ma ikonę taśmy filmowej) ale osobiście preferuję w MFC tworzenie kontrolek przy pomocy kodu.

Ryan thx wielkie. :slight_smile: