1 / 17

Standardowe kontrolki (1)

Standardowe kontrolki (1). Pole edycyjne Przykład: case WM_CREATE: { HFONT hfDefault; HWND hEdit; hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "",

arnav
Download Presentation

Standardowe kontrolki (1)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Standardowe kontrolki (1) • Pole edycyjne • Przykład: • case WM_CREATE: • { • HFONT hfDefault; • HWND hEdit; • hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", • WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL, • 0, 0, 100, 100, hwnd, (HMENU)1000, GetModuleHandle(NULL), NULL); • if(hEdit == NULL) • MessageBox(hwnd, "Could not create edit box.", "Error", MB_OK | MB_ICONERROR); • hfDefault = GetStockObject(DEFAULT_GUI_FONT); • SendMessage(hEdit, WM_SETFONT, (WPARAM)hfDefault, MAKELPARAM(FALSE, 0)); • } • Zadania: • 1) Sprawdź działanie programu po usunięciu wybranych flag związanych z trzecim parametrem funkcji CreateWindowEx (parametry o nazwach WS_*)

  2. Standardowe kontrolki (2) • Lista • Przykład: • case WM_CREATE: • { • HWND hLB; • HFONT hfDefault; • hLB = CreateWindowEx(WS_EX_CLIENTEDGE, "LISTBOX", "", • WS_CHILDWINDOW | WS_VISIBLE | WS_BORDER|LBS_SORT, • 10, 10, 200, 60, hwnd, (HMENU)9004, GetModuleHandle(NULL), NULL); • if(hLB == NULL) • MessageBox(hwnd, "Could not create list box.", "Error", MB_OK | MB_ICONERROR); • SendMessage (hLB, LB_INSERTSTRING, (WPARAM) -1, (LPARAM) "Opcja 1"); • SendMessage (hLB, LB_INSERTSTRING, (WPARAM) -1, (LPARAM) "Opcja 2"); • SendMessage (hLB, LB_INSERTSTRING, (WPARAM) -1, (LPARAM) "Opcja 3"); • hfDefault = GetStockObject(DEFAULT_GUI_FONT); • SendMessage(hLB, WM_SETFONT, (WPARAM)hfDefault, MAKELPARAM(FALSE, 0)); • break; • } • Zadanie • 1) Dodaj do aplikacji listę zawierającą opcje związane tematycznie z Twoim semestralnym programem zaliczeniowym.

  3. Standardowe kontrolki (3) • Przyciski • Przykład: • CreateWindow("button", "Przycisk", • WS_CHILD | WS_VISIBLE, 30,100,100,40, hwnd, (HMENU)101, • GetModuleHandle(NULL), NULL); • Przyciski radio • Przykład: • CreateWindow("button", "Przycisk", WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON, 30,150,100,20, hwnd, (HMENU)105, GetModuleHandle(NULL), NULL); • Pasek przewijania • Przykład: • CreateWindow("SCROLLBAR", NULL, WS_CHILD | WS_VISIBLE • | SBS_VERT, 0, 0, 15, 200, hwnd, (HMENU)100, GetModuleHandle(NULL), NULL);

  4. Standardowe kontrolki (4) • Zakładki • Przykład: • case WM_CREATE: • { • HWND hTab; • InitCommonControls(); • hTab = CreateWindowEx(0, WC_TABCONTROL, 0, WS_CHILD | WS_VISIBLE | TCS_FIXEDWIDTH, • 0, 0, 540, 340, hwnd, (HMENU)10, GetModuleHandle(NULL), NULL); • TCITEM tie, tie2; • tie.mask = TCIF_TEXT ; • tie.pszText = "Zakładka 1."; • TabCtrl_InsertItem(hTab, 0, &tie); • tie2.mask = TCIF_TEXT ; • tie2.pszText = "Zakładka 2."; • TabCtrl_InsertItem(hTab, 1, &tie2); • break; • }

  5. Standardowe kontrolki (5) Zadania: 1) Dodaj do aplikacji kilka przycisków związanych tematycznie z semestralnym programem zaliczeniowym. 2) Dodaj grupę przycisków radio zawierającą opcję wyboru związaną z programem zaliczeniowym. 3) Dodaj pionowy pasek przewijania. 4) Dodaj do aplikacji listę, której pozycje są uzupełniane wartościami z pliku

  6. Pasek statusu (1) • Pasek statusu • Wymaga podłączenia pliku nagłówkowego commctrl.h oraz dodania biblioteki lib/libcomctl32.a (menu „Project\ Project Options”, zakładka „Parameters”, przycisk „Add Library or Object”) • Przykład: • InitCommonControls(); • HWND hStatus; • int statwidths[] = {100, -1}; • hStatus = CreateWindowEx(0, STATUSCLASSNAME, NULL, • WS_CHILD | WS_VISIBLE | SBARS_SIZEGRIP , 0, 0, 0, 0, • hwnd, (HMENU)108, GetModuleHandle(NULL), NULL); • SendMessage(hStatus, SB_SETPARTS, sizeof(statwidths)/sizeof(int), (LPARAM)statwidths); • SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)"Tekst paska statusowego"); • Zadanie • 1) Dodaj pasek statusu do swojej aplikacji i wyświetl w nim aktualną datę i godzinę

  7. Zadania 1) Napisz funkcję obliczającą czas pozostały do końca zajęć 2) Napisz program obliczający harmonogram spłat kredytu. Użytkownik podaje wysokość stopy procentowej, czas spłaty i kwotę kredytu

  8. #include <stdio.h> #include <stdlib.h> typedef struct{ char imie[30]; char nazwisko[50]; int rokUrodzenia; char PESEL[20]; } klient; void zapisz(klient pDoZapisu) { FILE *plik; char a[100], sciezka[100] = "C:\\temp\\abc.txt" ; if ((plik = fopen(sciezka, "a")) == NULL) { printf("Nie mozna otworzyc %s\n", sciezka); system("PAUSE"); exit(1); } fprintf(plik, "PESEL:%s\n", pDoZapisu.PESEL); fprintf(plik, "Imie:%s\n", pDoZapisu.imie); fprintf(plik, "Nazwisko:%s\n", pDoZapisu.nazwisko); fprintf(plik, "Rok urodzenia:%d\n", pDoZapisu.rokUrodzenia); fclose(plik); } Scanf dla ciągów ze spacjami (1)

  9. void dodaj(){ klient nowy; getchar(); printf("Wprowadz PESEL:"); scanf("%[^\n]", nowy.PESEL); getchar(); printf("Wprowadz imie:"); scanf("%[^\n]", nowy.imie); getchar(); printf("Wprowadz nazwisko:"); scanf("%[^\n]", nowy.nazwisko); getchar(); printf("Wprowadz rok urodzenia:"); scanf("%d", &nowy.rokUrodzenia); zapisz(nowy); }; void edytuj(){}; void usun(){}; void wyszukaj(){}; void zakoncz(){}; Scanf dla ciągów ze spacjami (2)

  10. int main(int argc, char *argv[]){ int option; while(option!=0){ printf("Wybierz opcję:\n1 - Dodaj kienta\n2 - Edytuj klienta\n3 - Usuń klienta\n"); printf("4 - Wyszukaj klienta\n0 - Zakończ\n"); scanf("%d", &option); switch(option){ case 0: zakoncz(); break; case 1: dodaj(); break; case 2: edytuj(); break; case 3: usun(); break; case 4: wyszukaj(); break; } } system("PAUSE"); return 0; } Scanf dla ciągów ze spacjami (3)

  11. #include <stdio.h> #include <stdlib.h> #include <time.h> int main(int argc, char *argv[]) { time_t start; char data[100]; struct tm* x; int a; while(1){ system("CLS"); time(&start); x = localtime(&start); //a = strftime(data, sizeof(data), "%j %d %m %Y", x); a = strftime(data, sizeof(data), "%H:%M:%S", x); printf("%s\n", data); sleep(1000); } system("PAUSE"); return 0; } Funkcje związane z czasem (1)

  12. Znaczniki formatu: • %a - skrót dnia tygodnia • %A - pełna nazwa dnia tygodnia • %b - skrót miesiąca • %B - pełna nazwa miesiąca • %c - data i czas • %d - dzień miesiąca zapisany w dwóch cyfrach (01-31) • %D - data w formacie %m/%d/%y • %e - dzień miesiąca (1-31) • %H - godzina (00-23) • %I - godzina (01-12) • %j - dzień roku (001-366) • %k - godzina (0-23) • %l - godzina (0-12) • %m - miesiąc (01-12) • %M - minuta (00-59) • %n - nowa linia • %p - AM lub PM • %S - sekunda (00-59) • %U - numer tygodnia w roku (00-52) • %w - dzień tygodnia (0-6) • %x - pełna data • %y - rok bez wieku (00-99) • %Y - rok • %Z - strefa czasowa • %% - znak % Funkcje związane z czasem (2)

  13. #include <stdio.h> #include <stdlib.h> void dirList(char* pDir){ char command[200] = "tree "; strcat(command, pDir); system(command); } void createDir(char* pDir){ char command[200] = "md "; strcat(command, pDir); system(command); } void systemTime(){ system("TIME"); } Funkcja system i komendy MS DOS(1)

  14. int main(int argc, char *argv[]) { createDir("c:\\2009-01-10"); dirList("c:\\DB"); systemTime(); system("PAUSE"); return 0; } Funkcja system i komendy MS DOS(2)

  15. #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int wylosowane, i; srand(time(NULL)); //NIE np. srand(100); printf("W dzisiejszym losowaniu padly numery:\n"); for(i = 0; i < 6; i++){ wylosowane = rand()%48; printf("%d\n", wylosowane); } system("PAUSE"); return 0; } Generowanie liczb pseudolosowych

  16. #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ char option[10]; int iOption; while(option!=0){ printf("Wybierz opcję:\n1 - Dodaj kienta\n2 - Edytuj klienta\n3 - Usuń klienta\n"); printf("4 - Wyszukaj klienta\n0 - Zakończ\n"); scanf("%s", option); if(!isdigit(option)){ printf("Wybierz poprawna opcje\n"); } else { iOption = atoi(option); switch(iOption){ case 0: printf("Zakoncz\n"); break; case 1: printf("Dodaj\n"); break; case 2: printf("Edytuj\n"); break; case 3: printf("Usun\n"); break; case 4: printf("Zakoncz\n"); break; } } system("CLS"); } system("PAUSE"); return 0; } Interpretacja liczbowa ciągów znaków

  17. Certyfikaty z języków programowania oferowane przykładowo przez: • - www.ucertify.com/ • - www.compendium.pl • - www.altkom.pl • - www.combidata.pl • 2) Udział w zawodach TopCoder (www.topcoder.com) • Firma zajmująca się organizacją konkursów programistycznych. Zwycięzcy otrzymują nagrody pieniężne. Firma prowadzi ranking uczestników. • www.google.com/codesearch • Analiza kodu OpenSource • Działalność w kołach naukowych informatyki, np.: • - kni.ae.krakow.pl • - kernel.agh.edu.pl Dalszy rozwój (1)

More Related