Zasoby aplikacji Programowanie w Środowisku Windows Plan wykładu Koncepcja zasobów Zasady korzystania Ikony, kursory, bitmapy Teksty Menu Akceleratory Programowanie w Środowisku Windows Koncepcja zasobów Elementy interfejsu użytkownika Ikony, bitmapy, okna dialogowe Edycja w.
Download ReportTranscript Zasoby aplikacji Programowanie w Środowisku Windows Plan wykładu Koncepcja zasobów Zasady korzystania Ikony, kursory, bitmapy Teksty Menu Akceleratory Programowanie w Środowisku Windows Koncepcja zasobów Elementy interfejsu użytkownika Ikony, bitmapy, okna dialogowe Edycja w.
Slide 1
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 2
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 3
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 4
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 5
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 6
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 7
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 8
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 9
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 10
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 11
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 12
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 13
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 14
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 15
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 16
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 17
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 18
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 19
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 20
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 21
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 22
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 23
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 2
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 3
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 4
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 5
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 6
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 7
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 8
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 9
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 10
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 11
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 12
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 13
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 14
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 15
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 16
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 17
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 18
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 19
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 20
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 21
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 22
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows
Slide 23
Zasoby aplikacji
Programowanie w Środowisku Windows
Plan wykładu
Koncepcja zasobów
Zasady korzystania
Ikony, kursory, bitmapy
Teksty
Menu
Akceleratory
Programowanie w Środowisku Windows
Koncepcja zasobów
Elementy interfejsu użytkownika
Ikony, bitmapy, okna dialogowe
Edycja w środowisku
Wkompilowane w exe / dll
Identyfikatory
Pliki
.ico, .rc, resource.h
Programowanie w Środowisku Windows
Ikony
Edycja w zasobach
Wielkość
Identyfikator
Ładowanie z zasobów
HICON, LoadIcon()
MAKEINTRESOURCE
Nazwa ikony jako tekst (np. „Icon1”)
Tworzenie
CreateIcon(), DestroyIcon()
Programowanie w Środowisku Windows
Ikony
Ikona okna
32 x 32 i 16 x 16
Skalowanie - przykład
Rejestracja klasy
Zmiana ikony (w klasie)
SetClassLong()
GCL_HICON
Rysowanie w kontekście
DrawIcon()
Programowanie w Środowisku Windows
Kursory
HCURSOR
Edycja w zasobach
Definicja ‘hot spot’
CreateCursor() / Destroy Cursor()
Mapa AND i XOR
LoadCursor()
SetCursor()
ShowCursor()
Programowanie w Środowisku Windows
Bitmapy
LoadBitmap()
Bitmapa tylko do odczytu
Wykorzystanie bitmap
Pędzle, karetka
LoadImage()
Funkcja uniwersalna dla kursorów, ikon
i bitmap
Programowanie w Środowisku Windows
Tekst
Wersje językowe
Teksty w zasobach
Tabele tekstów (String Table)
Ograniczenie do 4097 znaków
Rozpoznawane znaki \n i \t
Stosowanie znaków sterujących (%s)
LoadString()
Ograniczenie długości bufora
Programowanie w Środowisku Windows
Zasoby definiowane
Dowolny format
Pliki binarne
LoadResource()
FindResource()
Zwraca uchwyt umożliwiający ładowanie
Ładowanie do pamięci
LockResource()
FreeResource()
Programowanie w Środowisku Windows
Menu
Rodzaje menu
Menu okna
Menu systemowe
Menu kontekstowe
Definiowanie w zasobach
Przykład...
Znak & i \t
Modyfikowane dynamicznie
Programowanie w Środowisku Windows
Menu
LoadMenu()
Sposoby ustawiania
Rejestracja klasy
CreateWindow()
SetMenu() – dynamiczne
Sterowanie elementami
GetMenu() / GetSystemMenu()
CheckMenuItem() MF_CHECKED / MF_UNCHECKED
EnableMenuItem() MF_ENABLED / MF_GRAYED
Programowanie w Środowisku Windows
Menu – komunikaty
WM_INITMENU
Menu kliknięte po raz pierwszy
WM_INITMENUPOPUP
Odświeżenie stanu pozycji (dostępność, wybór)
Przykład...
WM_MENUSELECT
Śledzenie, dynamiczna pomoc
lParam – HMENU
wParam – wybrana pozycja + flagi
Programowanie w Środowisku Windows
Menu – komunikaty
WM_COMMAND
LOWORD(wParam) – identyfikator
HIWORD(wParam) – 0 dla menu, 1 dla
akceleratora
lParam – 0 dla menu (uchwyt kontrolki)
Programowanie w Środowisku Windows
Menu – komunikaty
WM_SYSCOMMAND
Menu systemowe
wParam – ID akcji (patrz MSDN)
lParam – wsp. myszy / -1 dla
akceleratora / 0 dla pozostałych
Przekazywać do DefWindowProc()
Programowanie w Środowisku Windows
Menu – tworzenie
Tworzenie ręczne
CreateMenu()
CreatePopupMenu()
AppendMenu()
MF_POPUP, MF_STRING, MF_SEPARATOR
MF_CHECKED, MF_GRAYED, itd.
Menu systemowe
GetSystemMenu()
Programowanie w Środowisku Windows
Menu – modyfikacja
Funkcje dynamicznej modyfikacji
AppendMenu()
DeleteMenu()
InsertMenu()
ModifyMenu()
RemoveMenu() – nie usuwa popup
Programowanie w Środowisku Windows
Menu – właściwości
GetMenuItemID()
GetMenuItemCount()
GetMenuItemInfo()
GetMenuState()
GetMenuString()
Programowanie w Środowisku Windows
Menu kontekstowe
GetSubMenu()
Uchwyt do podmenu
TrackPopupMenu()
Wyświetlenie podmenu
Współrzędne ekranu
Uchwyt okna, które otrzyma
WM_COMMAND
Programowanie w Środowisku Windows
Akceleratory
Zasada działania
Zachowanie standardu
Zasób – tablica akceleratorów
Nazwa
Edycja zasobów – zasady
ASCII / klawisze wirtualne
Ctrl+A = ^A
Programowanie w Środowisku Windows
Akceleratory
Ładowanie zasobu
HACCEL
LoadAccelerators()
Tłumaczenie komunikatów
TranslateAccelerator()
Klawiatura -> WM_COMMAND
Klawiatura -> WM_SYSCOMMAND
Bezpośrednie wywołanie funkcji obsługi
komunikatów
Programowanie w Środowisku Windows
Akceleratory
Wskazanie okna obsługującego
WM_COMMAND
Symulacja wyboru opcji menu
Ta sama kolejność komunikatów
Opcje zaszarzone są filtrowane
Programowanie w Środowisku Windows
Podsumowanie
Zasoby – oddzielenie projektu GUI od
funkcjonalności
Wersje językowe / graficzne
Akceleratory – zwiększają
użytkowalność aplikacji
Programowanie w Środowisku Windows
Dziękuję za uwagę!
Programowanie w Środowisku Windows