Open() otwiera plik do realizacji kolejnych operacji. W def funkcji podajemy nazwe pliku oraz sposób otwarcia. O_CREAT – jeśli nie ma pliku to go tworzyO_TRUNC – jeśli plik istnieje i jest zwykłym plikiem i tryb otwarcia pozwala na zapis to ten plik zostanie obcięty do dl. O_RDONLY albo O_WONLY analog otworza w trybue tylko do odczytu albo zapisu.Close() wskazującej na plik. Zamyka deskryptor pliku tak, ze nie odnosi się pozniej do zadnego pliku i może być ponownie uzyty. W przypadku niepowiodzenia zwraca -1 i odpowieni ErnoRead() wskazującej na otwarty do czytania plik z informacja o liczbie danych (bajtow), które chcemy odczytac (0 End). Może się zdarzyc ze f-cja odczyta mniejsza ilość danych niż rzadalismy, (chwilowo dostępnych jest mniej bajtow, lub read zostalo przerwane sygnalem).Write()wskazującej na plik z zadana liczba bajtow, która chcemy zapisac. Może zdarzyc się ze f-cja zapisala mniejsza ilość danych niż chcelismy. POSIX wymusza by read które może pojawic się po zakończeniu write zwróciło nowe dane. Po pomyślnym zakończeniu zwracana jest l zap bajtow (0 nic
Kontrolkia) Każda kontrolka is oddzielnym oknem-potomne wzgl tego gdzie jest b) Kontrolki dodajemy korzystając z pliku z zasobami, albo tworzymy programowo, jak inne okna, za pomocą CreateWindowEx(), jako nazwę klasy okna podając jedną z predefiniowanych nazw (Button, Combox) Przy tworzeniu okna kontrolki do opcji stylu dodajemy WS_CHILD.c) Komunikujemy się z nimi wysyłając komunikaty WM_SETTEXTd) Kontrolę nad wyglądem przycisku zapewniają nam style przycisku,które podajemy podczas tworzenia okna-przycisku (Checkbox,top,icon)Stan przycisku sprawdzamy BM_GETCHECK albo BM_GETSTATE, ustawić wysyłając komunikat BM_SETCHECK albo BM_SETSTATE. focus state: (ma focus, bądź nie). push state: (jest właśie wciskany, bądź nie) check state: (zaznaczony, odznaczony i dodatkowo nieokreślony).BS_PUSHBUTTON – zwykly buttonmusi mieć styl WS_NOTIFY jeśli chce dostac szczegółowe powiadomienia
MyszWM_MOUSEMOVE – sygnalizuje, że nastąpił ruch myszy nad obszaremklienckim naszego okna. Każda zmiana współrzędnychkursora myszy generuje komunikat, ale jeśli okno nie nadąża zprzetwarzaniem komunikatów, system usuwa je z kolejki. Wkonsekwencji liczba zarejestrowanych przez nas komunikatówzależy od tego, jak szybko je obsługujemy. Im szybciej sięwykonuje procedura obsługi komunikatu WM_MOUSEMOVE, tymprecyzyjniej śledzimy ruch myszy (dostając więcej komunikatów).WM_MOUSEWHEEL – pokręcono kółkiem myszy. WM_MOUSEACTIVATE – okno zostało aktywowane kliknięciemmyszki. Na ogół ta wiadomość jest dla nas oczywista i niereagujemy na nią, ale możemy to zrobić (np. jeśli nie godzimy sięna aktywowanie).
Hover/leave Dwa dodatkowe komunikaty: WM_MOUSEHOVER i WM_MOUSELEAVE są przekazywane do okna, tylko jeśli sobie tego zażyczymy. Mówią one o tym, że kursor myszki przebywał (co najmniej) przez pewien zadany czas w pewnym zadanym prostokącie (hover) i że go opuścił (leave).
Przechwytywanie (capture) Normalnie komunikaty myszy trafiają
do okna, w którym znajduje się punkt istotny (hot-spot) kursora w
danej chwili. Czasem chcemy zmienić to zachowanie, wówczas
komunikat o puszczeniu klawisza normalnie nie dotarłby do naszego
okna, ponieważ hot-spot kursora znajduje się poza oknem.
Clipping. ograniczamy ruchy myszki do
pewnego obszaru. Za pomocą funkcji ClipCursor() możemy zażądać ograniczenia położenia
kursora do zadanego prostokąta.
Przeciągnij-i-upuść (drag-and-drop). Dosyć skomplikowane. Łatwo
a to można obsłużyć przeciąganie plików do okna naszej
aplikacji. raz wywołać DragAcceptFiles(), żeby zgłosić, że chcemy
być odbiorcą przeciąganych plików
inf4