1.1. Programowanie dla Windows. Programowanie dla Windows. Komunikaty w systemie Windows. Application Programming Interface

Wielkość: px
Rozpocząć pokaz od strony:

Download "1.1. Programowanie dla Windows. Programowanie dla Windows. Komunikaty w systemie Windows. Application Programming Interface"

Transkrypt

1 1 Katedra Optoelektroniki i Systemów Elektronicznych 2 Oprogramowanie Systemów Elektronicznych Zagadnienia: Temat wykładu Etapy tworzenia okna Application Programming Interface 4 jest zbiorem funkcji, struktur, komunikatów, makr i reguł programistycznych stanowiących jednolitą i spójną platformę dla aplikacji Windows. Zasoby Win32 można podzielić na następujące kategorie: 1. Window Management interfejs użytkownika, zarządzanie wyświetlaniem okien. 2. Window Controls interfejs użytkownika, zarządzanie kontrolkami graficznymi. 3. Shell Features zarządzanie plikami, bazami danych, portami komunikacyjnymi i urządzeniami bazujące na hierarchicznej strukturze katalogów i obiektów (plików). 4. Graphics Device Interface zarządzanie wyjściem graficznym (monitor, drukarka); rysowanie linii, krzywych, figur zamkniętych, tekstu, map bitowych itp. 5. System Services zarządzanie dostępem do zasobów systemowych komputera, takich jak pamięć, system plików, urządzenia, zasoby komunikacyjne, procesy, wątki, mechanizmy wymiany danych i dzielenia kodu (DDE, DLL). 6. International Features funkcje wspomagające tworzenie aplikacji międzynarodowych niezależnych od wersji językowej systemu. 7. Network Services -zarządzanie komunikacją między komputerami poprzez sieć; zawiera Windows Networking, Windows Sockets, NetBIOS, NetDDE,... Architektura sterowana komunikatami Współpraca aplikacji z systemem Windows bazuje na systemie komunikatów. Każde okno tworzone w programie Windows ma swoją procedurę okna (ang. window procedure). Aby wysłać komunikat do okna, system Windows wywołuje procedurę okna. Procedura okna przetwarza komunikat, a następnie zwraca sterowanie do Windows. Struktura komunikatu Windows - MSG typedef struct tagmsg { // msg HWND hwnd; // Handle to window whose window procedure // receives the message UINT message; // Message number WPARAM wparam; LPARAM lparam; //Specifies additional information about the message. // The exact meaning depends on the value of the message member. DWORD time; // Time at which the message was posted. POINT pt; // Specifies the cursor position, in screen coordinates, // when the message was posted. MSG; 5 6 Kolejka komunikatów System Windows zakłada dla każdego działającego programu kolejkę komunikatów (ang. message queue). W kolejce tej umieszczane są komunikaty do wszystkich okien, które program może utworzyć. W programie znajduje się niewielki fragment kodu zwany pętlą komunikatów (ang. message loop), który zajmuje się pobieraniem komunikatów z kolejki i kierowaniem ich do odpowiedniej procedury okna. Istnieją komunikaty kolejkowane i niekolejkowane. Komunikaty kolejkowane są umieszczane przez Windows w kolejce i pobierane w pętli komunikatów. Do komunikatów kolejkowanych zalicza się komunikaty pochodzące od klawiatury, myszy, timera, WM_PAINT i WM_QUIT. Pozostałe nie są kolejkowane. Komunikaty niekolejkowane są przesyłane bezpośrednio przez system, który wywołuje procedurę okna. Message loop (Pętla komunikatów) while(getmessage(&msg, NULL, 0, 0) > 0) { TranslateMessage(&Msg); DispatchMessage(&Msg); GetMessage()- gets a message from application's message queue. If there is no message, GetMessage() Blocks. TranslateMessage() does some additional processing on keyboard events like generating WM_CHAR messages to go along with WM_KEYDOWN messages. DispatchMessage() - sends the message out to the window that the message was sent to. This could be our main window or it could be another one, or a control. System takes care of sending messege to proper window. 1.1

2 7 8 Wysyłanie komunikatów The PostMessage function places (posts) a message in the message queue associated with the thread that created the specified window and returns without waiting for the thread to process the message. np. PostMessage(hwnd, WM_CLOSE, 0, 0); //close window Pobieranie komunikatów The GetMessage function retrieves a message from the calling thread's message queue and places it in the specified structure. np. GetMessage(&Msg, NULL, 0, 0); If the function retrieves a message other than WM_QUIT, the return value is greater than zero. If there is an error, the return value is -1. The SendMessage function sends the specified message to a window or windows. The SendMessage function calls the window procedure for the specified window and does not return until the window procedure has processed the message. np. SendMessage(hwnd, WM_SIZE, 0, 0); //resize window The PeekMessage function checks a thread message queue for a message and places the message (if any) in the specified structure. np. PeekMessage(&msg, NULL, 0, 0, PM_REMOVE); If a message is available, the return value is nonzero. Unlike the GetMessage function, the PeekMessage function does not wait for a message to be placed in the queue before returning Przykładowe komunikaty Windows WM_COMMAND This message is sent when the user selects a command item from a menu, when a control sends a notification message to its parent window, or when an accelerator keystroke is translated. wnotifycode = HIWORD(wParam); // notification code wid = LOWORD(wParam); // item, control, or accelerator identifier hwndctl = (HWND) lparam; // handle of control WM_SIZE This message is sent to a window after its size has changed. fwsizetype = wparam; // resizing flag nwidth = LOWORD(lParam); // width of client area nheight = HIWORD(lParam); // height of client area Predefined macros: #define HIWORD(l) #define LOWORD(l) ((WORD) (((DWORD) (l) >> 16) & 0xFFFF)) ((WORD) (l)) Przykładowe komunikaty Windows WM_PAINT An application sends this message when Windows or another application makes a request to paint a portion of an application's window. hdc = (HDC) wparam; // the device context to draw in WM_CREATE This message is sent when an application requests that a window be created by calling the CreateWindowEx or CreateWindow function. The window procedure of the new window receives this message after the window is created, but before the window becomes visible. The message is sent before the CreateWindowEx or CreateWindow function returns. lpcs = (LPCREATESTRUCT) lparam; // structure with creation data WM_DESTROY This message is sent when a window is being destroyed. It is sent to the window procedure of the window being destroyed after the window is removed from the screen. This message is sent first to the window being destroyed and then to the child windows (if any) as they are destroyed. During the processing of the message, it can be assumed that all child windows still exist Przykładowe komunikaty klawiatury WM_KEYDOWN, WM_KEYUP, WM_CHAR WM_SYSKEYDOWN, WM_SYSKEYUP The WM_CHAR message is posted to the window with the keyboard focus when a WM_KEYDOWN message is translated by the TranslateMessage function. WM_CHAR contains the character code of the key that was pressed. The WM_SYSKEYDOWN message is posted to the window with the keyboard focus when the user holds down the ALT key and then presses another key. It also occurs when no window currently has the keyboard focus. Kod naciśniętego lub zwolnionego klawisza zawiera parametr wparam. W pliku winuser.h zdefiniowano kody klawiszy wirtualnych, np. VK_RETURN, VK_ESCAPE, VK_SPACE, VK_HOME, VK_END, VK_F1, VK_F2,... Etapy generowania komunikatów klawiatury 1. Przechwycenie zdarzenia wciśnięcia lub zwolnienia klawisza przez sterownik klawiatury 2. Przesłanie sygnału o zdarzeniu w postaci komunikatu do systemu, który umieszcza go w kolejce komunikatów systemu. 3. Przesłanie komunikatu klawiatury do kolejki komunikatów programu, który posiada tzw. ognisko wejścia (ang. Input focus). 4. Przesłanie komunikatu klawiatury do odpowiedniej procedury okna za pomocą funkcji DispatchMessage. Kolejkowanie komunikatów klawiatury najpierw w kolejce systemowej, a następnie programowej pozwala na synchronizację ciągu komunikatów klawiatury, w których występują komunikaty przekazujące ognisko innej aplikacji (np. Alt-Tab). Tylko jedna procedura okna wszystkich aplikacji pracujących w systemie może otrzymywać komunikaty klawiatury. Okno, które otrzymuje komunikaty klawiatury ma ognisko. 1.2

3 13 14 Komunikaty myszy WM_MOUSEMOVE, WM_MOUSEWHEEL WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBLCLK WM_MBUTTONDOWN, WM_MBUTTONUP, WM_MBUTTONDBLCLK WM_RBUTTONDOWN, WM_RBUTTONUP, WM_RBUTTONDBLCLK Zmienne wparam i lparam zawierają informacje o położeniu kursora, stanie przycisków myszy i stanie klawiszy shift i control. Wciśnięcie lewego przycisku myszy podczas trzymania klawisza SHIFT. Puszczenie przycisku Etapy generowania komunikatów myszy W pierwszej kolejności procedura okna otrzymuje komunikat WM_NCHITTEST (ang. non-client hit test). Komunikat ten jest przekazywany do domyślnej procedury okna DefWindowProc. Procedura ta m.in. określa położenie kursora w obrębie okna aplikacji: a) Obszar roboczy (client area), b) Obszar nieroboczy (non-client area) (pasek tytułu, pasek menu, paski przewijania). Na podstawie wartości zwracanej przez funkcję DefWindowProc generowany jest odpowiedni komunikat do procedury okna. Komunikaty pochodzące z obszaru nieroboczego różnią się w nazwie występowaniem przedrostka NC (nonclient), np. WM_NCMOUSEMOVE Przechwytywanie myszy Standardowo komunikaty myszy nie są przekazywane przez system do procedury okna, jeśli wskaźnik jest poza oknem. Można jednak wymusić przekazywanie komunikatów myszy do określonej procedury okna dla dowolnej pozycji wskaźnika na ekranie. Do tego celu służy funkcja HWND SetCapture( HWND hwnd // handle of window to receive mouse capture ); Wszystkie komunikaty myszy są wówczas komunikatami obszaru roboczego. Przywrócenie normalnego trybu odbywa się po wywołaniu funkcji ReleaseCapture() lub po przyciśnięciu lewego przycisku myszy w innym oknie. Procedura okna LRESULT CALLBACK WindowProc( HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam ); Parameters: Hwnd - [in] Handle to the window. umsg - [in] Specifies the message. wparam, lparam - [in] Specifies additional message information. The contents of this parameter depend on the value of the umsg parameter. Return Value: The return value is the result of the message processing and depends on the message sent Przykładowy szkielet procedury okna LRESULT CALLBACK WndProc(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam) { switch (umsg) { case WM_CREATE: // Initialize the window. case WM_PAINT: // Paint the window's client area. case WM_SIZE: // Set the size and position of the window. case WM_DESTROY: // Clean up window-specific data objects. // Process other messages. return DefWindowProc(hwnd, umsg, wparam, lparam); Domyślna procedura okna przeznaczona jest do przetwarzania komunikatów, przesłanych do okna, ale nie przetworzonych. Przechwytywanie komunikatów klawiatury LRESULT CALLBACK WndProc( HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam) { switch (umsg) { case WM_CHAR: switch (wparam) { case '0': case f': case F': case WM_KEYDOWN: switch (wparam) { case VK_ESCAPE: PostQuitMessage( 0 ); case VK_F1: // Process other messages. return DefWindowProc( hwnd, umsg, wparam, lparam); //switch (umsg) //WndProc 1.3

4 19 20 Przechwytywanie komunikatów myszy LRESULT CALLBACK WndProc(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam) { WPARAM fwkeys; short int xpos, ypos; switch (umsg) { case WM_LBUTTONDOWN: fwkeys = wparam; // key flags xpos = LOWORD(lParam); // horizontal position of cursor ypos = HIWORD(lParam); // vertical position of cursor case WM_MOUSEMOVE: fwkeys = wparam; // key flags xpos = LOWORD(lParam); // horizontal position of cursor ypos = HIWORD(lParam); // vertical position of cursor return DefWindowProc( hwnd, umsg, wparam, lparam); Zagadnienia: Etapy tworzenia okna Etapy tworzenia okna 22 Etapy tworzenia okna Okno aplikacji i klasa okna Okno aplikacji jest tworzone na podstawie klasy okna (ang. window class), która określa procedurę okna. Istnienie klasy okna pozwala na utworzenie wielu okien należących do tej samej klasy, a tym samym używających tej samej procedury okna. Tworzenie okna w programie przebiega następująco: 1. Zadeklarowanie lub zdefiniowanie procedury okna 2. Zainicjowanie pól struktury WNDCLASSEX 3. Rejestracja klasy okna 4. Utworzenie okna na podstawie zarejestrowanej klasy 5. Wyświetlenie okna Przykładowy szablon aplikacji Windows (1/5) #include <windows.h> const char g_szclassname[] = "mywindowclass"; //Step 1: Declaration of the Window Procedure LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam); int WIN WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) { // HINSTANCE - hinstance // Handle to the programs executable module (the.exe file in memory) // HINSTANCE hprevinstance // Always NULL for Win32 programs. // LPSTR lpcmdline // The command line arguments as a single string. NOT including the // program name. // int ncmdshow // An integer value which may be passed to ShowWindow(). 23 Etapy tworzenia okna 24 Etapy tworzenia okna Przykładowy szablon aplikacji Windows (2/5) WNDCLASSEX wc; HWND hwnd; MSG Msg; //Step 2: Initializing members of Window Class structure wc.cbsize = sizeof(wndclassex); wc.style = 0; // Class Styles (CS_*) wc.lpfnwndproc = WndProc; wc.cbclsextra = 0; //Amount of extra data allocated for this //class in memory. wc.cbwndextra = 0; //Amount of extra data allocated in memory //per window of this type. wc.hinstance = hinstance; //Handle to application instance wc.hicon = LoadIcon(NULL, IDI_APPLICATION); wc.hcursor = LoadCursor(NULL, IDC_ARROW); wc.hbrbackground = (HBRUSH)(COLOR_WINDOW+1); wc.lpszmenuname = NULL; //Name of a menu resource to use //for the windows with this class. wc.lpszclassname = g_szclassname; wc.hiconsm = LoadIcon(NULL, IDI_APPLICATION); Przykładowy szablon aplikacji Windows (3/5) //Step 3: Registering the Window Class if(!registerclassex(&wc)) { MessageBox(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION MB_OK); // Step 4: Creating the Window hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, //window style g_szclassname, //window class name "The title of my window", WS_OVERLAPPEDWINDOW, //window style CW_USEDEFAULT,CW_USEDEFAULT,240,120, //window coordinates NULL //parent window handle NULL //menu handle hinstance, //handle to application instance NULL //pointer to window creation data ); 1.4

5 25 Etapy tworzenia okna 26 Etapy tworzenia okna Przykładowy szablon aplikacji Windows (4/5) if (hwnd == NULL) { MessageBox(NULL, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION MB_OK); Przykładowy szablon aplikacji Windows (5/5) // Step 6: the Window Procedure LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { switch(msg) { case WM_PAINT: // WinMain ShowWindow(hwnd, ncmdshow); //send WM_SIZE and WM_SHOWWINDOW UpdateWindow(hwnd); //send WM_PAINT message // The Message Loop while(getmessage(&msg, NULL, 0, 0) > 0) { TranslateMessage(&Msg); DispatchMessage(&Msg); return Msg.wParam; case WM_CLOSE: DestroyWindow(hwnd); case WM_DESTROY: PostQuitMessage(0); return DefWindowProc(hwnd, msg, wparam, lparam); Zagadnienia: Etapy tworzenia okna Zasoby programu Zasoby są danymi przechowywanymi razem z programem w pliku EXE. W trakcie uruchamiania programu do pamięci ładowany jest tylko kod programu, a zasoby nie są bezpośrednio dostępne przy użyciu zmiennych zdefiniowanych w kodzie programu. Przed użyciem zasobów należy je jawnie załadować do pamięci z pliku EXE. Rodzaje zasobów: 1. Ikony 2. Kursory 3. Menu Bitmapy 6. Napisy 7. Klawisze skrótu 8. Zasoby zdefiniowane przez użytkownika Kompilowanie zasobów Zasoby programu definiuje się w skrypcie zasobów (plik ASCII z rozszerzeniem RC). Skrypt ten zawiera opis zasobów w formacie ASCII lub odwołania do innym plików (ASCII lub binarnych) zawierających opisy zasobów. W plikach zasobów można stosować dyrektywy preprocesora. Kompilator zasobów (RC.EXE) kompiluje skrypt zasobów do postaci binarnej (.RES), który następnie jest dołączany do kodu wykonawczego (.EXE) za pomocą linkera (LINK.EXE). Library files & compiled resource files Plik nagłówkowy "resource.h zawierający identyfikatory zasobów #define IDS_STRING1 1 #define IDI_ICON 101 #define IDR_MENU 1000 #define IDM_FILE_EXIT 1001 #define IDM_HELP_CONTENTS 1002 Plik zasobów #include <windows.h> #define IDM_HELP_ABOUT 1003 #define IDB_BITMAP1 103 Some resource editors and compilers use { in place of BEGIN and in place of END. #include resource.h STRINGTABLE DISCARDABLE BEGIN IDS_STRING1 Application title" END IDI_ICON ICON DISCARDABLE app_one.ico" 1.5

6 31 32 Plik zasobów cd. BEGIN POPUP "&File" BEGIN MENUITEM "E&xit", IDM_FILE_EXIT END POPUP "&Help" BEGIN MENUITEM "&Contents", IDM_HELP_CONTENTS MENUITEM SEPARATOR MENUITEM "&About...", IDM_HELP_ABOUT END END IDB_BITMAP1 BITMAP DISCARDABLE "bitmap1.bmp Korzystanie z zasobów Bitmapa Kursor Ikona Menu Napis Rodzaj zasobu Tablica akceleratorów Ikona, Kursor, Bitmapa Funkcja ładująca do pamięci Funkcja usuwająca z pamięci LoadAccelerators LoadBitmap LoadCursor LoadIcon LoadMenu LoadString LoadImage DestroyAcceleratorTable DeleteObject DestroyCursor DestroyIcon DestroyMenu - DestroyIcon DestroyCursor DeleteObject Korzystanie z zasobów (sygnatury funkcji) Functions: LoadBitmap, LoadCursor, LoadIcon, LoadMenu // 1st parameter - handle of application instance // 2st parameter - resorce name or resource identifier int LoadString( HINSTANCE hinstance, UINT uid, LPTSTR lpbuffer,// address of buffer for resource int nbuffermax // size of buffer ); HANDLE LoadImage( HINSTANCE hinstance, LPCTSTR lpszname, UINT utype, // type of image int cxdesired, // desired width int cydesired, // desired height UINT fuload // load flags ); Metody ładowania zasobów Jeśli parametr hinstance == NULL to funkcje ładują zasoby systemowe, których identyfikatory są zdefiniowane w plikach nagłówkowych. Funkcje mogą ładować zasoby albo z pliku o określonej nazwie, jeśli drugi parametr jest typu LPTSTR i starsze 16 bitów tej zmiennej jest różne od 0, np.: HICON hicon = LoadIcon(hInstance, my_icon ); Najczęściej jednak podaje się jako drugi parametr identyfikator zasobu. Do tego celu wykorzystuje się makro MAKEINTRESOURCE zamień liczbę całkowitą na nazwę zasobu (ang. make an integer into a resource string), np.: HICON hicon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON)); #define MAKEINTRESOURCE(i) (LPTSTR) ((DWORD) ((WORD) (i))) MAKEINTRESOURCE zwraca wartość, w której starsze 16 bitów jest równe Metody dołączania menu do okna aplikacji Menu w programie można utworzyć na dwa sposoby: 1. Zdefiniować strukturę menu w pliku zasobów i zainicjować pole nazwy menu w strukturze klasy okna (lpszmenuname) wc.lpszmenuname = MAKEINTRESOURCE(IDR_MYMENU); 2. Zdefiniować strukturę menu w trakcie inicjalizacji okna do którego ma być dołączone menu (przy obsłudze komunikatu WM_CREATE). Struktura menu jest usuwana automatycznie przy usuwaniu okna funkcją DestroyWindow(); Ad. 2. Dynamiczne generowanie struktury MENU case WM_CREATE: { HMENU hmenu, hsubmenu; hmenu = CreateMenu(); hsubmenu = CreatePopupMenu(); AppendMenu(hSubMenu, MF_STRING, ID_FILE_EXIT, "E&xit"); AppendMenu(hMenu, MF_STRING MF_POPUP, (UINT)hSubMenu, "&File"); hsubmenu = CreatePopupMenu(); AppendMenu(hSubMenu, MF_STRING, IDM_HELP_CONTENTS, "&Contents"); AppendMenu(hSubMenu, MF_SEPARATOR, ID_STUFF_GO, NULL); AppendMenu(hSubMenu, MF_STRING, 0, "&About"); AppendMenu(hMenu, MF_STRING MF_POPUP, (UINT)hSubMenu, "&Help"); SetMenu(hwnd, hmenu); 1.6

7 37 38 Obsługa zdarzeń menu Zdarzenia menu powodują wysłanie komunikatu WM_COMMAND do okna z którym jest skojarzone MENU. Identyfikator pozycji menu, będącej źródłem komunikatu, przekazywany jest przez parametr wparam. case WM_COMMAND: switch(loword(wparam)) { case IDM_FILE_EXIT: PostMessage(hwnd, WM_CLOSE, 0, 0); case IDM_HELP_CONTENTS: ShowWindow(hwndHelp, SW_SHOWNORMAL); case IDM_HELP_ABOUT: MessageBox(hwnd, About...", Program info", MB_OK); Inne sposoby ładowania menu Menu z pliku zasobów można załadować w trakcie pracy programu korzystając z funkcji HMENU LoadMenu( HINSTANCE hinstance, // handle of application instance LPCTSTR lpmenuname // menu name string or menu identifier ); Funkcja zwraca uchwyt menu, który można przekazać do funkcji CreateWindow, albo przypisać menu do okna, gdy okno już istnieje za pomocą funkcji SetMenu(hWnd, hmenu); Załadowane do pamięci menu można wyświetlić jako menu kontekstowe w miejscu wskaźnika myszy korzystając z funkcji TrackPopupMenu, np.: POINT point; case WM_RBUTTONUP: // <- przechwycenie komunikatu w procedurze okna point.x = LOWORD(lParam); point.y = HIWORD(lParam); ClientToScreen(hwnd, &point); //<- przeliczenie współrzędnych myszy TrackPopupMenu(hMenu,TPM_RIGHTBUTTON,point.x,point.y,0,hwnd,NULL); Zagadnienia: Etapy tworzenia okna Tworzenie kontrolek Kontrolki są specjalizowanymi oknami potomnymi aplikacji i tworzymy je za pomocą funkcji CreateWindow lub CreateWindowEx. Jeśli dodajemy kontrolkę predefiniowaną to należy w miejsce parametru lpclassname wstawić nazwę klasy kontrolki: Standard controls: BUTTON przycisk COMBOBOX lista rozwijana z możliwością edycji EDIT pole edycji LISTBOX pole listy SCROLLBAR pasek przewijania STATIC pole tekstowe Common controls, np.: STATUSCLASSNAME pasek statusu TOOLBARCLASSNAME pasek narzędzi PROGRESS_CLASS pasek postępu Tworzenie kontrolek Każda kontrolka ma określony zestaw styli, które podajemy w miejsce parametru dwstyle funkcji CreateWindow lub CreateWindowEx. Przykłady: BUTTON class: BS_RADIOBUTTON, BS_PUSHBUTTON, BS_CHECKBOX COMBOBOX class: CBS_UPPERCASE, CBS_HASSTRINGS EDIT class: ES_MULTILINE, ES_NUMBER, ES_PASSWORD LISTBOX class: LBS_SORT, LBS_NOTIFY SCROLLBAR class: SBS_HORZ, SBS_VERT Identyfikatory i uchwyty kontrolek Każde okno potomne ma swój własny uchwyt okna i niepowtarzalny identyfikator. Znając jeden z tych parametrów można uzyskać drugi. Jeśli znany jest uchwyt, a chcemy uzyskać identyfikator korzystamy z funkcji: lub id = GetWindowLong(hWndChild, GWL_ID); id = GetDlgCtrlID(hWndChild); Jeśli znany jest identyfikator, a chcemy uzyskać uchwyt korzystamy z funkcji: hwndchild = GetDlgItem(hWndParent, id); 1.7

8 43 44 Przekazywanie informacji między oknem macierzystym a kontrolką odbywa się za pośrednictwem komunikatów. Kontrolki typu Standard Controls przesyłają do okna nadrzędnego komunikat WM_COMMAND, a kontrolki typu Common Controls komunikat WM_NOTIFY. Wraz z komunikatem WM_COMMAND kontrolka przesyła do okna nadrzędnego następujące informacje: LOWORD(wParam) Identyfikator kontrolki HIWORD(wParam) Kod powiadomienia lparam uchwyt kontrolki Kod powiadomienia jest dodatkową informacją zawierającą bliższy opis zdarzenia związanego z komunikatem. Przykładowe komunikaty powiadomienia kontrolki typu BUTTON: The BN_PUSHED / BN_UNPUSHED notification message is sent when the push state of a button is set to pushed / unpushed. The BN_SETFOCUS / BN_KILLFOCUS notification message is sent when a button receives / loses the keyboard focus. The BN_CLICKED / BN_DOUBLECLICKED notification message is sent when the user clicks / double-clicks a button. Przykładowe komunikaty powiadomienia kontrolki typu EDIT: EN_SETFOCUS / EN_KILLFOCUS The EN_CHANGE notification message is sent when the user has taken an action that may have altered text in an edit control. The EN_SELCHANGE notification message notifies a rich edit control's parent window that the current selection has changed Kontrolka typu CHECKBOX Przełączanie stanu kontrolki SendMessage(hwndButton, BM_SETSTATE, 1, 0); SendMessage(hwndButton, BM_SETSTATE, 0, 0); Pobranie stanu kontrolki BOOL state = SendMessage(hwndButton, BM_GETSTATE, 0, 0); Pole edycji (EDIT) SetDlgItemText(hwnd, IDC_TEXT, "This is a string"); GetDlgItemText(hwnd, IDC_TEXT, buf, len); BOOL bsuccess; int ntimes = GetDlgItemInt(hwnd, IDC_NUMBER, &bsuccess, FALSE); Kontrolka typu LISTBOX Adding Items int index = SendDlgItemMessage(hwnd, IDC_LIST, LB_ADDSTRING, 0, (LPARAM)"Hi there!"); SendDlgItemMessage(hwnd, IDC_LIST, LB_SETITEMDATA, (WPARAM)index, (LPARAM)nTimes); Funkcja SendDlgItemMessage wysyła komunikat do okna, jeśli znany jest uchwyt okna nadrzędnego i identyfikator kontrolki. Funkcja ta jest połączeniem dwóch funkcji GetDlgItem i SendMessage Kontrolka typu LISTBOX Przechwytywanie zdarzeń case WM_COMMAND: switch(loword(wparam)) { case IDC_LIST: // It's our listbox, check the notification code switch(hiword(wparam)) { case LBN_SELCHANGE: // Selection changed, do stuff here. //... other controls Kontrolka typu LISTBOX Pobieranie danych HWND hlist = GetDlgItem(hwnd, IDC_LIST); // get the number of selected items, int count = SendMessage(hList, LB_GETSELCOUNT, 0, 0); // allocate a buffer based on the number of items, int *buf = GlobalAlloc(GPTR, sizeof(int) * count); // send LB_GETSELITEMS to fill in the array. SendMessage(hList, LB_GETSELITEMS, (WPARAM)count, (LPARAM)buf); //... Do stuff with indexes GlobalFree(buf); 1.8

9 49 50 Zagadnienia: Etapy tworzenia okna Występują okna dialogowe modalne i niemodalne. Okno modalne jest to okno programu, którego uaktywnienie uniemożliwia przełączenie się do innego okna w programie. Szczególnym rodzajem okna modalnego jest modalne okno systemowe, którego pojawienie się blokuje dostęp do wszystkich okien uruchomionych aktualnie programów. Etapy tworzenia okna dialogowego modalnego: 1. Utworzenie szablonu okna dialogowego i zapisanie go do pliku zasobów (RC), albo do oddzielnego pliku z rozszerzeniem DLG. W drugim przypadku w pliku RC należy dodać wpis rcinclude nazwapliku.dlg 2. Napisanie procedury okna dialogowego 3. Utworzenie okna dialogowego modalnego poprzez wywołanie funkcji DialogBox 4. Przechwycenie wartości zwracanej przez funkcję DialogBox Tworzenie okna dialogowego modalnego Przykładowy szablon okna dialogowego: IDD_ABOUT DIALOG DISCARDABLE 0, 0, 239, 66 STYLE DS_MODALFRAME WS_POPUP WS_CAPTION WS_SYSMENU CAPTION "My About Box" FONT 8, "MS Sans Serif" BEGIN DEFPUSHBUTTON "OK",IDOK,174,18,50,14 PUSHBUTTON "Cancel",IDCANCEL,174,35,50,14 GROUPBOX "About this program...",idc_static,7,7,225,52 CTEXT "An example program showing how to use\ Dialog Boxes\r\n\r\nby theforger, IDC_STATIC,16,18,144,33 END Identyfikatory kontrolek: IDOK, IDCANCEL Procedura okna dialogowego modalnego BOOL CALLBACK AboutDlgProc(HWND hwnd, UINT Message, WPARAM wparam, LPARAM lparam) { switch(message) { case WM_INITDIALOG: return TRUE; //always true Return value case WM_COMMAND: switch(loword(wparam)) { case IDOK: EndDialog(hwnd, IDOK); case IDCANCEL: EndDialog(hwnd, IDCANCEL); return FALSE; //function doesn t processes message return TRUE; //function processes message Różnice między procedurą okna, a procedurą okna dialogowego modalnego Procedura okna 1. Zwraca wartość LRESULT 2. Wywołuje funkcję DefWindowProc 3. Otrzymuje komunikat inicjujący WM_CREATE 4. Komunikaty przechodzą przez kolejkę komunikatów aplikacji 5. Jest wywoływana przez samą aplikację Procedura okna dialogowego modalnego 1. Zwraca wartość BOOL 2. Zwraca TRUE, jeśli przetwarza komunikat lub FALSE jeśli nie przetwarza komunikatu 3. Otrzymuje komunikat inicjujący WM_INITDIALOG 4. Komunikaty trafiają z pominięciem kolejki komunikatów aplikacji 5. Jest wywoływana przez system Przykład tworzenia okna dialogowego w kodzie programu int ret; case WM_COMMAND: //catch message from menu switch(loword(wparam)) { case ID_HELP_ABOUT: // MENU/HELP/ABOUT int ret = DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_ABOUT), hwnd, AboutDlgProc); if (ret == IDOK){ MessageBox(hwnd,"Dialog exited with IDOK.", "Notice", MB_OK MB_ICONINFORMATION); else if(ret == IDCANCEL){ MessageBox(hwnd,"Dialog exited with IDCANCEL.", "Notice", MB_OK MB_ICONINFORMATION); else if(ret == -1){ MessageBox(hwnd, "Dialog failed!", "Error", MB_OK MB_ICONINFORMATION); 1.9

10 55 56 Niemodalne okna dialogowe (1/3) Niemodalne okno dialogowe tworzy się przy pomocy funkcji CreateDialog HWND CreateDialog( HINSTANCE hinstance, // handle to application instance LPCTSTR lptemplate, // identifies dialog box template name HWND hwndparent, // handle to owner window DLGPROC lpdialogfunc // pointer to dialog box procedure ); W przeciwieństwie do funkcji DialogBox, która kończy działanie dopiero po zlikwidowaniu okna modalnego, funkcja CreateDialog natychmiast kończy działanie i zwraca uchwyt do okna dialogowego. Istotna różnica między oknem modalnym i niemodalnym polega na tym, iż komunikaty przeznaczone dla niemodalnego okna dialogowego przechodzą przez kolejkę komunikatów programu. Niemodalne okna dialogowe (2/3) Pętla komunikatów programu korzystającego z niemodalnych okien dialogowych musi zostać rozbudowana, w celu rozróżnienia komunikatów skierowanych do procedury okna aplikacji i do procedury niemodalnego okna dialogowego. while(getmessage(&msg, NULL, 0, 0) > 0) { if (hdlgmodeless == 0!isDialogMessage(hDlgModeless, &msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); hdlgmodeless uchwyt niemodalnego okna dialogowego zwrócony przez funkcję CreateDialog Jeśli komunikat jest przeznaczony dla niemodalnego okna dialogowego, to funkcja IsDialogMessage wysyła go do procedury okna obsługującej okno dialogowe i zwraca TRUE, w przeciwnym razie zwraca FALSE Niemodalne okna dialogowe (3/3) Uchwyt niemodalnego okna dialogowego hdlgmodeless może być wykorzystywany przez inne części programu do sprawdzenia, czy istnieje niemodalne okno dialogowe. Na przykład inne okna programu mogą wysyłać komunikaty do okna dialogowego, gdy hdlgmodeless jest różne od zera. Niemodalne okna dialogowe usuwa się wywołując funkcję DestroyWindow, np.: BOOL CALLBACK DlgProc(HWND hdlg, UINT Message, WPARAM wparam, LPARAM lparam) { switch(message) { //... case WM_CLOSE: DestroyWindow(hDlg); hdlgmodeless = 0; return FALSE; //function doesn t processes message return TRUE; //function processes message Zagadnienia: Etapy tworzenia okna Multiple Document Interface Tworzenie okna-klienta (MDI Client WINDOW) Okno-klienta tworzone za pomocą funkcji CreateWindow w oparciu o predefiniowaną klasę MDICLIENT. Okno to musi mieć styl WS_CHILD. Tworzenie okna-klienta realizuje się przy obsłudze komunikatu WM_CREATE okna framugi (MDI FRAME WINDOW). Okno-klient pokrywa obszar roboczy framugi i jest odpowiedzialne za obsługę MDI. Skojarzenie okien potomnych z menu okna nadrzędnego 1.10

11 61 62 Tworzenie okna-klienta (MDI Client WINDOW) CLIENTCREATESTRUCT ccs; // Uchwyt podmenu do którego jest dołączana lista nazw okien potomnych ccs.hwindowmenu = GetSubMenu(GetMenu(hwnd), 2); // Identyfikator menu, począwszy od którego będą skojarzone okna potomne ccs.idfirstchild = ID_MDI_FIRSTCHILD; Stała zdefiniowana w pliku nagłówkowym // Uchwyt okna-klienta HWND g_hmdiclient = NULL; Predefiniowana klasa MDICLENT g_hmdiclient = CreateWindowEx(WS_EX_CLIENTEDGE, "mdiclient", NULL, WS_CHILD WS_CLIPCHILDREN WS_VSCROLL WS_HSCROLL WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_MAIN_MDI, GetModuleHandle(NULL), (LPVOID)&ccs); Wskaźnik do struktury CLIENTCREATESTRUCT Inicjowanie klasy okna potomnego (MDI Child WINDOW) char g_szchildclassname[] = "MyMDIChild"; WNDCLASSEX wc; wc.cbsize = sizeof(wndclassex); wc.lpfnwndproc = MDIChildWndProc; wc.lpszmenuname = NULL; wc.lpszclassname = g_szchildclassname; wc.hbrbackground = (HBRUSH)(COLOR_3DFACE+1); // initialize other members... If (!RegisterClassEx(&wc)) { MessageBox(0, "Could Not Register Child Window", "Oh Oh...", MB_ICONEXCLAMATION MB_OK); return FALSE; Każdy rodzaj okna potomnego musi mieć zdefiniowaną odpowiednią klasę okna Tworzenie okna potomnego (MDI Child WINDOW) Okna potomne (okna dokumentów aplikacji) tworzy się je przez zainicjowanie struktury MDICREATESTRUCT i wysłanie do okna-klienta komunikatu WM_MDICREATE ze wskaźnikiem do tej struktury. MDICREATESTRUCT mcs; HWND hchild; mcs.sztitle = "[Untitled]"; Pointer to mcs.szclass = g_szchildclassname; MDICREATESTRUCT mcs.howner = GetModuleHandle(NULL); mcs.x = mcs.cx = CW_USEDEFAULT; mcs.y = mcs.cy = CW_USEDEFAULT; mcs.style = MDIS_ALLCHILDSTYLES; hchild = (HWND)SendMessage(hMDIClient, WM_MDICREATE, 0, (LONG)&mcs); if(!hchild) { MessageBox(hMDIClient, "MDI Child creation failed.", "Oh Oh...", MB_ICONEXCLAMATION MB_OK); Domyślne procedury okna framugi i okna potomnego Procedury okna framugi i okna potomnego wykorzystują specjalne funkcje obsługi komunikatów przeznaczone dla aplikacji MDI. Procedura framugi wywołuje funkcję DefFrameProc(hwnd, g_hmdiclient, msg, wparam, lparam); Uchwyt okna klienta Procedura okna potomnego wywołuje funkcję DefMDIChildProc(hwnd, msg, wparam, lparam); Obsługa komunikatu WM_COMMAND w procedurze okna framugi case WM_COMMAND: switch(loword(wparam)) { //... handle frame window IDs... user has clicked on one of // Handle MDI Window commands the Window menu items if(loword(wparam) >= ID_MDI_FIRSTCHILD) { DefFrameProc(hwnd,g_hMDIClient,msg,wParam,lParam); else { HWND hchild; get active child window hchild =(HWND)SendMessage(g_hMDIClient,WM_MDIGETACTIVE,0,0); if(hchild) { SendMessage(hChild, WM_COMMAND, wparam, lparam); forward the message to the active child window for processing Procedura okna potomnego An application sends the WM_MDIACTIVATE message to a multiple document interface (MDI) client window to instruct the client window to activate a different MDI child window. As the client window processes this message, it sends WM_MDIACTIVATE to the child window being deactivated and to the child window being activated. // Message sent to MDI client wparam = (WPARAM) (HWND) hwndchildact; // child to activate lparam = 0; // not used; must be zero // Message received by MDI child hwndchilddeact = (HWND) wparam; hwndchildact = (HWND) lparam; // child being deactivated // child being activated The WM_MDIACTIVATE message is send first to the child window being deactivated and next to the child window being activated 1.11

12 67 Pętla komunikatów aplikacji MDI while(getmessage(&msg, NULL, 0, 0) > 0) { if (!TranslateMDISysAccel(g_hMDIClient, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); Przetwarzanie klawiszy skrótu aplikacji MDI The TranslateMDISysAccel function processes accelerator keystrokes for window menu commands of the multiple document interface (MDI) child windows associated with the specified MDI client window. Ctrl F4 -> zamknięcie okna potomnego Ctrl F6 -> przełączanie między oknami potomnymi 1.12

IFiZR Laboratorium 5 Info

IFiZR Laboratorium 5 Info IFiZR Laboratorium 5 Info File->New->Project->Windows Application (DevC++) Kurs WinAPI: http://cpp0x.pl/kursy/kurs-winapi-c++/167 #include #include #include #include

Bardziej szczegółowo

Procedura okna: LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);

Procedura okna: LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam); 1. Pierwszy program pod Windows 1/8 Procedura okna: LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam); UINT unsigned int DWORD 32-bitowy unsigned int. LPSTR - wskaźnik do

Bardziej szczegółowo

Programowanie na poziomie sprzętu. Programowanie w Windows API

Programowanie na poziomie sprzętu. Programowanie w Windows API Programowanie w Windows API Windows API Windows Application Programming Interface (API) to zestaw funkcji systemu operacyjnego Windows, które umożliwiają aplikacjom korzystanie z wszystkich usług systemu.

Bardziej szczegółowo

Podstawy programowania w języku C dla środowiska Windows

Podstawy programowania w języku C dla środowiska Windows Podstawy programowania w języku C dla środowiska Windows Część pierwsza Windows API wprowadzenie Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera

Bardziej szczegółowo

Programowanie w środowisku Windows. mgr inż. Krzysztof Mossakowski k.mossakowski@mini.pw.edu.pl http://www.mini.pw.edu.

Programowanie w środowisku Windows. mgr inż. Krzysztof Mossakowski k.mossakowski@mini.pw.edu.pl http://www.mini.pw.edu. Programowanie w środowisku Windows mgr inż. k.mossakowski@mini.pw.edu.pl Plan wykładu 1. Okna, komunikaty, czas, błędy 2. Typy, struktury, makra, mysz, klawiatura, wersje 3. GDI 4. Zasoby, okna dialogowe,

Bardziej szczegółowo

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych Laboratorium OiOSE. Programowanie w środowisku MS Visual C++ 1 Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych Organizacja i Oprogramowanie Systemów Elektronicznych Michał Kowalewski

Bardziej szczegółowo

Podstawy programowania w języku C dla środowiska Windows

Podstawy programowania w języku C dla środowiska Windows Podstawy programowania w języku C dla środowiska Windows Część druga Windows API pierwsze kroki Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera

Bardziej szczegółowo

Podstawowy projekt OpenGL utworzony przy użyciu środowisk programistycznych firmy Microsoft.

Podstawowy projekt OpenGL utworzony przy użyciu środowisk programistycznych firmy Microsoft. Podstawowy projekt OpenGL utworzony przy użyciu środowisk programistycznych firmy Microsoft. Autor: Radosław Płoszajczak Spis treści I. Wymagania i utworzenie projektu w Visual Studio 2005...2 II. Absolutne

Bardziej szczegółowo

Projektowanie i programowanie aplikacji biznesowych. Wykład 2

Projektowanie i programowanie aplikacji biznesowych. Wykład 2 Projektowanie i programowanie aplikacji biznesowych Wykład 2 Kontrolki w Windows API Aby korzystać z kontrolek należy dołączyć plik nagłówkowy o nazwie commctrl.h oraz bibliotekę o nazwie libcomctl32.a.

Bardziej szczegółowo

Wprowadzenie do programowania w Windows

Wprowadzenie do programowania w Windows Wprowadzenie do programowania w Windows Sławomir Samolej Rzeszów, 1999 1. Wstęp Od kilku lat dominującym systemem operacyjnym na rynku komputerów osobistych jest Microsoft Windows. Wersje systemu Windows

Bardziej szczegółowo

Laboratorium Grafiki Komputerowej i Animacji. Ćwiczenie I. Wprowadzenie do programowania w Windows

Laboratorium Grafiki Komputerowej i Animacji. Ćwiczenie I. Wprowadzenie do programowania w Windows Laboratorium Grafiki Komputerowej i Animacji Ćwiczenie I Wprowadzenie do programowania w Windows Sławomir Samolej Rzeszów, 2012 1. Wstęp Od kilku lat dominującym systemem operacyjnym na rynku komputerów

Bardziej szczegółowo

Tworzenie projektu asemblerowego dla środowiska Visual Studio 2008.

Tworzenie projektu asemblerowego dla środowiska Visual Studio 2008. Dwiczenie 5. TEMAT: CEL: Tworzenie projektu asemblerowego dla środowiska Visual Studio 2008. Celem dwiczenia jest poznanie możliwości VS 2008 w zakresie tworzenia i uruchamiania aplikacji z kodem mieszanym

Bardziej szczegółowo

PROE wykład 8 Interfejs użytkownika (GUI) dr inż. Jacek Naruniec

PROE wykład 8 Interfejs użytkownika (GUI) dr inż. Jacek Naruniec PROE wykład 8 Interfejs użytkownika (GUI) dr inż. Jacek Naruniec Co to jest GUI? Graphical User Interface (GUI), czyli po prostu interfejs użytkownika (UI). Najpopularniejsze GUI dla C++: Qt WinAPI MFC

Bardziej szczegółowo

Programowanie w języku C++ z użyciem Windows API

Programowanie w języku C++ z użyciem Windows API Programowanie w języku C++ z użyciem Windows API Autor: Mateusz Ferenc Data opracowania: 30 maja 2012 r. Windows API jest jedną z bibliotek programistycznych przeznaczonych do pisania programów na platformę

Bardziej szczegółowo

Microsoft Visual C++

Microsoft Visual C++ Microsoft Visual C++ Typy aplikacji okna dialogowe Typy aplikacji Multiple Document Obsługa zdarzeń - komunikaty W celu obsługi zdarzeń pochodzących z wielu źródeł funkcja MainLoop odbiera komunikaty systemowe

Bardziej szczegółowo

Dodanie nowej formy do projektu polega na:

Dodanie nowej formy do projektu polega na: 7 Tworzenie formy Forma jest podstawowym elementem dla tworzenia interfejsu użytkownika aplikacji systemu Windows. Umożliwia uruchomienie aplikacji, oraz komunikację z użytkownikiem aplikacji. W trakcie

Bardziej szczegółowo

Podstawy programowania w środowisku Windows. Oto identyfikatory najczęściej obsługiwanych meldunków (przedrostek WM to skrót od Windows message):

Podstawy programowania w środowisku Windows. Oto identyfikatory najczęściej obsługiwanych meldunków (przedrostek WM to skrót od Windows message): GRAFIKA KOMPUTEROWA Podstawy programowania w środowisku Windows 1. Struktura programu w środowisku MS Windows Program dla Windows powinien mieć przynajmniej jedno okno (chociaż może być ono niewidoczne).

Bardziej szczegółowo

Ćwiczenia 2 IBM DB2 Data Studio

Ćwiczenia 2 IBM DB2 Data Studio Ćwiczenia 2 IBM DB2 Data Studio Temat: Aplikacje w Data Studio 1. Projekty Tworzenie procedur, UDF, trygerów zaczynamy od utworzenia projektu File -> New -> Project wybieramy Data Development Project.

Bardziej szczegółowo

Załącznik do ćwiczenia w środowisku MASM32 wersji 10. Tryb graficzny w systemie Windows

Załącznik do ćwiczenia w środowisku MASM32 wersji 10. Tryb graficzny w systemie Windows Załącznik do ćwiczenia w środowisku MASM32 wersji 10 7.7. Programowanie aplikacji graficznej Tryb graficzny w systemie Windows 7.7.1. Współdziałanie aplikacji graficznej z systemem Windows Aplikacja graficzna

Bardziej szczegółowo

Pobieranie argumentów wiersza polecenia

Pobieranie argumentów wiersza polecenia Pobieranie argumentów wiersza polecenia 2. Argumenty wiersza polecenia Lista argumentów Lista argumentów zawiera cały wiersz poleceń, łącznie z nazwą programu i wszystkimi dostarczonymi argumentami. Przykłady:

Bardziej szczegółowo

Formaty plików graficznych - wprowadzenie

Formaty plików graficznych - wprowadzenie Formaty plików graficznych - wprowadzenie Obraz graficzny jest dwuwymiarową tablicą pikseli, zwana czasem rastrem. Kolor piksela może być reprezentowany w następujący sposób: Dla obrazów monochromatycznych

Bardziej szczegółowo

1. Wstęp. 2. Szablon. 1 WinApi Wstęp i szablon. Czym jest API?

1. Wstęp. 2. Szablon. 1 WinApi Wstęp i szablon. Czym jest API? 1 WinApi Wstęp i szablon 1. Wstęp Czym jest API? API Windows to zestaw funkcji, które pozwalają zbudować praktycznie dowolną aplikację działającą w systemach Windows 95, 98, NT, 2000 oraz CE. Za ich pomocą

Bardziej szczegółowo

Programowanie w środowiskach RAD Język C++ w środowiskach RAD

Programowanie w środowiskach RAD Język C++ w środowiskach RAD Programowanie w środowiskach RAD Język C++ w środowiskach RAD Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Programowanie sterowane zdarzeniami Geneza, koncepcja, rodzaje, przykłady Jeszcze

Bardziej szczegółowo

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty MeetingHelper Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania Instrukcja obsługi dla programisty W tej części został zawarty opis uruchamiania projektu programistycznego,

Bardziej szczegółowo

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)

Bardziej szczegółowo

Microsoft Foundation Classes

Microsoft Foundation Classes Microsoft Foundation Classes Piotr Janczyk Co to jest MFC? Jest to podstawowa biblioteka Visual C++, której klasy stanowią szkielet aplikacji dla programów pracujących w systemie Windows. Napisane w języku

Bardziej szczegółowo

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka 1. Kompilacja aplikacji konsolowych w środowisku programistycznym Microsoft Visual Basic. Odszukaj w menu startowym systemu

Bardziej szczegółowo

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Przemysłowe układy sterowania PID Układy regulacji PID w strukturze sprzętowej Pytania i zadania do zajęć

Bardziej szczegółowo

Biblioteka Windows Forms

Biblioteka Windows Forms Biblioteka Windows Forms Aplikacje Windows Forms Aplikacje sterowane zdarzeniami Rysowanie oparte na GDI+ "Obudowane" kontrolki Win32 "Elementy" do budowy aplikacji Przestrzeń nazw System.Windows.Forms

Bardziej szczegółowo

Instrukcja laboratoryjna cz.3

Instrukcja laboratoryjna cz.3 Języki programowania na platformie.net cz.2 2015/16 Instrukcja laboratoryjna cz.3 Język C++/CLI Prowadzący: Tomasz Goluch Wersja: 2.0 I. Utworzenie projektu C++/CLI z interfejsem graficznym WPF 1 Cel:

Bardziej szczegółowo

Zarządzanie sieciami telekomunikacyjnymi

Zarządzanie sieciami telekomunikacyjnymi SNMP Protocol The Simple Network Management Protocol (SNMP) is an application layer protocol that facilitates the exchange of management information between network devices. It is part of the Transmission

Bardziej szczegółowo

Rodzina protokołów TCP/IP. Aplikacja: ipconfig.

Rodzina protokołów TCP/IP. Aplikacja: ipconfig. Rodzina protokołów TCP/IP. Aplikacja: ipconfig. dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl Specyfikacja struktury FIXED_INFO Nazwa struktury:

Bardziej szczegółowo

Właściwości i metody obiektu Comment Właściwości

Właściwości i metody obiektu Comment Właściwości Właściwości i metody obiektu Comment Właściwości Właściwość Czy można zmieniać Opis Application nie Zwraca nazwę aplikacji, która utworzyła komentarz Author nie Zwraca nazwę osoby, która utworzyła komentarz

Bardziej szczegółowo

SQL 4 Structured Query Lenguage

SQL 4 Structured Query Lenguage Wykład 5 SQL 4 Structured Query Lenguage Instrukcje sterowania danymi Bazy Danych - A. Dawid 2011 1 CREATE USER Tworzy nowego użytkownika Składnia CREATE USER specyfikacja użytkownika [, specyfikacja użytkownika]...

Bardziej szczegółowo

Cechy systemu Windows

Cechy systemu Windows Cechy systemu Windows Wielozadaniowość Współdzielenie zasobów sprzętowych: ekran klawiatura mysz pamięć dysk Wymiana danych pomiędzy aplikacjami Niezależna sprzętowo grafika Zdefiniowany w systemie interfejs

Bardziej szczegółowo

https://portal.clusterix.pl:8443 trainxx tramxx

https://portal.clusterix.pl:8443 trainxx tramxx Logowanie 1. Otworzyć w oknie przeglądarki adres: https://portal.clusterix.pl:8443 2. Zalogować się używając konta, użytkownik: trainxx, hasło: tramxx Delegacja certyfikatu proxy 1. Zalogować poprzez ssh

Bardziej szczegółowo

On-Board Unit (OBU) Rejestracja. Spis treści. 1. 1.Logowanie... 1

On-Board Unit (OBU) Rejestracja. Spis treści. 1. 1.Logowanie... 1 On-Board Unit (OBU) Rejestracja Spis treści 1. 1.Logowanie... 1 1.1. Rejestracja w interfejsie użytkownika internetowego HU-GO...1 1.2.Logowanie się do systemu HU-GO...2 1.3.Wybieranie aktywnego konta...2

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Ćwiczenie 1. Kolejki IBM Message Queue (MQ) Ćwiczenie 1. Kolejki IBM Message Queue (MQ) 1. Przygotowanie Przed rozpoczęciem pracy, należy uruchomić "Kreator przygotowania WebSphere MQ" oraz przejść przez wszystkie kroki kreatora, na końcu zaznaczając

Bardziej szczegółowo

Do nich też i tylko do nich będzie się w tym rozdziale odnosić sam termin okno.

Do nich też i tylko do nich będzie się w tym rozdziale odnosić sam termin okno. 2 ANATOMIA OKNA Nauczycielem wszystkiego jest praktyka. Juliusz Cezar W systemie Windows składniki interfejsu użytkownika nazywamy oknami. Nadmieniłem w poprzednim rozdziale, iż określeniem tym obdarzamy

Bardziej szczegółowo

Laboratorium Systemów SCADA

Laboratorium Systemów SCADA Laboratorium Systemów SCADA Ćwiczenie 4. Tworzenie skryptów w programie InTouch Opracował: dr hab. inż. Sebastian Dudzik 1. Cel ćwiczenia Zapoznanie się z rodzajami skryptów w programie InTouch. Zapoznanie

Bardziej szczegółowo

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor

Bardziej szczegółowo

BACKUP BAZ DANYCH MS SQL

BACKUP BAZ DANYCH MS SQL BACKUP BAZ DANYCH MS SQL SPIS TREŚCI Informacje ogólne... 2 Tworzenie projektu... 2 Krok 1: Informacje Podstawowe... 2 Krok 2: Dane... 3 Krok 3: Planowanie... 4 Krok 4: Zaawansowane... 5 Przywracanie baz

Bardziej szczegółowo

Pliki wchodzące w skład projektu Rozmiar formatki, okna. Wyświetlanie okien komunikatów Rzutowanie Konwersja Tworzenie standardowych przycisków

Pliki wchodzące w skład projektu Rozmiar formatki, okna. Wyświetlanie okien komunikatów Rzutowanie Konwersja Tworzenie standardowych przycisków Pliki wchodzące w skład projektu Rozmiar formatki, okna. Wyświetlanie okien komunikatów Rzutowanie Konwersja Tworzenie standardowych przycisków Pliki wchodzące w skład projektu. Elementy projektu: plik

Bardziej szczegółowo

Delphi podstawy programowania. Środowisko Delphi

Delphi podstawy programowania. Środowisko Delphi Delphi podstawy programowania Środowisko Delphi Olsztyn 2004 Delphi Programowanie obiektowe - (object-oriented programming) jest to metodologia tworzeniu programów komputerowych definiująca je jako zbiór

Bardziej szczegółowo

PROGRAMOWANIE W SYSTEMIE WINDOWS

PROGRAMOWANIE W SYSTEMIE WINDOWS PROGRAMOWANIE W SYSTEMIE WINDOWS NajwaŜniejsze cechy: Środowisko Windows umoŝliwia pracę wielozadaniową (z wieloma programami aplikacjami jednocześnie). Występuje współdzielenie zasobów komputera oraz

Bardziej szczegółowo

Laboratorium Projektowania Systemów VLSI-ASIC Katedra Elektroniki Akademia Górniczo-Hutnicza

Laboratorium Projektowania Systemów VLSI-ASIC Katedra Elektroniki Akademia Górniczo-Hutnicza Laboratorium Projektowania Systemów VLSI-ASIC Katedra Elektroniki Akademia Górniczo-Hutnicza Projektowanie układów VLSI-ASIC za pomocą techniki komórek standardowych przy użyciu pakietu Cadence Programowanie,

Bardziej szczegółowo

Spis tre Wst p... 2 Do czego słu zasoby... 2 Tworzenie zasobów... 4 Pisanie skryptu zasobów... 4 Korzystanie z zasobów w programach...

Spis tre Wst p... 2 Do czego słu zasoby... 2 Tworzenie zasobów... 4 Pisanie skryptu zasobów... 4 Korzystanie z zasobów w programach... Spis treści Wstęp... 2 Do czego słuŝą zasoby... 2 Tworzenie zasobów... 4 Pisanie skryptu zasobów... 4 Zasoby wczytywane z plików... 4 Menu... 5 Tablice łańcuchów... 9 Zasoby własne... 9 Preprocesor i skrypty

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

TWORZENIE PROJEKTU W RIDE

TWORZENIE PROJEKTU W RIDE TWORZENIE PROJEKTU W RIDE Zintegrowane środowisko programistyczne RIDE7 firmy Raisonance umożliwia tworzenie, kompilację i debuggowanie kodu źródłowego na wiele różnych platform sprzętowych. Pakiet oprogramowania

Bardziej szczegółowo

4 bity zarezerwowane dla przyszłych zastosowań 11 bitów określających źródło błędu 16 bitów określających rodzaj błędu.

4 bity zarezerwowane dla przyszłych zastosowań 11 bitów określających źródło błędu 16 bitów określających rodzaj błędu. Zgłaszanie błędów HRESULT Każda metoda interfejsu COM zwraca informację o błędzie w postaci typu HRESULT (long int). Struktura reprezentacji bitowej HRESULT podzielona jest na 4 sekcje: 1 bit błędu 4 bity

Bardziej szczegółowo

Programowanie pod Windows

Programowanie pod Windows Programowanie pod Windows Wersja 0.99 Uwaga: notatki są w fazie rozwoju. Brakujące elementy będą sukcesywnie uzupełniane. Dokument może być bez zgody autora rozpowszechniany, zabrania się jedynie czerpania

Bardziej szczegółowo

Allegro5 część 1 - Witaj Świecie! Projekt, inicjalizacja, tworzenie okna, czcionki. Autor: Kamil Krzyszczuk - C mons

Allegro5 część 1 - Witaj Świecie! Projekt, inicjalizacja, tworzenie okna, czcionki. Autor: Kamil Krzyszczuk - C mons Allegro5 część 1 - Witaj Świecie! Projekt, inicjalizacja, tworzenie okna, czcionki. Autor: Kamil Krzyszczuk - C mons 1.Wstęp Witam w pierwszej części mojego kursu za pomocą którego dowiesz się jak stworzyć

Bardziej szczegółowo

Instrukcja podstawowego uruchomienia sterownika PLC LSIS serii XGB XBC-DR20SU

Instrukcja podstawowego uruchomienia sterownika PLC LSIS serii XGB XBC-DR20SU Instrukcja podstawowego uruchomienia sterownika PLC LSIS serii XGB XBC-DR20SU Spis treści: 1. Instalacja oprogramowania XG5000 3 2. Tworzenie nowego projektu i ustawienia sterownika 7 3. Podłączenie sterownika

Bardziej szczegółowo

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

Bardziej szczegółowo

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian 1 / 12 Content list / Spis Treści 1. Hardware and software requirements, preparing device to upgrade Wymagania sprzętowe i programowe, przygotowanie urządzenia do aktualizacji 2. Installing drivers needed

Bardziej szczegółowo

1. Tworzenie nowego projektu.

1. Tworzenie nowego projektu. Załącznik do Instrukcji 1. Tworzenie nowego projektu. Wybieramy opcję z menu głównego New->QNX C Project. Wprowadzamy nazwę przechodzimy do następnego kroku NEXT. Wybieramy platformę docelową oraz warianty

Bardziej szczegółowo

Procedura zgłaszania problemów z obsługą oraz nieprawidłowości w funkcjonowaniu systemu PEFS 2007 w zakresie Programu Operacyjnego Kapitał Ludzki

Procedura zgłaszania problemów z obsługą oraz nieprawidłowości w funkcjonowaniu systemu PEFS 2007 w zakresie Programu Operacyjnego Kapitał Ludzki Procedura zgłaszania problemów z obsługą oraz nieprawidłowości w funkcjonowaniu systemu PEFS 2007 w zakresie Programu Operacyjnego Kapitał Ludzki (Wsparcie techniczne dla użytkowników Help Desk) Wersja

Bardziej szczegółowo

Programowanie w technologii.net wykład 4 Aplikacja i okna

Programowanie w technologii.net wykład 4 Aplikacja i okna Programowanie w technologii.net wykład 4 Aplikacja i okna 1/30 Aplikacja Aplikacja WPF jest reprezentowana przez instancję klasy System.Windows.Application. pilnuje ona kiedy program się uruchamia i kończy

Bardziej szczegółowo

Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio

Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio Podstawy programowania Ćwiczenie Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio Tematy ćwiczenia algorytm, opis języka programowania praca ze środowiskiem, formularz, obiekty

Bardziej szczegółowo

Instrukcja konfiguracji usługi Wirtualnej Sieci Prywatnej w systemie Mac OSX

Instrukcja konfiguracji usługi Wirtualnej Sieci Prywatnej w systemie Mac OSX UNIWERSYTETU BIBLIOTEKA IEGO UNIWERSYTETU IEGO Instrukcja konfiguracji usługi Wirtualnej Sieci Prywatnej w systemie Mac OSX 1. Make a new connection Open the System Preferences by going to the Apple menu

Bardziej szczegółowo

1 WSTĘP. Źródło : http://www.winapi.rox.pl/ 1.1 Wymagania i terminologia

1 WSTĘP. Źródło : http://www.winapi.rox.pl/ 1.1 Wymagania i terminologia 1 Źródło : http://www.winapi.rox.pl/ 1 WSTĘP 1.1 Wymagania i terminologia Zakładam, że do tej pory dobrze poznałeś języki C/C++. Potrafisz zrobić całkiem ciekawą aplikację wyświetlaną w środowisku konsolowym.

Bardziej szczegółowo

Zdarzenie Zachodzi gdy Kolejność zdarzeń Kolejność Zdarzenie Opis uwaga: CausesValidation True.

Zdarzenie Zachodzi gdy Kolejność zdarzeń Kolejność Zdarzenie Opis uwaga: CausesValidation True. Kolejny wykład w cyklu Akademii PC Kuriera poświęconej programowaniu w Visual Basic.NET rozpoczniemy od kontynuacji opisu znaczenia i roli zdarzeń w aplikacji. Z pierwszego odcinka uważny czytelnik zapamiętał

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Delphi podstawy programowania. Dialogi

Delphi podstawy programowania. Dialogi Delphi podstawy programowania Dialogi Olsztyn 2004 Dialogi Dialogi Komunikaty: 1. ShowMessage 2. ShowMessagePos 3. ShowMessageFmt 4. MessageBox 5. MessageDlg 6. MessageDlgPos Okna dialogowe: 1. InputBox

Bardziej szczegółowo

1. CZYM JEST SERIALIZACJA

1. CZYM JEST SERIALIZACJA SERIALIZACJA O CZYM POWIEMY? 1. Czym jest serializacja? 2. Jak przeprowadzić proces serializacji? 3. Jak przeprowadzić proces deserializacji? 4. Serializacja własnych klas. 5. Dobre praktyki. 6. SoapFormatter.

Bardziej szczegółowo

SPECYFIKACJA FUNKCJONALNA OPROGRAMOWANIA 11 marca 2014 XLZEBRAPRINTER

SPECYFIKACJA FUNKCJONALNA OPROGRAMOWANIA 11 marca 2014 XLZEBRAPRINTER XLZEBRAPRINTER Oprogramowanie XLZebraPrinter służy do wykonywania dowolnych wydruków etykiet (łącznie z możliwością wydruku kodów kreskowych 1D oraz 2D) na podstawie danych pochodzących bezpośrednio z

Bardziej szczegółowo

Programowanie niskopoziomowe

Programowanie niskopoziomowe Programowanie niskopoziomowe Programowanie niskopoziomowe w systemie operacyjnym oraz poza nim Tworzenie programu zawierającego procedury asemblerowe 1 Programowanie niskopoziomowe w systemie operacyjnym

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

Dokumentacja techniczna API systemu SimPay.pl

Dokumentacja techniczna API systemu SimPay.pl Wprowadzenie Dokumentacja techniczna API systemu SimPay.pl Wersja 1.0 z dnia 24.03.2015 r. API serwisu SimPay.pl opiera się o danych wysyłanych i zwracanych w formie JSON. W przypadku napotkania jakiegokolwiek

Bardziej szczegółowo

Smarty PHP. Leksykon kieszonkowy

Smarty PHP. Leksykon kieszonkowy IDZ DO PRZYK ADOWY ROZDZIA SPIS TREœCI KATALOG KSI EK KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG Smarty PHP. Leksykon kieszonkowy Autor: Daniel Bargie³ ISBN: 83-246-0676-9 Format: B6, stron: 112 TWÓJ KOSZYK

Bardziej szczegółowo

Viszio. SZARP v3.1. Adam Smyk. 1. Uruchamianie programu. SZARP http://www.szarp.org

Viszio. SZARP v3.1. Adam Smyk. 1. Uruchamianie programu. SZARP http://www.szarp.org SZARP http://www.szarp.org Viszio SZARP v3.1 Adam Smyk Program viszio wykorzystywany jest wyświetlania wartości paramterów w transparentnych oknach. Głównymi danymi dla viszio są: nazwa serwera, numer

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Systemy operacyjne na platformach mobilnych

Systemy operacyjne na platformach mobilnych Systemy operacyjne na platformach mobilnych Wykład 3 Grzegorz Jabłoński, Piotr Perek Katedra Mikroelektroniki i Technik Informatycznych Zagadnienia wykładu Menu opcji ListActivity własny widok własny adapter

Bardziej szczegółowo

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2 ( $%%) )'20 )*0) 1 / ) Jzyk C++ cz 3 Jarosław Gramacki Instytut Informatyki i Elektroniki # $$%%& ' ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )!" 2 # $$%%& ' ( $%%/,))3 ( %* 2 / 4 ( ( *' *''*,

Bardziej szczegółowo

X11R5. .Xresources. Pliki konfiguracyjne X-Windows. Zasada działania X11. .xinitrc. X protocol X server. X client. X library

X11R5. .Xresources. Pliki konfiguracyjne X-Windows. Zasada działania X11. .xinitrc. X protocol X server. X client. X library Pliki konguracyjne X-Windows.Xresources X11 -.Xresources,.xinitrc,.xsession OpenWindows -.Xdefaults,.desksetdefaults,.openwin-init,.openwin-menu XTerm*tek4014*fontLarge: 9x15 XTerm*tek4014*font2: 8x13

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo

Laboratorium 10 - Web Services

Laboratorium 10 - Web Services Laboratorium 10 - Web Services W ramach laboratorium zapoznamy się z koncepcją Web Service ów (odmiana point-to-point Web Service). W kolejnych krokach utworzony zostanie projekt, w którym wykorzystana

Bardziej szczegółowo

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Zagadnienia 1. Delegaty wiązane, właściwości indeksowane 2. Delegaty niewiązane 3. Nowa wersja kalkulatora, delegaty

Bardziej szczegółowo

Laboratorium Programowania Kart Elektronicznych

Laboratorium Programowania Kart Elektronicznych Laboratorium Programowania Kart Elektronicznych Programowanie BasicCard Marek Gosławski Przygotowanie do zajęć dokumentacja ZeitControl BasicCard środowisko programistyczne karta BasicCard Potrzebne wiadomości

Bardziej szczegółowo

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy) Procesy i shell. Polecenia ps, sleep, exit, jobs, bg, fg, top, kill, bash, tcsh, which, type, whereis, touch. Metaznak & i >>. Dowiązania miękkie i twarde. Proces jest programem, który jest wykonywany

Bardziej szczegółowo

Interfejs użytkownika (ang. User Interface, UI) w technice część urządzenia odpowiedzialna za interakcję z użytkownikiem

Interfejs użytkownika (ang. User Interface, UI) w technice część urządzenia odpowiedzialna za interakcję z użytkownikiem Interfejs użytkownika (ang. User Interface, UI) w technice część urządzenia odpowiedzialna za interakcję z użytkownikiem Dodawanie kontrolek i komponentów Podczas budowania bazującej na formularzach aplikacji

Bardziej szczegółowo

POLITYKA PRYWATNOŚCI / PRIVACY POLICY

POLITYKA PRYWATNOŚCI / PRIVACY POLICY POLITYKA PRYWATNOŚCI / PRIVACY POLICY TeleTrade DJ International Consulting Ltd Sierpień 2013 2011-2014 TeleTrade-DJ International Consulting Ltd. 1 Polityka Prywatności Privacy Policy Niniejsza Polityka

Bardziej szczegółowo

Rozdział II. Praca z systemem operacyjnym

Rozdział II. Praca z systemem operacyjnym Rozdział II Praca z systemem operacyjnym 55 Rozdział III - System operacyjny i jego hierarchia 2.2. System operacyjny i jego życie Jak już wiesz, wyróżniamy wiele odmian systemów operacyjnych, które różnią

Bardziej szczegółowo

Delphi Laboratorium 3

Delphi Laboratorium 3 Delphi Laboratorium 3 1. Procedury i funkcje Funkcja jest to wydzielony blok kodu, który wykonuje określoną czynność i zwraca wynik. Procedura jest to wydzielony blok kodu, który wykonuje określoną czynność,

Bardziej szczegółowo

PROGRAM: WYSZUKANIE LICZBY MAKSYMALNEJ

PROGRAM: WYSZUKANIE LICZBY MAKSYMALNEJ PROGRAM: WYSZUKANIE LICZBY MAKSYMALNEJ 1. Na dysku STUDENT we własnym folderze utwórz podfolder o nazwie: WarMax. 2. Uruchom program Delphi. 3. Zapamiętaj w folderze WarMax poszczególne pliki tworzące

Bardziej szczegółowo

Realizacja systemów wbudowanych (embeded systems) w strukturach PSoC (Programmable System on Chip)

Realizacja systemów wbudowanych (embeded systems) w strukturach PSoC (Programmable System on Chip) Realizacja systemów wbudowanych (embeded systems) w strukturach PSoC (Programmable System on Chip) Embeded systems Architektura układów PSoC (Cypress) Możliwości bloków cyfrowych i analogowych Narzędzia

Bardziej szczegółowo

Zaawansowane Aplikacje Internetowe

Zaawansowane Aplikacje Internetowe Zaawansowane Aplikacje Internetowe Katedra Mikroelektroniki i Technik Informatycznych Politechniki Łódzkiej ul. Wólczanska 221/223 budynek B18, 90-924 Łódź mgr inż. Robert Ritter 10. Spring WebFlow Konfiguracja

Bardziej szczegółowo

klikamy Next 4. Wybieramy zgodność z systemem Virtual Machine hardware compatibility z listy zaznaczamy Workstation 6 Next 5.

klikamy Next 4. Wybieramy zgodność z systemem Virtual Machine hardware compatibility z listy zaznaczamy Workstation 6 Next 5. Instalacja Novell NetWare 5 przygotowanie do instalacji 1. Włożyć płytę do napędu 2. Wybieramy New Virtual Machine ( uruchamiamy ją) 3. Wybieramy typ instalacji Custom (what type of configuration do you

Bardziej szczegółowo

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44 Zaawansowane aplikacje internetowe EJB 1 Rozróżniamy dwa rodzaje beanów sesyjnych: Stateless Statefull Celem tego laboratorium jest zbadanie różnic funkcjonalnych tych dwóch rodzajów beanów. Poszczególne

Bardziej szczegółowo

Politechnika Wrocławska Urządzenia peryferyjne sprawozdanie z laboratorium 1. Zadania do wykonania 2. Wstęp teoretyczny 3. Realizacja ćwiczenia

Politechnika Wrocławska Urządzenia peryferyjne sprawozdanie z laboratorium 1. Zadania do wykonania 2. Wstęp teoretyczny 3. Realizacja ćwiczenia Politechnika Wrocławska Urządzenia peryferyjne sprawozdanie z laboratorium Ćwiczenie 12: Kamera USB 02.01.12 r. Michał Kaczara (181132) Pn / TN, 14:15 17:00 Prowadzący: dr inż. Jarosław Mierzwa 1. Zadania

Bardziej szczegółowo

Wykład 6 Dziedziczenie cd., pliki

Wykład 6 Dziedziczenie cd., pliki Wykład 6 Dziedziczenie cd., pliki Autor: Zofia Kruczkiewicz 1. Dziedziczenie cd. 2. Pliki - serializacja Zagadnienia 1. Dziedziczenie aplikacja Kalkultory_2 typu Windows Forms prezentująca dziedziczenie

Bardziej szczegółowo

Cele. Definiowanie wyzwalaczy

Cele. Definiowanie wyzwalaczy WYZWALACZE Definiowanie wyzwalaczy Cele Wyjaśnić cel istnienia wyzwalaczy Przedyskutować zalety wyzwalaczy Wymienić i opisać cztery typy wyzwalaczy wspieranych przez Adaptive Server Anywhere Opisać dwa

Bardziej szczegółowo

Sieciowa komunikacja procesów - XDR i RPC

Sieciowa komunikacja procesów - XDR i RPC *** abc.x Przyklad pliku RPCGEN Obliczanie sumy, roznicy i iloczynu dwoch liczb calkowitych *** ************************************ Wywolanie procedury odleglej dopuszcza tylko jeden argument wywolania

Bardziej szczegółowo

Architektura komunikacji

Architektura komunikacji isqlplus Agenda 1 Rozwój produktu isql*plus ma swoje początki w wersji Oracle 8i, kiedy jest zakończony pierwszy etap prac nad projektem. Interfejs użytkownika jest cienki klient - przeglądarka internetowa,

Bardziej szczegółowo

Wybór urządzenia/ Scanner Selection Screen: Skrócony Opis Programu MetroSet 2

Wybór urządzenia/ Scanner Selection Screen: Skrócony Opis Programu MetroSet 2 Wybór urządzenia/ Scanner Selection Screen: Skrócony Opis Programu MetroSet 2 Ekran konfiguracji: Zrzut ekranu przedstawia menu konfiguracji skanera. Możemy stąd zmieniać ustawienia urządzenia, pobierać

Bardziej szczegółowo

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz Aplikacja internetowa zbudowana w oparciu o środowisko Visual Web Java Server Faces. Zarządzanie obiektami typu SesionBeans, RequestBeen i ApplicationBeans, Laboratorium 1 Wzorce oprogramowania lab1, Okres

Bardziej szczegółowo

Aktualizacja Oprogramowania Firmowego (Fleszowanie) Microprocessor Firmware Upgrade (Firmware downloading)

Aktualizacja Oprogramowania Firmowego (Fleszowanie) Microprocessor Firmware Upgrade (Firmware downloading) Aktualizacja Oprogramowania Firmowego (Fleszowanie) Microprocessor Firmware Upgrade (Firmware downloading) ROGER sp.j. Gościszewo 59 82-416 Gościszewo Poland tel. 055 2720132 fax 055 2720133 www.roger.pl

Bardziej szczegółowo

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard

Bardziej szczegółowo