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 Report

Transcript 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