Ładny brzuch

Potrafie zresetowa komputer w C++ ale nie potrafie opuni tego. Czy kto wie jak to zrobi ?



Funkcja Sleep(1000) zatrzymuje dziaanie programu na 1 sekund...moesz moesz rwnie zaininicjowa timerka... ;)

Pozdrawiam


Funkcja Sleep(1000) zatrzymuje dziaanie programu na 1 sekund...moesz moesz rwnie zaininicjowa timerka... ;)

Hmm moesz zastowa funckj Sleep, tylko pamitaj e przyjmuje ona liczb w milisekudach...w tym przypadku bdzie to 60 min 1 min - > 60 sekund 1 sekunda to 1000 milisekund...czyli 360 * 1000, czy co takiego ;) Moesz rwnie pobra aktualn godzin i sprawdza w timerze, czy doszo ju do odowiedniego momentu (godzina mina)..w tym przypadku bdziesz musia zainicjowa timerka..SetTimer no i potem KillTimer..cao musisz obsuy w komuniacie WM_TIMER...jak co nie jasne to pisuj ;) Aha do pobierania daty i godziny moesz uzy strukturki SYSTEMTIME i pobiera dane za pomoc GetLocalTime.

pozdrawiam



hmm.. wiesz co moze podasz mi jakis przyklad na wykorzystanie timera np wypisanie czegos po 1 min.

Sleep dziala :)
Uytkownik n1x0n edytowa ten post 15 kwiecie 2005, 14:45
Oczywicie ;)

Timerki s zaprojektowane w aplikacjach okienkowych, co za tym idzie? Musimy tak stworzy...a wic piszemy sobie

# include <windows.h> //deklaracja procdeury okienkowej LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); char szClassName[ ] = "nameofclass"; char szAppName [ ] = "nameofprogram"; HWND hwnd; HINSTANCE hInstance; int SizeX = 200, SizeY = 200; RECT rcDesk; # define ID_TIMER 1000 //gwna funkcja - co takiego jak main w konsolowych int WINAPI WinMain (HINSTANCE hInstance,                    HINSTANCE hPrevInstance,                    LPSTR lpszArgument,                    int nFunsterStil) {    MSG messages;                WNDCLASSEX wincl;              GetWindowRect(GetDesktopWindow(), &rcDesk);    //struktura opisujca    wincl.hInstance = hInstance;    wincl.lpszClassName = szClassName;    wincl.lpfnWndProc = WindowProcedure;        wincl.style = CS_DBLCLKS;                  wincl.cbSize = sizeof (WNDCLASSEX);    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);    wincl.lpszMenuName = NULL;                    wincl.cbClsExtra = 0;                        wincl.cbWndExtra = 0;                          wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;    if (!RegisterClassEx (&wincl))        return 0;    //tworzymy okno    hwnd = CreateWindowEx (           0,                             szClassName,                   szAppName,                 WS_OVERLAPPEDWINDOW ^ WS_SIZEBOX ^ WS_MAXIMIZEBOX,           (rcDesk.right - SizeX) / 2,                 (rcDesk.bottom - SizeY) / 2,                 SizeX,                           SizeY,                           NULL,                   NULL,                           hInstance,                 NULL                           );    ShowWindow (hwnd, SW_HIDE); //chowamy okno bo nam nie jest potrzebne;)    while (GetMessage (&messages, NULL, 0, 0))    {        TranslateMessage(&messages);        DispatchMessage(&messages);    }            return messages.wParam; } //obsuga zdarze okna - procedura okienkowa LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {    switch (message)                    {        case WM_CREATE:            SetTimer(hwnd, ID_TIMER, 1000 * 60, NULL); //towrzymy timer            break;                case WM_TIMER:            if(wParam == ID_TIMER)            {                 //tutaj akcja, ktra ma by wykonana po minucie                 //jak chcesz eb byo wykonane jednorazowo to w takim wypadku zniszcz timer funkcj KillTimer.            }                break;        case WM_DESTROY:            KillTimer(hwnd, ID_TIMER); //to jest wanie niszczenie timera            PostQuitMessage (0);                  break;        default:                                  return DefWindowProc (hwnd, message, wParam, lParam);    }    return 0; }

Jak masz jakie pytania to wal miao...lub obacz se stronk winapi.org, gdzie jest opisywane programowanie z wykorzystaniem winapi ;)

//dopisano

mimo wszystko najefektywniejszym sposobem bdzie stworzenie pustego zdarzenia i wywoanie funkcji, ktra bdzie go oczekiwa:

HANDLE h; //uchwyt do zdarzenia h = CreateEvent(0, TRUE, FALSE, "opoznienie"); //stworzenie pustego zdarzenia WaitForSingleObject(h, 1000 * 60); //czeka minut na wykonanie zdarzenia, ktre jest puste

Za pomoc takiego rozwizania nie zeramy duo zasobw, jak to si dzieje np. podczas wywoywania funkcji Sleep...
//

pozdrawiam
Uytkownik codeguy edytowa ten post 15 kwiecie 2005, 15:37
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •