Bdy:
  Dokumentacja:
  - brak opisu TN_ROTATE

  Program:
  - bd w TM_CALCNEWRECT, TM_QUERYWIDTH, TM_QUERYHEIGHT.
    komunikaty nie uwzgldniaj przycisku "Rotate".
  - obiekty nie s justowane porodku paska:
    w pionie dla poziomych paskw, w poziomie dla pionowych paskw narzdzi.

*******************************
Style paska narzdzi:

	Sterowanie rozmieszczeniem obiektw w momencie gdy nie mieszcz si na pasku:
TBS_STANDARD	Obiekty nie mieszczce si s obcinane.

TBS_SCROLLABLE  Gdy obiekty nie mieszcz si, pasek wywietla przyciski umoliwiajce przewijania zawartoci paska narzdzi (jeszcze nie dziaa).

TBS_MULTILINE	Obiekty nie mieszczce si zostaj przeniesione do nowej linii (jeszcze nie dziaa).

TBS_MOVEWITHOWNER 	Pasek w stanie floating jest przesuwany wraz z wacicelem.

TBS_ENABLEMINIMIZE      Uycie tej opcji uaktywnia minimalizacj okna za pomoc myszy (kliknicie na pasku tytuu powoduje minimalizacj i maksymalizacj).

TBS_MOVEBUTTON 		Pasek wywietla przycisk (po prawej stronie), ktry umoliwia przesuwanie go za pomoc myszy.

TBS_FIXBUTTON      	Na przycisku przesuwania paska pojawia si dodatkowe pole (trjkcik) umoliwiajcy odklejanie i przyklejanie paska narzdzi do okna rodzicielskiego.

TBS_ROTATEBUTTON    	Pasek narzdzi wywietla przycisk umoliwiajcy obracanie paska narzdzi za pomoc myszy.



*******************************
Parametry prezentacji i standardowe kolory.


*******************************
Identyfikatory wewntrznych okien potomnych paska narzdzi.


*******************************
Struktury danych:

typedef struct _TOOLINFO
{ USHORT  cb;                 // Rozmiar struktury w bajtach
  USHORT  flToolAttrs;        // Atrybuty okna
  USHORT  usMaxLength;        // Maksymalna dugo paska narzdzi
} TOOLINFO;

typedef struct _TOOLADJ
{ HWND   hwndToolBar;         // Uchwyt paska narzdzi
  HWND   hwndParent;          // Uchwyt proponowanego okna rodzicielskiego
  RECTL  rclSizePos;          // Proponowana pozycja i rozmiary paska
  ULONG  flAttrs;             // Proponowane atrybuty paska
  ULONG  flState;             // Poprzedni stan paska narzdzi (dla TN_AUTOSIZE - aktualny)
} TOOLADJ;

typedef struct _TOOLTRACK
{ HWND   hwndToolBar;         // Uchwyt paska narzdzi
  HWND   hwndParent;          // Uchwyt okna rodzicielskiego
  RECTL  rclSizePos;          // Rozmiar i pozycja paska narzdzi wzgldem okna rodzicielskiego
  RECTL  rclBoundary;         // Obszar ruchu (wewntrz okna rodzicielskiego)
  ULONG  flAttrs;             // Atrybuty paska
  ULONG  flState;             // Aktualny stan paska narzdzi
} TOOLTRACK;

typedef struct _TOOLOBJ
{ ULONG   iPosition;          // Pooenie obiektu na pasku narzdzi (numer kolejny)
  ULONG   ulGroup;            // Grupa do ktrej naley obiekt (wane tylko dla przyciskw)
  ULONG   flAttribute;        // Dodatkowe atrybuty obiektu
  ULONG   cx, cy;             // Pocztkowe wymiary obiektu (nie dotyczy przyciskw TBO_BUTTON)
  ULONG   id;                 // Identyfikator obiektu
  ULONG   ulUser;             // Pole do wykorzystania przez uytkownika
} TOOLOBJ;

	Struktura ta jest wykorzystywana przez komonikaty TM_INSERTOBJECT, TM_QUERYOBJECT i TM_SETOBJECT. Jej poszczeglne pola zawieraj nastujce wartoci:

 - iPosition	Pooenie obiektu na pasku narzdzi, liczone od pocztku paska. Podczas dodawania obiektu mona w tym polu poda TB_END, co spowoduje dodanie obiektu na kocu.

 - ulGroup	Grupa obiektw. Pole to ma znaczenie tylko dla obiektw utowrzonych z atrybutami TBO_BUTTON i TBO_STDBUTTON, okrela zachowanie grupy przyciskw. Podczas dodawania obiektu za pomoc TM_INSERTOBJECT lub zmiany parametrw obiektu za pomoc TM_SETOBJECT, mona zmieni styl caej grupy, co wpynie na zachowanie wszystkich przyciskw nalecych do danej grupy. Jeli w polu flAttributes uyjemy:

  TBO_PUSHBUTTON  - przyciski nalece do grupy bd mogy by naciskane niezlenie. 

  TBO_CHECKBOX 	  - przyciski mona naciska niezalenie, przy czym po naciniciu przycisk pozostaje wcinity. Aby go zwolni naley nacisn go jeszcze raz. Kilka przyciskw na raz moe zostawa w stanie wcinitym.

  TBO_RADIOBUTTON - tylko jeden przycisk w grupie moe zosta nacinity - pozostae automatycznie zmieniaj swj stan na nienacinity.
	Jeeli nie uyjemy adnego z powyszych stylw, to zostaje zachowany dotychczasowy styl grupy. Jeeli podczas dodawania przyciskw nie uylimy adnego ze stylw, to automatycznie zostaje przyjty TBO_PUSHBUTTON.
	Przyciski nalece do grupy nie musz do siebie przylega.

- flAttribute	Oprcz stylw sterujcych zachowaniem grup przyciskw do dyspozycji s nastpujce style:
Podstawowe typy obiektw:
  TBO_STDWINDOW		okno kontrolne nie obsugiwane w szczeglny sposb przez pasek narzdzi,
  TBO_BUTTON		przycisk (WC_WINBUTTON) w peni wspomagany przez pasek,
  TBO_STDBUTON		jak wyej (WC_BUTTON) oprcz automatycznego ustalania wymiarw,
  TBO_SEPARTOR		separator.
	Stylu TBO_STDBUTTON mona take uy dla okien WC_WINBUTTON, nie bd one wtedy automatycznie skalowane.

Pozycjonowanie obiektw:
  TBO_BEGINALIGN 	obiekt jest justowany od pocztku paska narzdzi,
  TBO_ENDALIGN   	obiekt jest justowany od koca paska narzdzi,
  TBO_CENTERALIGN	obiekt jest centrowany,

Oglny stan obiektw:
  TBO_HIDE	  	obiekt jest ukryty
  TBO_DISABLE		obiekt jest zablokowany

Style separatorw:
  SPS_FLAT		paski separator - odstp w kolorze ta,
  SPS_LINE		linia w kolorze PP_BORDERDARKCOLOR
  SPS_CONCAVE		wklsa linia 3D
  SPS_CONVEX		wypuka linia 3D

- cx, cy	Wymiary obiektu. Pola ignorowane w przypadku obiektw stylu TBO_BUTTON, dla ktrych wymiary s ustalane automatycznie, oraz w przypadku separatorw, ktre zapewniaj odstp o szeroko 5 pikseli.

- id		Identyfikator obiektu. Powinien by unikalny dla wszystkich obiektw umieszczonych na pasku narzdzi, a take dla wszystkich obiektw ktre wstawiaj komunikaty WM_COMMAND, WM_HELP i WM_SYSCOMMAND do kolejki komunikatw tego samego waciciela.
	Jeeli np. okno hwnd posiada pasek narzdzi, na ktrym s umieszczone obiekty o identyfikatorach np. 100, 101 i 102, to okno hwnd nie moe ju posiada innych obiektw (np. przyciskw) o tych samych identyfikatorach. Podobnie, inne paski narzdzi nalece do okna hwnd nie powinny posiada obiektw o tych samych identyfikatorach.

- ulUser	Dowolne dane dostarczone przez uytkownika (np. wskanik do struktur danych skojarzonych z obiektem).





typedef struct _TOOLWIN
{ PSZ     pszClass;           // Klasa tworzonego okna
  PSZ     pszName;            // Tekst zapisany w oknie (window text)
  ULONG   flStyle;            // Styl tworzonego okna
  PVOID   pCtlData;           // Wskanik do danych class-specific
  PVOID   pPresParams;        // Parametry prezentacji okna
} TOOLWIN;

	Struktura ta uzupenia informacje przekazane za porednictwem struktury TOOLOBJ, dostarczajc pozostaych danych niezbdnych do utworzenia okna na pasku narzdzi:
 - pszClass	Klasa tworzonego okna potomnego,
 - pszName	Tekst wywietlany w oknie,
 - flStyle	Styl tworzonego okna,
 - pCtlData	Wskanik do danych Class-Specific,
 - pPresParams	Wskanik do parametrw prezentacji tworzonego okna.
	Struktura ta jest uywana tylko przez komunikat TM_INSERTOBJECT. Nie jest wymagana podczas tworzenia separatorw.


*******************************
Kody potwierdze wysyane wraz z WM_CONTROL

	TN_AUTOSIZE

	Potwierdzenie to, jest generowane przez komunikat TM_AUTOSIZE, i umoliwia wpywanie na proces automatycznego pozycjonowania okna. Przekazywana struktura TOOLADJ zawiera uchwyt paska narzdzi, uchwyt okna rodzicielskiego, proponowan pozycj i rozmiary paska, atrybuty i aktualny stan okna.
	W trakcie przetwarzania komunikatu mona zmieni docelowe rozmiary i pooenie paska.





	TN_BEGINTRACK

	Potwierdzenie to jest wysyane bezporednio przed rozpoczciem przesuwania paska narzdzi. Podczas jego obsugi mona zmieni wsprzdne obszaru ograniczajcego zapisanego w polu rclBoundary.
	Za pomoc WinSetWindowPos mona natomiast zmieni stan okna (SWP_RESTORE / SWP_MAXIMIZE / SWP_MINIMIZE), po czym konieczni naley uaktualni pola rclSizePos, rclBoundary i hwndParent prawidowymi wartociami (w przeciwnym wypadku rezultaty bd nieprzewidywalne).
	Pola flState i flAttrs maj charakter informacyjny - ich zmiana nie wpywu na przetwarzanie komunikatu.





	TN_BUTTONPAINT

	Potwierdzenie jest generowane przez pasek narzdzi w odpowiedzi na komunikat WM_COMMAND generowany przez obiekt stylu TBO_STDBUTTON (przycisk WC_BUTTON posiadajcy styl BS_OWNERDRAW). Kod BN_PAINT zgaszany przez przycisk podlega translacji do TN_BUTTONPAINT. Pozostae parametry, takie jak: id (identyfikator), flcontrolspec (wskanik do struktury USERBUTTON) pozostaj bez zmian.





	TN_ENDTRACK
	
	Potwierdzenie to jest wysyane bezporednio po zakoczeniu przesuwania okna. Umoliwia ono zmian docelowej pozycji i wymiarw okna: naley uaktualni pole rclSizePos struktury TOOLTRACK.
	Pozostae pola maj charaktery informacyjny i ich modyfikacja nie ma wpywu na proces przetwarzania komunikatw.





	TN_TRACKING
	
	Potwierdzenie to jest generowane podczas przesuwania paska narzdzi za pomoc myszy. Wskanik ulControlSpec wskazuje na struktur POINTL, zawierajc aktualn pozycj lewego dolnego rogu okna, liczon wzgldem okna rodzicielskiego.
	W przypadku, gdy jest wczona opcja "Full Window Drag" potwierdzenie jest generowane w odpowiedzi na kady komunikat WM_MOUSEMOVE. Gdy opcja ta jest wyczona, a take w systemie OS/2 Warp3, potwierdzenie jest zgaszane bezporednio po zakoczeniu przesuwania ramki, ale przed wygenerowaniem TN_ENDDRAG.




	
	TN_FIXTOOL, TN_MINIMIZE, TN_RESTORE.

	Potwierdzenia te s zgaszane podczas wykonywania funkcji WinSetWindowPos, w zalenoci od stanu bitw sterujcych przekazanych za pomoc parametru fl:
- TN_FIXTOOL  jest zgaszany podczas dokowania, gdy jest ustawiony bit SWP_MAXIMIZE,
- TN_MINIMIZE jest zgaszany podczas minimalizacjim gdy jest ustawiony bit SWP_MINIMIZE, 
- TN_RESTORE  jest zgaszany podczas przejcia do stanu "floating", gdy jest ustawiony bit SWP_RESTORE.
	Gdy ktrykolwiek z bitw: SWP_MINIMIZE, SWP_MAXIMIZE lub SWP_RESTORE jest ustawiony, WinSetWindowPos ignoruje wsprzdne i pozycj przekazan w swoich parametrach, wysyajc w zamian potwierdzenia.
	Wywoania funkcji WinSetWindowPos z innymi zestawami bitw sterujcych nie powoduj zgaszania potwierdze - uytkownik ma wtedy pen kontrol nad pozycj i rozmiarami paska.
	Podczas przetwarznia potwierdze, waciciel paska moe zmienia nastpujce parametry, ptrzekazane za porednictwem struktury TOOLADJ:
- uchwyt okna rodzicielskiego hwndParent (za pomoc WinSetParent), co np. po zmianie okna rodzicielskiego na HWND_DESKTOP umoliwia przesuwanie paska poza granicami okna aplikacji,
- rozmiary i pozycj docelow poprzez zmodyfikowanie struktury rclSizePos. Pozycja jest liczona wzgldem okna rodzicielskiego,
- atrybuty, poprzez modyfikacj bitw zmiennej flAttrs. 

	Pole flState struktury TOOLADJ zawiera poprzedni stan okna (TST_FIXED, TST_MINIMIZED lub TST_ROTATED), dziki czemu parametry stanu docelowego mona uzaleni od stanu poprzedniego.




*******************************
Komunikaty systemowe otrzymywane przez pasek narzdzi.

	WM_MINMAXFRAME
	WM_PRESPARAMCHANGED
	WM_QUERYWINDOWPARAMS
	WM_SETWINDOWPARAMS
	WM_TRACKFRAME
	


*******************************
Komunikaty sterujce:

	TM_AUTOSIZE
Parametry:
  mp1	- [ULONG] ulMaxLength - maksymalna dugo paska
  mp2	- [ULONG] ulReserved - zarezerwowany
  
Rezultaty:
	TRUE  - wymiary paska zmieniy si
	FALSE - wymiary paska narzdzi nie ulegy zmianie

	Dziaanie komunikatu jest uzalenione od aktualnego stanu paska narzdzi. Pozycjonowanie przebiega zgodnie z nastpujcymi reguami: 
 - gdy pasek narzdzi jest zminimalizowany lub zadokowany (zmaksymalizowany) jest on autoamtycznie ustawiany wzgldem okna rodzicielskiego zgodnie z wartoci atrybutw:
  TBA_FIXEDTOP    - ustawia poziomy pasek od lewej przy grnej krawdzi okna,
  TBA_FIXEDLEFT   - ustawia pionowy pasek od gry przy lewej krawdzi okna,
  TBA_FIXEDBOTTOM - ustawia poziomy pasek od lewej przy dolnej krawdzi okna,
  TBA_FIXEDRIGHT  - ustawia pionowy pasek od gry przy prawej krawdzi okna,
- gdy pasek jest w stanie "pywajcym" jego pozycja nie zmienia si.

	Skalowanie przebiega zgodnie z nastujcymi reguami:
- gdy pasek jest zadokowany (zmaksymalizowany) jest on rozcigany na ca szeroko okna rodzicielskiego,
- gdy pasek jest zminimalizowany, jego rozmiar jest zmniejszany tak, aby mieci si na nim tylko pasek tytuu,
- gdy pasek jest w stanie "pywajcym", jego rozmiar jest korygowany w taki sposb aby pomieciy si wszystkie obiekty umieszczone na nim. Parametr ulMaxLength umoliwia zmniejszenie wymiarw paska, w przypadku gdy jest na nim tyle obiektw, e wszystkie nie zmieciyby si na ekranie. Parametr ulMaxLength jest igonorowany gdy przyjmuje warto rwn 0.  

	Pasek narzdzi podczas przetwarzania komunikatu TM_AUTOSIZE wysya do waciciela potwierdzenie TN_AUTOSIZE. Podczas przetwarzania potwierdzenia, waciciel moe wpywa na proces pozycjonowania i skalowania paska.





	TM_CALCNEWRECT
Parametry:
  mp1	- [TOOLADJ] adjNewRect
  mp2	- [ULONG]   ulReserved   

Rezultaty:
	Nowa pozycja i wymiary w polu rclSizePos	

Opis:
	Komunikat umoliwia obliczenie proponowanych wymiarw i pooenia paska narzdzi na podstawie zawartoi struktury adjNewRect. Nastujce pola struktury TOOLADJ powinny zosta zainicjowane przed wysaniem komunikatu:
  flState	- naley ustawi wybrane flagi TST_* opisujce mowy stan paska narzdzi,
  flAttrs	- naley ustawi wybrane flagi TBA_* opisujce nowy stan paska narzdzi.

W odpowiedzi, w strukturze TOOLADJ zostaj wypenione nastpujce pola:
  hwndToolBar 	- uchwyt paska narzdzi
  hwndParent	- uchwyt okna rodzicielskiego (mg by ustawiony przez WinSetParent),
  rclSizePos	- nowa pozycja i wymiary paska narzdzi liczone wzgldem okna rodzicielskiego.

	Komunikat uatwia pozycjonowanie paska podczas obsugi potwierdze TN_FIXTOOL, TN_MINIMIZE i TN_RESTORE, umoliwiajc atwe obliczenie nowej pozycji po modyfikacji atrybutw flAttrs i stanu flState, ktr przed powrotem mona jeszcze dodatkow zmodyfikowa. 
	Pasek wysya ten komunikat sam do siebie, podczas minimalizacji/maksymalizacji/przejcia do stanu "floating".





	TM_DELETEOBJECT
Parametry:
  mp1	- [ULONG] objId		Identyfikator usuwanego obiektu
  mp2	- [ULONG] ulReserved	Zarezerwowany, rwny 0

Powrt:
  FALSE - usunicie obiektu nie powiodo si
  TRUE  - usunicie obiektu zakoczyo si sukcesem

Opis:
	Komunikat umoliwia usunicie obiektu o podanym identyfikatorze.





	TM_ENABLEROTATE
Paremtry:
  mp1	- [BOOL]  bEnable      Zncznik odblokowania pczycisku obracania okna
  mp2	- [ULONG] ulReserved   Zarezerwowany, rwny 0.

Rezultaty:
	Zarezerwowany, rwny 0.

Opis:
	Komunikat umoliwia ukrycie (zablokowanie) lub odblokowanie przycisku obracania okna.





	TM_IDFROMPOSITION
Parametry:
  mp1	- [LONG]	Pozycja obiektu
  mp2   - [ULONG]	Zarezerwowany. 

Rezultaty:
	Identyfikator obiektu.

Opis:
	Funkcja odczytuje identyfikator obiektu o podanej pozycji. Jako mp1 mona take poda TB_END, dziki czemu zostanie odczytany identyfikator ostatniego obiektu.






	TM_INSERTOBJECT
Parametry:
  mp1	- [TOOLOBJ]	Wskanik do struktury zawierajcej definicj tworzonego obiektu
  mp2	- [TOOLWIN]	Wskanik do struktury opisujcej tworzone na pasku narzdzi okno

Rezultaty:
	TRUE  - obiekt utworzono poprawnie
	FALSE - bd tworzenia obiektu

	Komunikat umoliwia umieszczenie obiektu na pasku narzdzi. Gwny opis obiektu powinien zosta zawarty w strukturze TOOLOBJ, do ktrej wskanik przekazujemy za porednictwem parametru mp1. Obiekty inne ni separatory, wymagaj dodatkowo struktury TOOLWIN zawierajcej opis tworzonego okna.
	Proces tworzenia obiektu zaley od opcji przekazanych w polu flAttribute strutktur TOOLOBJ:

  TBO_STDWINDOW - powoduje utworzenie okna kontrolnego, o parametrach opisanych w strukturze TOOLWIN, ktra zawiera:
- klas okna, 
- tekst wywietlany w oknie, 
- styl okna, 
- wskanik do danych class-specific,
- wskanik do parametrw prezentacji okna.

  TBO_BUTTON - powoduje utowrzenie przycisku w peni obsugiwanego przez pasek narzdzi. Tworzone okno potomne powinno zachowywa si tak jak okno klasy WC_WINBUTTON (struktura TOOLWIN powinna zawiera klas WC_WINBUTTON). Okno musi reagowa na komunikaty systemowe: BM_SETHILITE, BM_QUERYHILITE, oraz dodatkowe: BM_QUERYWIDTH i BM_QUERYHEIGHT suce do automatycznego skalowania. 

  TBO_STDBUTTON - powoduje utworznie przycisku czciowo obsugiwanego przez pasek narzdzi. Obsuga rni si od TBO_BUTTON tym, e pasek narzdzi nie wysya komunikatw BM_QUERYWIDTH i BM_QUERYHEIGHT, przez co skalowanie przyciskw musi by wykonane przez programist. Styl ten jest przeznaczony do wsppracy z oknami klasy WC_BUTTON, utworzonych ze stylem BS_PUSHBUTTON.

	Rodzicem dla tworzonych okien jest zawsze okno potomne paska narzdzi o identyfikatorze TCID_OBJECTS, przechowujce i przerysowujce wszystkie obiekty umieszczone na pasku narzdzi. Wacicielem tworzonych okien jest zawsze waciciel paska narzdzi.

  TBO_SEPARATOR - powoduje utworzenie separatora. Separator nie jest oknem, lecz obiektem rysowanym przez pasek narzdzi. Dlatego te nie wymaga dodatkowej struktury TOOLWIN, i nie posiada uchwytu okna.

	Dodawane obiekty mog by pozycjonowane na pasku narzdzi na trzy sposoby:
  TBO_BEGINALIGN  - obiekt jest ustawiany na pocztku paska (po lewej lub od gry),
  TBO_ENDALIGN    - obiekt jest ustawiany od koca pasak (od prawej lub od dou),
  TBO_CENTERALIGN - obiekt jest ustwaiany po rodku midzy obiektami TBO_BEGINALIGN i TBO_ENDALIGN.
	Dodawanie nowego obiektu, moe w celu zapewnienia spjnoci spowodowa zmiany w wyrwnaniu wczeniej dodanych obiektw:
 - Obiekt TBO_BEGINALIGN nadaje ten styl wszystkim obiektom lecym po jego lewej stronie (nad nim), "przygniatajc" te obiekty do lewej (gnej) krawdzi paska.
 - Obiekt TBO_ENDALIGN nadaje ten styl wszystkim obiektom lecym po jego prawej stronie (pod nim), dosuwajc te obiekty do prawej (dolnej) krawdzi paska,
 - Obiekt TBO_CENTERALIGN stosuje bardziej skomplikowane reguy. Jeeli po jego prawej stronie (pod nim) znajduj si jakie obiekty ze stylem TBO_BEGINALIGN, to zostaj one "oderwane" od obiektw pocztkowych i wycentrowane. Podobnie, jeeli przed obiektem (po lewej/nad nim) znajduj si inne obiekty ze stylem TBO_ENDALIGN, to one take zostan wycentrowane.
	Reguy te umoliwiaj zachowanie spjnoci rozmieszczenia obiektw tak, e najpierw mamy obiekty wyrwnywane do lewej, nastpnie centrowane, a na kocu dosuwane do prawej.





	TM_INSERTTOOLTIP
Parametry:
  mp1	- [ULONG]  Identyfikator obiektu 
  mp2	- [PSZ]    Wskanik do cigu znakw definiujcego podpowied.

Rezultaty:
	TRUE  - poprawne wykonanie - podpowied zostaa dodana
	FALSE - bd dodania podpowiedzi

	Funkcja dodaje lub usuwa podpowied do obiektu o podanym identyfikatorze, umieszczonego na pasku narzdzi. Paramer mp2 powinien zawiera wskanik do cigu ASCIIZ zawierajcego cig znakw tworzcych podpowied. Podanie wskanika rwnego NULL powoduje usunicie podpowiedzi.





	TM_MOVEOBJECT
Parametry:
  mp1	- [SHORT1]  Identyfikator przenoszonego obiektu 
          [SHORT2]  Nowa pozycja przenoszonego obiektu		
  mp2	- [ULONG]   Nowe atrybuty okrelajce pozycjonowanie obiektw

Rezultaty:
	TRUE  - poprawne wykonanie 
	FALSE - bd 

	Komunikat umoliwia przeniesienie obiektu z aktualnej pozycji na now, liczon wzgldem pocztku paska narzdzi. Atrybuty okrelajce pozycjonowanie przydaj si w sytuacji gdy trzeba zmieni wyrwnanie obiektu wzgldem paska narzdzi. 
	Akceptowane s nastpujce atrybuty: TBO_BEGINALIGN, TBO_ENDALIGN i TBO_CENTERALIGN. Podanie liczby 0 powoduje zachowanie dotychczasowych atrybutw obiektu.
	Podajc aktualn pozycj przy niezerowych atrybutach moemy zmieni sposb justowania obiektu bez zmiany jego pooenia liczonego od pocztku paska narzdzi.





	TM_POSITIONFROMID
Parametry:
  mp1	- [ULONG] objId   	Identyfikator obiektu 
  mp2	- [ULONG] ulReserved    Zarezerwowany, rwny 0.

Rezultaty:
	-1 bd,
	>0 odczytana pozycja obiektu.

	Komunikat umoliwia odczytanie pozycji obiektu liczonej od pocztku paska (jest to waciwie jego numer kolejny). Gdy obiekt o podanym identyfikatorze nie istnieje, komunikat zwraca -1.





	TM_QUERYHANDLE
Parametry:
  mp1	- [ULONG] ulId        Identyfikator obiektu.
  mp2	- [ULONG] ulReserved  Zarezerwowany, rwny 0.

Rezultaty:
	NULLHANDLE - bd odczytu, obiekt nie istnieje lub jest separatorem.

Opis:
	Komunikat umoliwia odczyt uchwytu okna nalecego do obiektu o podanym identyfikatorze.





	TM_QUERYHEIGHT
Parametry:
  mp1	- [ULONG] flOptions   Opcje umoliwiajce okrelenie rodzaju zwracanej informacji:
            TDQ_RESTORED  - pena wysoko paska w stanie floating,
            TDQ_FIXED	  - wysoko paska w stanie zmasymalizowanym,		
            TDQ_MINIMIZED - wysoko zminimalizowanego paska narzdzi
  mp2	- [ULONG] ulMaxLength  Maksymalna dostpna dugo paska.

Rezultaty:
	Proponowana wysoko paska narzdzi.

Opis:
	Komunikat umoliwia odczyt proponowanej wysokoci paska narzdzi, potrzebnej do tego, aby wszystkie obiekty (przyciski) zmieciy si. Procedura paska narzdzi odczytuje wysoko przyciskw i innych obiektw (okien) umieszczonych na nim (wymiary obiektw s ustalane automatycznie podczas dodawania lub usuwania ich). 
	W przypadku paska narzdzi umieszczonego poziomo, zostaje wybrana najwiksza wysoko, ktra po uzupenienieniu o wysoko obramowania zostaje zwrcona. Gdy zostaa podana maksymalna dostpna dugo paska rna od zera, to pasek posiadajcy styl TBS_MULTILINE oblicza wysoko po uwzgldnieniu ewentualnego przeniesienia do kolejnych wierszy obiektw nie mieszczcych si w ulMaxLength.
	W przypadku paska narzdzi umieszczonego pionowo, odczytane wartoci s sumowane (dodawany jest take 1-pikselowy odstp midzy obiektami), po czym dodawana jest wysoko obiektw kontrolnych: paska tytuu, przycisku do obracania i separatorw. Gdy obliczona wysoko przekracza ulMaxLength, to jest do niej zmniejszana. Tak otrzymana warto po uzupenieniu o wysoko obramowania zostaje zwrcona.
	W przypadku uycia opcji TDQ_MINIMIZED dla poziomego pasek narzdzi zwracana jest staa wysoko paska tytuu, rwna 10 pikseli, plus wysoko obramowania.
	W przypadku gdy odczytujemy wysoko zminimalizowanego, pionowego paseka narzdzi, to komunikat zwracana jest jego szeroko z przed minimalizacji powikszon o 50%.





	TM_QUERYOBJECT
Parametry:
  mp1	- [ULONG]   ulId        Identyfikator obiektu.
  mp2	- [TOOLOBJ] objInfo	Wskanik do struktury definiujcej parametry obiektu.

Rezultaty:
	FALSE - bd odczytu, obiekt nie istnieje lub jest separatorem.
	TRUE  - poprawny odczyt informacji o obiekcie

Opis:
	Komunikat umoliwia odczyt struktur kontrolnych obiektu, zawierajcych nastpujae dane: pooenie obiektu, przynalenoc do grupy, atrybuty i stan obiektu, wymiary, identyfikator i dane uytkownika.
	Odczytane wymiary mog si rni od rzeczywistych wymiarw obiektu na pasku narzdzi. W przypadku poziomego paska narzdzi, szeroko obiektu jest prawidowa, natomiast jego wysoko moe by mniejsza od rzeczywistej, dlatego e pasek sam ustala podane wysokoci obiektw. Podobna sytuacja wystpuje w przypadku pionowego paska narzdzi, gdzie wysoko obiektu jest prawidowa, natomiast szeroko moe si rni od rzeczywistej.
	Aby odczyta rzeczywiste wymiary obiektu naley posuy si nastpujcym kodem:

hwnd = (HWND)WinSendMsg(hwndToolbar, TM_QUERYHANDLE, (MPARAM)objId, 0);
WinQueryWindowRect(hwnd, &rect);

	Struktura rect bdzie zawiera aktualne wymiary obiektu. 
	W przypadku separatorw, jego grubo zawsze wynosi 5 pikseli, natomiast dugoc jest rwna wysokoci/szerokoci okna potomnego paska narzdzi, o identyfikatorze TCID_OBJECTPAD. Dokadne wymiary separatora odczyta moemy w nastpujcy sposb:

// Odczyt parametrw separatora
WinSendMsg(hwndToolbar, TM_QUERYOBJECT, separatorId, (MPARAM)&objInfo);
// Odczyt uchwytu okna przechowujcego obiekty
hwndObjPad = WinWindowFromID(hwndToolbar, TCID_OBJECTPAD);
// Odczyt wymiarw tego okna
WinQueryWindowRect(hwndObjPad, &wsize);

// Okrelenie wymiarw separatora
state = (LONG)WinSendMsg(hwndToolbar, TM_QUERYSTATE, 0, 0);
if(state & TST_ROTATED)
{ cx = wsize.xRight - wsize.xLeft;
  cy = objInfo.cy;
}
else
{ cx = objInfo.cx;
  cy = wsize.yTop - wsize.yBottom;
}
	Zmienne cx i cy zawieraj aktualne wymiary separatora.





	TM_QUERYSTATE
Parametry:
  mp1	- [ULONG] ulReserved	Warto zarezerwowana, rwna 0
  mp2	- [ULONG] ulReserved	Warto zarezerwowana, rwna 0

Rezultaty:
	Aktualny stan paska narzdzi:
TST_MINIMIZED 	- pasek jest zminimalizowany
TST_FIXED	- pasek jest zmaksymalizowany
TST_ROTATED	- pasek jest obrcony (w pozycji pionowej)





	TM_QUERYWIDTH
Parametry:
  mp1	- [ULONG] flOptions   Opcje umoliwiajce okrelenie rodzaju zwracanej informacji:
            TDQ_RESTORED  - pena szeroko paska w stanie floating,
            TDQ_FIXED	  - szeroko paska w stanie zmasymalizowanym,		
            TDQ_MINIMIZED - szeroko zminimalizowanego paska narzdzi
  mp2	- [ULONG] ulMaxLength Maksymalna dostpna dugo paska.

Rezultaty:
	Proponowana szeroko paska narzdzi.

Opis:
	Komunikat umoliwia odczyt proponowanej szerokoci paska narzdzi, potrzebnej do tego, aby wszystkie obiekty (przyciski) zmieciy si. Procedura paska narzdzi odczytuje szeroko przyciskw i innych obiektw (okien) umieszczonych na nim (wymiary obiektw s ustalane automatycznie podczas dodawania lub usuwania). 
	W przypadku paska narzdzi umieszczonego poziomo, odczytane wartoci s sumowane (dodawany jest take 1-pikselowy odstp midzy obiektami), po czym dodawana jest szeroko obiektw kontrolnych: paska tytuu, przycisku do obracania i separatorw. Gdy otrzymana warto przekracza ulMaxLength, to jest do niej wyrwnywana. Tak otrzymana warto po uzupenieniu o szeroko obramowania zostaje zwrcona. 
	W przypadku paska narzdzi umieszczonego pionowo, zostaje wybrana najwiksza szeroko, ktra po uzupenienieniu o szeroko obramowania zostaje zwrcona. Gdy zostaa podana maksymalna dostpna dugo ulMaxLength paska rna od zera, to pasek posiadajcy styl TBS_MULTILINE oblicza szeroko po uwzgldnieniu ewentualnego przeniesienia do kolejnych kolumn obiektw nie mieszczcych si w ulMaxLength.
	W przypadku uycia opcji TDQ_MINIMIZED dla poziomego paska narzdzi zwracana jest jego wysoko z przed minimalizacji, powikszona o 50%.
	W przypadku gdy zminimalizowany zostaje pionowy pasek narzdzi, to zwracana jest staa szeroko paska tytuu, rwna 10 pikseli, plus szeroko obramowania.





	TM_QUERYOBJECTCOUNT
Parametry:
  mp1	- [ULONG] ulReserved  Zarezerwowany, rwny 0.
  mp2	- [ULONG] ulReserved  Zarezerwowany, rwny 0.

Rezultaty:
	Liczba obiektw umieszczonych na pasku narzdzi.

Opis:
	Funkcja zwraca liczb obiektw umieszczonych na pasku narzdzi.





	TM_QUERYTIP
Parametry:
  mp1	- [USHORT1] objId	Identyfikator obiektu.
	  [USHORT2] usBufSize	Rozmiar bufora szTipText	
  mp2	- [PSZ]     szTipText	Wskanik do bufora zawierajcego tekst podpowiedzi.

Rezultaty:
	Liczba znakw tekstu podpowiedzi, bez uwzgldnienia kocowego znaku '0'.

Opis:
	Komunikat umoliwia odczyt tekstu podpowiedzi, lub jego dugoci. Podanie szTipText rwnego NULL, lub usBufSize umoliwia odczyt dugoci tekstu podpowiedzi bez koniecznoci jego odczytywania.





	TM_ROTATE
Parametry:
  mp1	- [ULONG] flOptions   Opcje sterujce procesem obracania paska narzdzi:
            TBR_ROTATE     - zmiana stanu na przeciwny,              
            TBR_HORIZONTAL - umieszczenie paska w pozycji poziomej,
            TBR_VERTICAL   - umieszczenie paska w pozycji pionowej
  mp2	- [ULONG] ulReserved  Parametr zarezerwowany, rwny 0.

Rezultaty:
	Warto zarezerwowana, rwna 0.

Opis:
	Komunikat powoduje obrcenie paska narzdzi, zgodnie z opcjami podanymi za porednictwem parametru mp1.





	TM_SETOBJECT
Parametry:
  mp1	- [USHORT1] objId	Identyfikator obiektu.
	- [USHORT2] usOptions   Opcje umoliwiajce wybr zmienianych pl struktury
  mp2	- [TOOLOBJ] objInfo     Struktura zawiarajce zmieniane paramerty

Rezultaty:
	FALSE - bd zmiany parametrw
	TRUE  - parametry zostay zmienione poprawnie

Opis:
	Funkcja umoliwia zmian parametrw zapisanych w strukturach kontrolnych obiektu. W zalenoci od opcji usOptions mona zmienia nastpujce wartoci:

TSO_GROUP
	Zmiana przynalenoci do grupy. Uwzgldnione zostaje pole ulGroup przekazywanej struktury TOOLOBJ. Obiekt przyjmuje atrybuty  TBO_PUSHBUTTON, TBO_CHECKBOX lub TBO_RADIOBUTTON z grupy do ktrej zostaje przeniesiony. Pozostae atrybuty TBO_* i SPS_* pozostaj bez zmian. 

TSO_SIZE 
	Zmiana wymiarw obiektu. Uwzgldnione zostaj pola cx i cy struktury TOOLOBJ. Zmiana wymiarw uwidacznia si w zalenoci od pooenia paska narzdzi. Gdy pasek jest umieszczony poziomo zostaje uwzgldniona szerokoc obiektu, natomiast wysoko tylko wtedy gdy przekracza aktualn wysko paska narzdzi.
	Gdy pasek jest umieszczony pionowo zostaje uwzgldniona wysoko obiektu, natomiast szeroko tylko wtedy gdy jest wiksza ni aktualna szeroko paska narzdzi.
	Obiekty utworzone z atrybutem TBO_BUTTON i TBO_SEPARATOR ustalaj swoje wymiary same, przez co zmiana rozmiarw za pomoc TM_SETOBJECT jest ignorowana.

TSO_USER     
	Zmiana pola ulUser struktury skojarzonej z obiektem. 

	W obecnej implementacji nie mona jeszcze zmienia zawartoci pola flAttribute (by moe bdzie mona to zrobi w kolejnych wersjach). Pole id nie bdzie modyfikowalne. Pole iPosition mona modyfikowa porednio za pomoc komunikatu TM_MOVEOBJECT.
	Mona modyfikowa kilka pl jednoczenie czc ze sob opcje za pomoc operatora OR.





	TM_SHOWOBJECT
Parametry:
  mp2	- [ULONG] ulId        Identyfikator obiektu.
  mp2	- [ULONG] bNewState   Nowy stan obiektu.
            FALSE - ukrycie obiektu,
            TRUE  - pokazanie obiektu.

Rezultaty:
	TRUE  - poprawne wykonanie, 
	FALSE - bd (bdny identyfikator lub rozkaz dotyczy separatora).


Opis:
	Komunikat umoliwia sterowanie "widzialnoci" obiektu umieszczonego na pasku narzdzi. Ukrywany obiekt nie zmienia swojej pozycji ani identyfikatora. Nie zwalnia take zajmowanych przez siebie zasobw takich jak np. pami.
	Aktualny stan obiektu mona odczyta za pomoc komunikatu TM_QUERYOBJECT. W polu flAttribute zwrconej struktury TOOLOBJ, bit TBO_HIDE zawiera informacje o aktualnym stanie obiektu. Testujc bit TBO_DISABLE mona te sprawdzi czy obiekt jest zablokowany (to ostatnie nie dotyczy separatorw).


*******************************
Instrukcja uytkowania (tematy do napisania).

Struktura paska narzdzi.
  Predefiniowane okna potomne.
Sterowanie pozycjonowaniem paska narzdzi.
  Sterowanie automatycznym skalowaniem.
  Sterowanie procesem maksymalizacji (dokowania).
  Sterowanie procesem minimalizacji.
  Sterowanie procesem przejcia do stanu "floating".
  Sterowanie obracaniem.
  Komunikat WM_MINMAXFRAME
Kontrola przesuwania paska narzdzi.
  Rozpoczcie przesuwania.
  Przesuwanie.
  Zakoczenie przesuwania.
  Komunikat WM_TRACKFRAME. 
Dodawanie i usuwanie obiektw.
Sterowanie zachowaniem obiektw.